mirror of
https://github.com/google/nomulus
synced 2026-05-18 13:51:45 +00:00
Compare commits
8 Commits
nomulus-20
...
nomulus-20
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8724ef6c70 | ||
|
|
31bf4bd76d | ||
|
|
cc69d63802 | ||
|
|
d73a15c697 | ||
|
|
f35eda6dc1 | ||
|
|
a07fbb27c5 | ||
|
|
ffe3124ee1 | ||
|
|
8f90b5746a |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -75,7 +75,7 @@ local.properties
|
||||
autogenerated/
|
||||
|
||||
# IDEA
|
||||
nomulus.iml
|
||||
**/*.iml
|
||||
nomulus.ipr
|
||||
nomulus.iws
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ plugins {
|
||||
id 'com.github.johnrengelman.shadow' version '5.1.0'
|
||||
|
||||
// NodeJs plugin
|
||||
id "com.moowork.node" version "1.2.0"
|
||||
id "com.github.node-gradle.node" version "3.0.1"
|
||||
|
||||
id 'idea'
|
||||
id 'com.diffplug.gradle.spotless' version '3.25.0'
|
||||
@@ -49,6 +49,12 @@ plugins {
|
||||
id 'com.dorongold.task-tree' version '1.5'
|
||||
}
|
||||
|
||||
node {
|
||||
download = true
|
||||
version = "14.15.5"
|
||||
npmVersion = "6.14.11"
|
||||
}
|
||||
|
||||
wrapper {
|
||||
distributionType = Wrapper.DistributionType.ALL
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# This file is expected to be part of source control.
|
||||
com.github.ben-manes.caffeine:caffeine:2.7.0
|
||||
com.github.kevinstern:software-and-algorithms:1.0
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.auto:auto-common:0.10
|
||||
com.google.code.findbugs:jFormatString:3.0.0
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
|
||||
@@ -13,7 +13,7 @@ com.google.api:gax:1.35.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20181013-1.27.0
|
||||
com.google.auth:google-auth-library-credentials:0.16.1
|
||||
com.google.auth:google-auth-library-oauth2-http:0.16.1
|
||||
com.google.auto.value:auto-value-annotations:1.6.3
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.cloud:google-cloud-core-http:1.59.0
|
||||
com.google.cloud:google-cloud-core:1.59.0
|
||||
com.google.cloud:google-cloud-storage:1.59.0
|
||||
@@ -22,7 +22,7 @@ com.google.code.gson:gson:2.7
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.0-beta1
|
||||
com.google.http-client:google-http-client-appengine:1.27.0
|
||||
|
||||
@@ -13,7 +13,7 @@ com.google.api:gax:1.35.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20181013-1.27.0
|
||||
com.google.auth:google-auth-library-credentials:0.16.1
|
||||
com.google.auth:google-auth-library-oauth2-http:0.16.1
|
||||
com.google.auto.value:auto-value-annotations:1.6.3
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.cloud:google-cloud-core-http:1.59.0
|
||||
com.google.cloud:google-cloud-core:1.59.0
|
||||
com.google.cloud:google-cloud-storage:1.59.0
|
||||
@@ -22,7 +22,7 @@ com.google.code.gson:gson:2.7
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.0-beta1
|
||||
com.google.http-client:google-http-client-appengine:1.27.0
|
||||
|
||||
@@ -13,7 +13,7 @@ com.google.api:gax:1.35.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20181013-1.27.0
|
||||
com.google.auth:google-auth-library-credentials:0.16.1
|
||||
com.google.auth:google-auth-library-oauth2-http:0.16.1
|
||||
com.google.auto.value:auto-value-annotations:1.6.3
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.cloud:google-cloud-core-http:1.59.0
|
||||
com.google.cloud:google-cloud-core:1.59.0
|
||||
com.google.cloud:google-cloud-storage:1.59.0
|
||||
@@ -22,7 +22,7 @@ com.google.code.gson:gson:2.7
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.0-beta1
|
||||
com.google.http-client:google-http-client-appengine:1.27.0
|
||||
|
||||
@@ -13,7 +13,7 @@ com.google.api:gax:1.35.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20181013-1.27.0
|
||||
com.google.auth:google-auth-library-credentials:0.16.1
|
||||
com.google.auth:google-auth-library-oauth2-http:0.16.1
|
||||
com.google.auto.value:auto-value-annotations:1.6.3
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.cloud:google-cloud-core-http:1.59.0
|
||||
com.google.cloud:google-cloud-core:1.59.0
|
||||
com.google.cloud:google-cloud-storage:1.59.0
|
||||
@@ -22,7 +22,7 @@ com.google.code.gson:gson:2.7
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.0-beta1
|
||||
com.google.http-client:google-http-client-appengine:1.27.0
|
||||
|
||||
@@ -13,7 +13,7 @@ com.google.api:gax:1.35.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20181013-1.27.0
|
||||
com.google.auth:google-auth-library-credentials:0.16.1
|
||||
com.google.auth:google-auth-library-oauth2-http:0.16.1
|
||||
com.google.auto.value:auto-value-annotations:1.6.3
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.cloud:google-cloud-core-http:1.59.0
|
||||
com.google.cloud:google-cloud-core:1.59.0
|
||||
com.google.cloud:google-cloud-storage:1.59.0
|
||||
@@ -22,7 +22,7 @@ com.google.code.gson:gson:2.7
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.0-beta1
|
||||
com.google.http-client:google-http-client-appengine:1.27.0
|
||||
|
||||
@@ -13,7 +13,7 @@ com.google.api:gax:1.35.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20181013-1.27.0
|
||||
com.google.auth:google-auth-library-credentials:0.16.1
|
||||
com.google.auth:google-auth-library-oauth2-http:0.16.1
|
||||
com.google.auto.value:auto-value-annotations:1.6.3
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.cloud:google-cloud-core-http:1.59.0
|
||||
com.google.cloud:google-cloud-core:1.59.0
|
||||
com.google.cloud:google-cloud-storage:1.59.0
|
||||
@@ -22,7 +22,7 @@ com.google.code.gson:gson:2.7
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.0-beta1
|
||||
com.google.http-client:google-http-client-appengine:1.27.0
|
||||
|
||||
@@ -13,7 +13,7 @@ com.google.api:gax:1.35.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20181013-1.27.0
|
||||
com.google.auth:google-auth-library-credentials:0.16.1
|
||||
com.google.auth:google-auth-library-oauth2-http:0.16.1
|
||||
com.google.auto.value:auto-value-annotations:1.6.3
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.cloud:google-cloud-core-http:1.59.0
|
||||
com.google.cloud:google-cloud-core:1.59.0
|
||||
com.google.cloud:google-cloud-storage:1.59.0
|
||||
@@ -22,7 +22,7 @@ com.google.code.gson:gson:2.7
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.0-beta1
|
||||
com.google.http-client:google-http-client-appengine:1.27.0
|
||||
|
||||
@@ -13,7 +13,7 @@ com.google.api:gax:1.35.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20181013-1.27.0
|
||||
com.google.auth:google-auth-library-credentials:0.16.1
|
||||
com.google.auth:google-auth-library-oauth2-http:0.16.1
|
||||
com.google.auto.value:auto-value-annotations:1.6.3
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.cloud:google-cloud-core-http:1.59.0
|
||||
com.google.cloud:google-cloud-core:1.59.0
|
||||
com.google.cloud:google-cloud-storage:1.59.0
|
||||
@@ -22,7 +22,7 @@ com.google.code.gson:gson:2.7
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.0-beta1
|
||||
com.google.http-client:google-http-client-appengine:1.27.0
|
||||
|
||||
@@ -13,7 +13,7 @@ com.google.api:gax:1.35.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20181013-1.27.0
|
||||
com.google.auth:google-auth-library-credentials:0.16.1
|
||||
com.google.auth:google-auth-library-oauth2-http:0.16.1
|
||||
com.google.auto.value:auto-value-annotations:1.6.3
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.cloud:google-cloud-core-http:1.59.0
|
||||
com.google.cloud:google-cloud-core:1.59.0
|
||||
com.google.cloud:google-cloud-storage:1.59.0
|
||||
@@ -22,7 +22,7 @@ com.google.code.gson:gson:2.7
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.0-beta1
|
||||
com.google.http-client:google-http-client-appengine:1.27.0
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
javax.inject:javax.inject:1
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
javax.inject:javax.inject:1
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
javax.inject:javax.inject:1
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
javax.inject:javax.inject:1
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
javax.inject:javax.inject:1
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
javax.inject:javax.inject:1
|
||||
|
||||
@@ -6,7 +6,7 @@ com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.flogger:flogger:0.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
com.google.truth:truth:1.0
|
||||
|
||||
@@ -6,7 +6,7 @@ com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.flogger:flogger:0.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
com.google.truth:truth:1.0
|
||||
|
||||
@@ -7,7 +7,7 @@ com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.flogger:flogger-system-backend:0.1
|
||||
com.google.flogger:flogger:0.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
com.google.truth:truth:1.0
|
||||
|
||||
@@ -7,7 +7,7 @@ com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.flogger:flogger-system-backend:0.1
|
||||
com.google.flogger:flogger:0.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
com.google.truth:truth:1.0
|
||||
|
||||
@@ -6,7 +6,7 @@ com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.flogger:flogger:0.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
com.google.truth:truth:1.0
|
||||
|
||||
@@ -6,7 +6,7 @@ com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.flogger:flogger:0.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
com.google.truth:truth:1.0
|
||||
|
||||
@@ -7,7 +7,7 @@ com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.flogger:flogger-system-backend:0.1
|
||||
com.google.flogger:flogger:0.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
com.google.truth:truth:1.0
|
||||
|
||||
@@ -7,7 +7,7 @@ com.google.errorprone:error_prone_annotations:2.3.4
|
||||
com.google.flogger:flogger-system-backend:0.1
|
||||
com.google.flogger:flogger:0.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
com.google.truth:truth:1.0
|
||||
|
||||
@@ -72,9 +72,15 @@
|
||||
{
|
||||
"moduleLicense": "The 3-Clause BSD License"
|
||||
},
|
||||
{
|
||||
"moduleLicense": "BSD Licence 3"
|
||||
},
|
||||
{
|
||||
"moduleLicense": "BSD License"
|
||||
},
|
||||
{
|
||||
"moduleLicense": "BSD License 3"
|
||||
},
|
||||
{
|
||||
"moduleLicense": "BSD New License"
|
||||
},
|
||||
@@ -230,6 +236,13 @@
|
||||
"moduleLicense": "Public Domain",
|
||||
"moduleName": "org.tukaani:xz"
|
||||
},
|
||||
{
|
||||
// "Apache License, Version 2.0". The plugin is able to parse
|
||||
// 2.11.3 correctly but not this version.
|
||||
"moduleLicense": null,
|
||||
"moduleVersion": "2.12.1",
|
||||
"moduleName": "com.fasterxml.jackson:jackson-bom"
|
||||
},
|
||||
{
|
||||
// Actually Eclipse Public License v2.0
|
||||
"moduleLicense": null,
|
||||
|
||||
@@ -23,7 +23,7 @@ import sys
|
||||
import re
|
||||
|
||||
# We should never analyze any generated files
|
||||
UNIVERSALLY_SKIPPED_PATTERNS = {"/build/", "cloudbuild-caches", "/out/", ".git/"}
|
||||
UNIVERSALLY_SKIPPED_PATTERNS = {"/build/", "cloudbuild-caches", "/out/", ".git/", ".gradle/"}
|
||||
# We can't rely on CI to have the Enum package installed so we do this instead.
|
||||
FORBIDDEN = 1
|
||||
REQUIRED = 2
|
||||
|
||||
@@ -204,6 +204,7 @@ dependencies {
|
||||
runtimeOnly deps['com.google.cloud.sql:postgres-socket-factory']
|
||||
compile deps['com.google.cloud:google-cloud-secretmanager']
|
||||
compile deps['com.google.code.gson:gson']
|
||||
compile deps['com.google.auto.service:auto-service-annotations']
|
||||
compile deps['com.google.auto.value:auto-value-annotations']
|
||||
compile deps['com.google.code.findbugs:jsr305']
|
||||
compile deps['com.google.dagger:dagger']
|
||||
@@ -300,11 +301,7 @@ dependencies {
|
||||
compile project(path: ':db', configuration: 'compileApi')
|
||||
testRuntime project(':db')
|
||||
|
||||
// Include auto-value in compile until nebula-lint understands
|
||||
// annotationProcessor
|
||||
gradleLint.ignore('unused-dependency') {
|
||||
compile deps['com.google.auto.value:auto-value']
|
||||
}
|
||||
annotationProcessor deps['com.google.auto.service:auto-service']
|
||||
annotationProcessor deps['com.google.auto.value:auto-value']
|
||||
testAnnotationProcessor deps['com.google.auto.value:auto-value']
|
||||
annotationProcessor deps['com.google.dagger:dagger-compiler']
|
||||
@@ -317,7 +314,7 @@ dependencies {
|
||||
testCompile deps['com.google.monitoring-client:contrib']
|
||||
testCompile deps['com.google.truth:truth']
|
||||
testCompile deps['com.google.truth.extensions:truth-java8-extension']
|
||||
testCompile deps['org.hamcrest:hamcrest-all']
|
||||
testCompile deps['org.hamcrest:hamcrest']
|
||||
testCompile deps['org.hamcrest:hamcrest-core']
|
||||
testCompile deps['org.hamcrest:hamcrest-library']
|
||||
testCompile deps['junit:junit']
|
||||
@@ -716,6 +713,10 @@ createToolTask(
|
||||
'google.registry.tools.DevTool',
|
||||
sourceSets.nonprod)
|
||||
|
||||
|
||||
createToolTask(
|
||||
'jpaDemoPipeline', 'google.registry.beam.common.JpaDemoPipeline')
|
||||
|
||||
project.tasks.create('initSqlPipeline', JavaExec) {
|
||||
main = 'google.registry.beam.initsql.InitSqlPipeline'
|
||||
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
# This file is expected to be part of source control.
|
||||
com.github.ben-manes.caffeine:caffeine:2.7.0
|
||||
com.github.kevinstern:software-and-algorithms:1.0
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.service:auto-service:1.0-rc7
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.auto:auto-common:0.10
|
||||
com.google.code.findbugs:jFormatString:3.0.0
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
@@ -19,7 +21,7 @@ com.google.errorprone:error_prone_type_annotations:2.3.4
|
||||
com.google.errorprone:javac-shaded:9-dev-r4023-3
|
||||
com.google.googlejavaformat:google-java-format:1.5
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
com.google.protobuf:protobuf-java:3.4.0
|
||||
|
||||
@@ -6,9 +6,10 @@ aopalliance:aopalliance:1.0
|
||||
args4j:args4j:2.33
|
||||
cglib:cglib-nodep:2.2
|
||||
com.beust:jcommander:1.60
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.10.3
|
||||
com.fasterxml.jackson.core:jackson-core:2.11.3
|
||||
com.fasterxml.jackson.core:jackson-databind:2.10.2
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.1
|
||||
com.fasterxml.jackson:jackson-bom:2.12.1
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
@@ -21,90 +22,103 @@ com.github.jnr:jnr-ffi:2.1.13
|
||||
com.github.jnr:jnr-posix:3.0.55
|
||||
com.github.jnr:jnr-unixsocket:0.30
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.github.rholder:guava-retrying:2.0.0
|
||||
com.google.android:annotations:4.1.1.4
|
||||
com.google.api-client:google-api-client-appengine:1.30.8
|
||||
com.google.api-client:google-api-client-jackson2:1.30.9
|
||||
com.google.api-client:google-api-client-java6:1.30.9
|
||||
com.google.api-client:google-api-client-jackson2:1.30.10
|
||||
com.google.api-client:google-api-client-java6:1.30.10
|
||||
com.google.api-client:google-api-client-servlet:1.30.8
|
||||
com.google.api-client:google-api-client:1.30.9
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:grpc-google-common-protos:1.17.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.85.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.1
|
||||
com.google.api-client:google-api-client:1.30.10
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.90.3
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-common-protos:1.18.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.16.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.88.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.92.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.5
|
||||
com.google.api:api-common:1.10.1
|
||||
com.google.api:gax-grpc:1.60.0
|
||||
com.google.api:gax-httpjson:0.70.1
|
||||
com.google.api:gax:1.60.0
|
||||
com.google.api:gax-grpc:1.60.1
|
||||
com.google.api:gax-httpjson:0.76.1
|
||||
com.google.api:gax:1.60.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev101-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20191211-1.30.9
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200313-1.30.9
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20200916-1.30.10
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200501-1.30.10
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200311-1.30.9
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200305-1.30.9
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200720-1.30.10
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0
|
||||
com.google.apis:google-api-services-drive:v2-rev160-1.19.1
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev60-1.22.0
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200525-1.30.9
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.30.10
|
||||
com.google.apis:google-api-services-monitoring:v3-rev426-1.23.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200312-1.30.9
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-sheets:v4-rev483-1.22.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20190827-1.30.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20200326-1.30.9
|
||||
com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10
|
||||
com.google.appengine.tools:appengine-gcs-client:0.6
|
||||
com.google.appengine.tools:appengine-mapreduce:0.9
|
||||
com.google.appengine.tools:appengine-pipeline:0.2.13
|
||||
com.google.appengine:appengine-api-1.0-sdk:1.9.81
|
||||
com.google.appengine:appengine-remote-api:1.9.81
|
||||
com.google.appengine:appengine-testing:1.9.81
|
||||
com.google.auth:google-auth-library-credentials:0.22.0
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.0
|
||||
com.google.auth:google-auth-library-credentials:0.22.2
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.2
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.3
|
||||
com.google.cloud.bigdataoss:util:2.1.3
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.13.0
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.6
|
||||
com.google.cloud.bigdataoss:util:2.1.6
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.16.0
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.0.16
|
||||
com.google.cloud:google-cloud-bigquery:1.106.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:0.125.0-beta
|
||||
com.google.cloud:google-cloud-bigtable:1.9.1
|
||||
com.google.cloud:google-cloud-core-grpc:1.92.2
|
||||
com.google.cloud:google-cloud-core-http:1.92.4
|
||||
com.google.cloud:google-cloud-core:1.92.5
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.3
|
||||
com.google.cloud:google-cloud-spanner:1.49.1
|
||||
com.google.cloud:google-cloud-bigquery:1.122.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:1.5.5
|
||||
com.google.cloud:google-cloud-bigtable:1.14.0
|
||||
com.google.cloud:google-cloud-core-grpc:1.93.9
|
||||
com.google.cloud:google-cloud-core-http:1.93.9
|
||||
com.google.cloud:google-cloud-core:1.93.9
|
||||
com.google.cloud:google-cloud-pubsub:1.110.0
|
||||
com.google.cloud:google-cloud-pubsublite:0.7.0
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.9
|
||||
com.google.cloud:google-cloud-spanner:2.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.6
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.dagger:dagger:2.28
|
||||
com.google.errorprone:error_prone_annotations:2.4.0
|
||||
com.google.errorprone:error_prone_annotations:2.5.0
|
||||
com.google.flogger:flogger-system-backend:0.5.1
|
||||
com.google.flogger:flogger:0.5.1
|
||||
com.google.flogger:google-extensions:0.5.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.2
|
||||
com.google.http-client:google-http-client-appengine:1.34.1
|
||||
com.google.http-client:google-http-client-jackson2:1.37.0
|
||||
com.google.http-client:google-http-client-appengine:1.36.0
|
||||
com.google.http-client:google-http-client-jackson2:1.38.0
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.37.0
|
||||
com.google.http-client:google-http-client:1.38.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -112,54 +126,49 @@ com.google.jsinterop:jsinterop-annotations:1.0.2
|
||||
com.google.monitoring-client:metrics:1.0.7
|
||||
com.google.monitoring-client:stackdriver:1.0.7
|
||||
com.google.oauth-client:google-oauth-client-appengine:1.30.5
|
||||
com.google.oauth-client:google-oauth-client-java6:1.30.6
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.2
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.28.0
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.30.5
|
||||
com.google.oauth-client:google-oauth-client:1.30.6
|
||||
com.google.protobuf:protobuf-java-util:3.13.0
|
||||
com.google.protobuf:protobuf-java:3.13.0
|
||||
com.google.oauth-client:google-oauth-client:1.31.2
|
||||
com.google.protobuf:protobuf-java-util:3.14.0
|
||||
com.google.protobuf:protobuf-java:3.14.0
|
||||
com.google.re2j:re2j:1.1
|
||||
com.google.template:soy:2018-03-14
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
com.googlecode.json-simple:json-simple:1.1.1
|
||||
com.ibm.icu:icu4j:57.1
|
||||
com.jcraft:jsch:0.1.55
|
||||
com.squareup.okhttp:okhttp:2.5.0
|
||||
com.squareup.okio:okio:1.13.0
|
||||
com.sun.istack:istack-commons-runtime:3.0.7
|
||||
com.sun.xml.fastinfoset:FastInfoset:1.2.15
|
||||
com.thoughtworks.paranamer:paranamer:2.7
|
||||
com.zaxxer:HikariCP:3.4.5
|
||||
commons-codec:commons-codec:1.13
|
||||
commons-codec:commons-codec:1.15
|
||||
commons-logging:commons-logging:1.2
|
||||
dnsjava:dnsjava:2.1.7
|
||||
io.dropwizard.metrics:metrics-core:3.2.6
|
||||
io.github.classgraph:classgraph:4.8.65
|
||||
io.grpc:grpc-all:1.27.2
|
||||
io.grpc:grpc-alts:1.32.2
|
||||
io.grpc:grpc-api:1.32.2
|
||||
io.grpc:grpc-auth:1.32.2
|
||||
io.grpc:grpc-context:1.32.2
|
||||
io.grpc:grpc-core:1.32.2
|
||||
io.grpc:grpc-grpclb:1.32.2
|
||||
io.grpc:grpc-netty-shaded:1.32.2
|
||||
io.grpc:grpc-netty:1.27.2
|
||||
io.grpc:grpc-okhttp:1.27.2
|
||||
io.grpc:grpc-protobuf-lite:1.32.2
|
||||
io.grpc:grpc-protobuf:1.32.2
|
||||
io.grpc:grpc-stub:1.32.2
|
||||
io.grpc:grpc-testing:1.27.2
|
||||
io.netty:netty-buffer:4.1.42.Final
|
||||
io.netty:netty-codec-http2:4.1.42.Final
|
||||
io.netty:netty-codec-http:4.1.42.Final
|
||||
io.netty:netty-codec-socks:4.1.42.Final
|
||||
io.netty:netty-codec:4.1.42.Final
|
||||
io.netty:netty-common:4.1.42.Final
|
||||
io.netty:netty-handler-proxy:4.1.42.Final
|
||||
io.netty:netty-handler:4.1.42.Final
|
||||
io.netty:netty-resolver:4.1.42.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.17.Final
|
||||
io.netty:netty-transport:4.1.42.Final
|
||||
io.grpc:grpc-alts:1.34.1
|
||||
io.grpc:grpc-api:1.34.1
|
||||
io.grpc:grpc-auth:1.34.1
|
||||
io.grpc:grpc-context:1.34.1
|
||||
io.grpc:grpc-core:1.34.1
|
||||
io.grpc:grpc-grpclb:1.34.1
|
||||
io.grpc:grpc-netty-shaded:1.34.1
|
||||
io.grpc:grpc-netty:1.32.2
|
||||
io.grpc:grpc-protobuf-lite:1.34.1
|
||||
io.grpc:grpc-protobuf:1.34.1
|
||||
io.grpc:grpc-stub:1.34.1
|
||||
io.netty:netty-buffer:4.1.51.Final
|
||||
io.netty:netty-codec-http2:4.1.51.Final
|
||||
io.netty:netty-codec-http:4.1.51.Final
|
||||
io.netty:netty-codec-socks:4.1.51.Final
|
||||
io.netty:netty-codec:4.1.51.Final
|
||||
io.netty:netty-common:4.1.51.Final
|
||||
io.netty:netty-handler-proxy:4.1.51.Final
|
||||
io.netty:netty-handler:4.1.51.Final
|
||||
io.netty:netty-resolver:4.1.51.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.51.Final
|
||||
io.opencensus:opencensus-api:0.24.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.24.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.24.0
|
||||
@@ -179,26 +188,26 @@ javax.validation:validation-api:1.0.0.GA
|
||||
javax.xml.bind:jaxb-api:2.3.1
|
||||
jline:jline:1.0
|
||||
joda-time:joda-time:2.10.5
|
||||
junit:junit:4.12
|
||||
junit:junit:4.13.1
|
||||
net.bytebuddy:byte-buddy:1.10.17
|
||||
net.java.dev.jna:jna:5.5.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.23.0
|
||||
org.apache.beam:beam-model-job-management:2.23.0
|
||||
org.apache.beam:beam-model-pipeline:2.23.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.23.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.23.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.23.0
|
||||
org.apache.beam:beam-model-fn-execution:2.27.0
|
||||
org.apache.beam:beam-model-job-management:2.27.0
|
||||
org.apache.beam:beam-model-pipeline:2.27.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.27.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.27.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.27.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_10_8:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_26_0:0.3
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-lang3:3.5
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
@@ -208,17 +217,18 @@ org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.5.0
|
||||
org.checkerframework:checker-qual:3.7.0
|
||||
org.codehaus.jackson:jackson-core-asl:1.9.13
|
||||
org.codehaus.jackson:jackson-mapper-asl:1.9.13
|
||||
org.codehaus.mojo:animal-sniffer-annotations:1.19
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.2.1
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.5.1
|
||||
org.dom4j:dom4j:2.1.3
|
||||
org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
org.hibernate:hibernate-hikaricp:5.4.23.Final
|
||||
@@ -227,7 +237,7 @@ org.jboss.logging:jboss-logging:3.4.1.Final
|
||||
org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final
|
||||
org.jboss:jandex:2.1.3.Final
|
||||
org.joda:joda-money:1.0.1
|
||||
org.json:json:20160810
|
||||
org.json:json:20200518
|
||||
org.jsoup:jsoup:1.13.1
|
||||
org.jvnet.staxex:stax-ex:1.8
|
||||
org.mortbay.jetty:jetty-util:6.1.26
|
||||
@@ -246,7 +256,7 @@ org.testcontainers:database-commons:1.15.1
|
||||
org.testcontainers:jdbc:1.15.1
|
||||
org.testcontainers:postgresql:1.15.1
|
||||
org.testcontainers:testcontainers:1.15.1
|
||||
org.threeten:threetenbp:1.4.5
|
||||
org.threeten:threetenbp:1.5.0
|
||||
org.tukaani:xz:1.8
|
||||
org.w3c.css:sac:1.3
|
||||
org.xerial.snappy:snappy-java:1.1.4
|
||||
|
||||
@@ -6,9 +6,10 @@ aopalliance:aopalliance:1.0
|
||||
args4j:args4j:2.33
|
||||
cglib:cglib-nodep:2.2
|
||||
com.beust:jcommander:1.60
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.10.3
|
||||
com.fasterxml.jackson.core:jackson-core:2.11.3
|
||||
com.fasterxml.jackson.core:jackson-databind:2.10.2
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.1
|
||||
com.fasterxml.jackson:jackson-bom:2.12.1
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
@@ -21,88 +22,101 @@ com.github.jnr:jnr-ffi:2.1.13
|
||||
com.github.jnr:jnr-posix:3.0.55
|
||||
com.github.jnr:jnr-unixsocket:0.30
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.github.rholder:guava-retrying:2.0.0
|
||||
com.google.api-client:google-api-client-appengine:1.30.8
|
||||
com.google.api-client:google-api-client-jackson2:1.30.9
|
||||
com.google.api-client:google-api-client-java6:1.30.9
|
||||
com.google.api-client:google-api-client-jackson2:1.30.10
|
||||
com.google.api-client:google-api-client-java6:1.30.10
|
||||
com.google.api-client:google-api-client-servlet:1.30.8
|
||||
com.google.api-client:google-api-client:1.30.9
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:grpc-google-common-protos:1.17.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.85.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.1
|
||||
com.google.api-client:google-api-client:1.30.10
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.90.3
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-common-protos:1.18.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.16.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.88.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.92.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.5
|
||||
com.google.api:api-common:1.10.1
|
||||
com.google.api:gax-grpc:1.60.0
|
||||
com.google.api:gax-httpjson:0.70.1
|
||||
com.google.api:gax:1.60.0
|
||||
com.google.api:gax-grpc:1.60.1
|
||||
com.google.api:gax-httpjson:0.76.1
|
||||
com.google.api:gax:1.60.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev101-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20191211-1.30.9
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200313-1.30.9
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20200916-1.30.10
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200501-1.30.10
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200311-1.30.9
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200305-1.30.9
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200720-1.30.10
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0
|
||||
com.google.apis:google-api-services-drive:v2-rev160-1.19.1
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev60-1.22.0
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200525-1.30.9
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.30.10
|
||||
com.google.apis:google-api-services-monitoring:v3-rev426-1.23.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200312-1.30.9
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-sheets:v4-rev483-1.22.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20190827-1.30.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20200326-1.30.9
|
||||
com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10
|
||||
com.google.appengine.tools:appengine-gcs-client:0.6
|
||||
com.google.appengine.tools:appengine-mapreduce:0.9
|
||||
com.google.appengine.tools:appengine-pipeline:0.2.13
|
||||
com.google.appengine:appengine-api-1.0-sdk:1.9.81
|
||||
com.google.appengine:appengine-remote-api:1.9.81
|
||||
com.google.appengine:appengine-testing:1.9.81
|
||||
com.google.auth:google-auth-library-credentials:0.22.0
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.0
|
||||
com.google.auth:google-auth-library-credentials:0.22.2
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.2
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.3
|
||||
com.google.cloud.bigdataoss:util:2.1.3
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.13.0
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.6
|
||||
com.google.cloud.bigdataoss:util:2.1.6
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.16.0
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.0.16
|
||||
com.google.cloud:google-cloud-bigquery:1.106.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:0.125.0-beta
|
||||
com.google.cloud:google-cloud-bigtable:1.9.1
|
||||
com.google.cloud:google-cloud-core-grpc:1.92.2
|
||||
com.google.cloud:google-cloud-core-http:1.92.4
|
||||
com.google.cloud:google-cloud-core:1.92.5
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.3
|
||||
com.google.cloud:google-cloud-spanner:1.49.1
|
||||
com.google.cloud:google-cloud-bigquery:1.122.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:1.5.5
|
||||
com.google.cloud:google-cloud-bigtable:1.14.0
|
||||
com.google.cloud:google-cloud-core-grpc:1.93.9
|
||||
com.google.cloud:google-cloud-core-http:1.93.9
|
||||
com.google.cloud:google-cloud-core:1.93.9
|
||||
com.google.cloud:google-cloud-pubsub:1.110.0
|
||||
com.google.cloud:google-cloud-pubsublite:0.7.0
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.9
|
||||
com.google.cloud:google-cloud-spanner:2.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.6
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.dagger:dagger:2.28
|
||||
com.google.errorprone:error_prone_annotations:2.4.0
|
||||
com.google.errorprone:error_prone_annotations:2.5.0
|
||||
com.google.flogger:flogger:0.5.1
|
||||
com.google.flogger:google-extensions:0.5.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.2
|
||||
com.google.http-client:google-http-client-appengine:1.34.1
|
||||
com.google.http-client:google-http-client-jackson2:1.37.0
|
||||
com.google.http-client:google-http-client-appengine:1.36.0
|
||||
com.google.http-client:google-http-client-jackson2:1.38.0
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.37.0
|
||||
com.google.http-client:google-http-client:1.38.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -110,54 +124,47 @@ com.google.jsinterop:jsinterop-annotations:1.0.2
|
||||
com.google.monitoring-client:metrics:1.0.7
|
||||
com.google.monitoring-client:stackdriver:1.0.7
|
||||
com.google.oauth-client:google-oauth-client-appengine:1.30.5
|
||||
com.google.oauth-client:google-oauth-client-java6:1.30.6
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.2
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.28.0
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.30.5
|
||||
com.google.oauth-client:google-oauth-client:1.30.6
|
||||
com.google.protobuf:protobuf-java-util:3.11.4
|
||||
com.google.protobuf:protobuf-java:3.13.0
|
||||
com.google.oauth-client:google-oauth-client:1.31.2
|
||||
com.google.protobuf:protobuf-java-util:3.14.0
|
||||
com.google.protobuf:protobuf-java:3.14.0
|
||||
com.google.re2j:re2j:1.1
|
||||
com.google.template:soy:2018-03-14
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
com.googlecode.json-simple:json-simple:1.1.1
|
||||
com.ibm.icu:icu4j:57.1
|
||||
com.jcraft:jsch:0.1.55
|
||||
com.squareup.okhttp:okhttp:2.5.0
|
||||
com.squareup.okio:okio:1.13.0
|
||||
com.sun.istack:istack-commons-runtime:3.0.7
|
||||
com.sun.xml.fastinfoset:FastInfoset:1.2.15
|
||||
com.thoughtworks.paranamer:paranamer:2.7
|
||||
com.zaxxer:HikariCP:3.4.5
|
||||
commons-codec:commons-codec:1.13
|
||||
commons-codec:commons-codec:1.15
|
||||
commons-logging:commons-logging:1.2
|
||||
dnsjava:dnsjava:2.1.7
|
||||
io.dropwizard.metrics:metrics-core:3.2.6
|
||||
io.github.classgraph:classgraph:4.8.65
|
||||
io.grpc:grpc-all:1.27.2
|
||||
io.grpc:grpc-alts:1.32.2
|
||||
io.grpc:grpc-api:1.32.2
|
||||
io.grpc:grpc-auth:1.32.2
|
||||
io.grpc:grpc-context:1.32.2
|
||||
io.grpc:grpc-core:1.32.2
|
||||
io.grpc:grpc-grpclb:1.32.2
|
||||
io.grpc:grpc-netty-shaded:1.32.2
|
||||
io.grpc:grpc-netty:1.27.2
|
||||
io.grpc:grpc-okhttp:1.27.2
|
||||
io.grpc:grpc-protobuf-lite:1.32.2
|
||||
io.grpc:grpc-protobuf:1.32.2
|
||||
io.grpc:grpc-stub:1.32.2
|
||||
io.grpc:grpc-testing:1.27.2
|
||||
io.netty:netty-buffer:4.1.42.Final
|
||||
io.netty:netty-codec-http2:4.1.42.Final
|
||||
io.netty:netty-codec-http:4.1.42.Final
|
||||
io.netty:netty-codec-socks:4.1.42.Final
|
||||
io.netty:netty-codec:4.1.42.Final
|
||||
io.netty:netty-common:4.1.42.Final
|
||||
io.netty:netty-handler-proxy:4.1.42.Final
|
||||
io.netty:netty-handler:4.1.42.Final
|
||||
io.netty:netty-resolver:4.1.42.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.17.Final
|
||||
io.netty:netty-transport:4.1.42.Final
|
||||
io.grpc:grpc-alts:1.34.1
|
||||
io.grpc:grpc-api:1.34.1
|
||||
io.grpc:grpc-auth:1.34.1
|
||||
io.grpc:grpc-context:1.34.1
|
||||
io.grpc:grpc-core:1.34.1
|
||||
io.grpc:grpc-grpclb:1.34.1
|
||||
io.grpc:grpc-netty-shaded:1.34.1
|
||||
io.grpc:grpc-netty:1.32.2
|
||||
io.grpc:grpc-protobuf-lite:1.34.1
|
||||
io.grpc:grpc-protobuf:1.34.1
|
||||
io.grpc:grpc-stub:1.34.1
|
||||
io.netty:netty-buffer:4.1.51.Final
|
||||
io.netty:netty-codec-http2:4.1.51.Final
|
||||
io.netty:netty-codec-http:4.1.51.Final
|
||||
io.netty:netty-codec:4.1.51.Final
|
||||
io.netty:netty-common:4.1.51.Final
|
||||
io.netty:netty-handler:4.1.51.Final
|
||||
io.netty:netty-resolver:4.1.51.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.51.Final
|
||||
io.opencensus:opencensus-api:0.24.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.24.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.24.0
|
||||
@@ -179,22 +186,22 @@ joda-time:joda-time:2.10.5
|
||||
net.bytebuddy:byte-buddy:1.10.17
|
||||
net.java.dev.jna:jna:5.5.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.23.0
|
||||
org.apache.beam:beam-model-job-management:2.23.0
|
||||
org.apache.beam:beam-model-pipeline:2.23.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.23.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.23.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.23.0
|
||||
org.apache.beam:beam-model-fn-execution:2.27.0
|
||||
org.apache.beam:beam-model-job-management:2.27.0
|
||||
org.apache.beam:beam-model-pipeline:2.27.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.27.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.27.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.27.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_10_8:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_26_0:0.3
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-lang3:3.5
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
@@ -204,15 +211,17 @@ org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.5.0
|
||||
org.checkerframework:checker-qual:3.7.0
|
||||
org.codehaus.jackson:jackson-core-asl:1.9.13
|
||||
org.codehaus.jackson:jackson-mapper-asl:1.9.13
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.2.1
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.5.1
|
||||
org.dom4j:dom4j:2.1.3
|
||||
org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
org.hibernate:hibernate-hikaricp:5.4.23.Final
|
||||
@@ -221,7 +230,7 @@ org.jboss.logging:jboss-logging:3.4.1.Final
|
||||
org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final
|
||||
org.jboss:jandex:2.1.3.Final
|
||||
org.joda:joda-money:1.0.1
|
||||
org.json:json:20160810
|
||||
org.json:json:20200518
|
||||
org.jsoup:jsoup:1.13.1
|
||||
org.jvnet.staxex:stax-ex:1.8
|
||||
org.mortbay.jetty:jetty-util:6.1.26
|
||||
@@ -240,7 +249,7 @@ org.testcontainers:database-commons:1.15.1
|
||||
org.testcontainers:jdbc:1.15.1
|
||||
org.testcontainers:postgresql:1.15.1
|
||||
org.testcontainers:testcontainers:1.15.1
|
||||
org.threeten:threetenbp:1.4.5
|
||||
org.threeten:threetenbp:1.5.0
|
||||
org.tukaani:xz:1.8
|
||||
org.w3c.css:sac:1.3
|
||||
org.xerial.snappy:snappy-java:1.1.4
|
||||
|
||||
@@ -10,9 +10,10 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.10.3
|
||||
com.fasterxml.jackson.core:jackson-core:2.11.3
|
||||
com.fasterxml.jackson.core:jackson-databind:2.10.2
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.1
|
||||
com.fasterxml.jackson:jackson-bom:2.12.1
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
@@ -25,91 +26,104 @@ com.github.jnr:jnr-ffi:2.1.13
|
||||
com.github.jnr:jnr-posix:3.0.55
|
||||
com.github.jnr:jnr-unixsocket:0.30
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.github.rholder:guava-retrying:2.0.0
|
||||
com.google.android:annotations:4.1.1.4
|
||||
com.google.api-client:google-api-client-appengine:1.30.8
|
||||
com.google.api-client:google-api-client-jackson2:1.30.9
|
||||
com.google.api-client:google-api-client-java6:1.30.9
|
||||
com.google.api-client:google-api-client-jackson2:1.30.10
|
||||
com.google.api-client:google-api-client-java6:1.30.10
|
||||
com.google.api-client:google-api-client-servlet:1.30.8
|
||||
com.google.api-client:google-api-client:1.30.9
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:grpc-google-common-protos:1.17.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.85.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.1
|
||||
com.google.api-client:google-api-client:1.30.10
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.90.3
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-common-protos:1.18.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.16.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.88.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.92.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.5
|
||||
com.google.api:api-common:1.10.1
|
||||
com.google.api:gax-grpc:1.60.0
|
||||
com.google.api:gax-httpjson:0.70.1
|
||||
com.google.api:gax:1.60.0
|
||||
com.google.api:gax-grpc:1.60.1
|
||||
com.google.api:gax-httpjson:0.76.1
|
||||
com.google.api:gax:1.60.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev101-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20191211-1.30.9
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200313-1.30.9
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20200916-1.30.10
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200501-1.30.10
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200311-1.30.9
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200305-1.30.9
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200720-1.30.10
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0
|
||||
com.google.apis:google-api-services-drive:v2-rev160-1.19.1
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev60-1.22.0
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200525-1.30.9
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.30.10
|
||||
com.google.apis:google-api-services-monitoring:v3-rev426-1.23.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200312-1.30.9
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-sheets:v4-rev483-1.22.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20190827-1.30.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20200326-1.30.9
|
||||
com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10
|
||||
com.google.appengine.tools:appengine-gcs-client:0.6
|
||||
com.google.appengine.tools:appengine-mapreduce:0.9
|
||||
com.google.appengine.tools:appengine-pipeline:0.2.13
|
||||
com.google.appengine:appengine-api-1.0-sdk:1.9.81
|
||||
com.google.appengine:appengine-remote-api:1.9.81
|
||||
com.google.appengine:appengine-testing:1.9.81
|
||||
com.google.auth:google-auth-library-credentials:0.22.0
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.0
|
||||
com.google.auth:google-auth-library-credentials:0.22.2
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.2
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.3
|
||||
com.google.cloud.bigdataoss:util:2.1.3
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.13.0
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.6
|
||||
com.google.cloud.bigdataoss:util:2.1.6
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.16.0
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.0.16
|
||||
com.google.cloud.sql:postgres-socket-factory:1.0.16
|
||||
com.google.cloud:google-cloud-bigquery:1.106.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:0.125.0-beta
|
||||
com.google.cloud:google-cloud-bigtable:1.9.1
|
||||
com.google.cloud:google-cloud-core-grpc:1.92.2
|
||||
com.google.cloud:google-cloud-core-http:1.92.4
|
||||
com.google.cloud:google-cloud-core:1.92.5
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.3
|
||||
com.google.cloud:google-cloud-spanner:1.49.1
|
||||
com.google.cloud:google-cloud-bigquery:1.122.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:1.5.5
|
||||
com.google.cloud:google-cloud-bigtable:1.14.0
|
||||
com.google.cloud:google-cloud-core-grpc:1.93.9
|
||||
com.google.cloud:google-cloud-core-http:1.93.9
|
||||
com.google.cloud:google-cloud-core:1.93.9
|
||||
com.google.cloud:google-cloud-pubsub:1.110.0
|
||||
com.google.cloud:google-cloud-pubsublite:0.7.0
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.9
|
||||
com.google.cloud:google-cloud-spanner:2.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.6
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.dagger:dagger:2.28
|
||||
com.google.errorprone:error_prone_annotations:2.4.0
|
||||
com.google.errorprone:error_prone_annotations:2.5.0
|
||||
com.google.flogger:flogger-system-backend:0.5.1
|
||||
com.google.flogger:flogger:0.5.1
|
||||
com.google.flogger:google-extensions:0.5.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.2
|
||||
com.google.http-client:google-http-client-appengine:1.34.1
|
||||
com.google.http-client:google-http-client-jackson2:1.37.0
|
||||
com.google.http-client:google-http-client-appengine:1.36.0
|
||||
com.google.http-client:google-http-client-jackson2:1.38.0
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.37.0
|
||||
com.google.http-client:google-http-client:1.38.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -117,25 +131,23 @@ com.google.jsinterop:jsinterop-annotations:1.0.2
|
||||
com.google.monitoring-client:metrics:1.0.7
|
||||
com.google.monitoring-client:stackdriver:1.0.7
|
||||
com.google.oauth-client:google-oauth-client-appengine:1.30.5
|
||||
com.google.oauth-client:google-oauth-client-java6:1.30.6
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.2
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.28.0
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.30.5
|
||||
com.google.oauth-client:google-oauth-client:1.30.6
|
||||
com.google.protobuf:protobuf-java-util:3.13.0
|
||||
com.google.protobuf:protobuf-java:3.13.0
|
||||
com.google.oauth-client:google-oauth-client:1.31.2
|
||||
com.google.protobuf:protobuf-java-util:3.14.0
|
||||
com.google.protobuf:protobuf-java:3.14.0
|
||||
com.google.re2j:re2j:1.1
|
||||
com.google.template:soy:2018-03-14
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
com.googlecode.json-simple:json-simple:1.1.1
|
||||
com.ibm.icu:icu4j:57.1
|
||||
com.jcraft:jsch:0.1.55
|
||||
com.squareup.okhttp:okhttp:2.5.0
|
||||
com.squareup.okio:okio:1.13.0
|
||||
com.sun.istack:istack-commons-runtime:3.0.7
|
||||
com.sun.xml.fastinfoset:FastInfoset:1.2.15
|
||||
com.thoughtworks.paranamer:paranamer:2.7
|
||||
com.zaxxer:HikariCP:3.4.5
|
||||
commons-codec:commons-codec:1.13
|
||||
commons-codec:commons-codec:1.15
|
||||
commons-logging:commons-logging:1.2
|
||||
dnsjava:dnsjava:2.1.7
|
||||
guru.nidi.com.kitfox:svgSalamander:1.1.3
|
||||
@@ -143,31 +155,28 @@ guru.nidi:graphviz-java-all-j2v8:0.17.0
|
||||
guru.nidi:graphviz-java:0.17.0
|
||||
io.dropwizard.metrics:metrics-core:3.2.6
|
||||
io.github.classgraph:classgraph:4.8.65
|
||||
io.grpc:grpc-all:1.27.2
|
||||
io.grpc:grpc-alts:1.32.2
|
||||
io.grpc:grpc-api:1.32.2
|
||||
io.grpc:grpc-auth:1.32.2
|
||||
io.grpc:grpc-context:1.32.2
|
||||
io.grpc:grpc-core:1.32.2
|
||||
io.grpc:grpc-grpclb:1.32.2
|
||||
io.grpc:grpc-netty-shaded:1.32.2
|
||||
io.grpc:grpc-netty:1.27.2
|
||||
io.grpc:grpc-okhttp:1.27.2
|
||||
io.grpc:grpc-protobuf-lite:1.32.2
|
||||
io.grpc:grpc-protobuf:1.32.2
|
||||
io.grpc:grpc-stub:1.32.2
|
||||
io.grpc:grpc-testing:1.27.2
|
||||
io.netty:netty-buffer:4.1.42.Final
|
||||
io.netty:netty-codec-http2:4.1.42.Final
|
||||
io.netty:netty-codec-http:4.1.42.Final
|
||||
io.netty:netty-codec-socks:4.1.42.Final
|
||||
io.netty:netty-codec:4.1.42.Final
|
||||
io.netty:netty-common:4.1.42.Final
|
||||
io.netty:netty-handler-proxy:4.1.42.Final
|
||||
io.netty:netty-handler:4.1.42.Final
|
||||
io.netty:netty-resolver:4.1.42.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.17.Final
|
||||
io.netty:netty-transport:4.1.42.Final
|
||||
io.grpc:grpc-alts:1.34.1
|
||||
io.grpc:grpc-api:1.34.1
|
||||
io.grpc:grpc-auth:1.34.1
|
||||
io.grpc:grpc-context:1.34.1
|
||||
io.grpc:grpc-core:1.34.1
|
||||
io.grpc:grpc-grpclb:1.34.1
|
||||
io.grpc:grpc-netty-shaded:1.34.1
|
||||
io.grpc:grpc-netty:1.32.2
|
||||
io.grpc:grpc-protobuf-lite:1.34.1
|
||||
io.grpc:grpc-protobuf:1.34.1
|
||||
io.grpc:grpc-stub:1.34.1
|
||||
io.netty:netty-buffer:4.1.51.Final
|
||||
io.netty:netty-codec-http2:4.1.51.Final
|
||||
io.netty:netty-codec-http:4.1.51.Final
|
||||
io.netty:netty-codec-socks:4.1.51.Final
|
||||
io.netty:netty-codec:4.1.51.Final
|
||||
io.netty:netty-common:4.1.51.Final
|
||||
io.netty:netty-handler-proxy:4.1.51.Final
|
||||
io.netty:netty-handler:4.1.51.Final
|
||||
io.netty:netty-resolver:4.1.51.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.51.Final
|
||||
io.opencensus:opencensus-api:0.24.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.24.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.24.0
|
||||
@@ -187,27 +196,27 @@ javax.validation:validation-api:1.0.0.GA
|
||||
javax.xml.bind:jaxb-api:2.3.1
|
||||
jline:jline:1.0
|
||||
joda-time:joda-time:2.10.5
|
||||
junit:junit:4.12
|
||||
junit:junit:4.13.1
|
||||
net.arnx:nashorn-promise:0.1.1
|
||||
net.bytebuddy:byte-buddy:1.10.17
|
||||
net.java.dev.jna:jna:5.5.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.23.0
|
||||
org.apache.beam:beam-model-job-management:2.23.0
|
||||
org.apache.beam:beam-model-pipeline:2.23.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.23.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.23.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.23.0
|
||||
org.apache.beam:beam-model-fn-execution:2.27.0
|
||||
org.apache.beam:beam-model-job-management:2.27.0
|
||||
org.apache.beam:beam-model-pipeline:2.27.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.27.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.27.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.27.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_10_8:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_26_0:0.3
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.5
|
||||
@@ -219,17 +228,18 @@ org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.5.0
|
||||
org.checkerframework:checker-qual:3.7.0
|
||||
org.codehaus.jackson:jackson-core-asl:1.9.13
|
||||
org.codehaus.jackson:jackson-mapper-asl:1.9.13
|
||||
org.codehaus.mojo:animal-sniffer-annotations:1.19
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.2.1
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.5.1
|
||||
org.dom4j:dom4j:2.1.3
|
||||
org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
org.hibernate:hibernate-hikaricp:5.4.23.Final
|
||||
@@ -238,7 +248,7 @@ org.jboss.logging:jboss-logging:3.4.1.Final
|
||||
org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final
|
||||
org.jboss:jandex:2.1.3.Final
|
||||
org.joda:joda-money:1.0.1
|
||||
org.json:json:20160810
|
||||
org.json:json:20200518
|
||||
org.jsoup:jsoup:1.13.1
|
||||
org.jvnet.staxex:stax-ex:1.8
|
||||
org.mortbay.jetty:jetty-util:6.1.26
|
||||
@@ -260,7 +270,7 @@ org.testcontainers:database-commons:1.15.1
|
||||
org.testcontainers:jdbc:1.15.1
|
||||
org.testcontainers:postgresql:1.15.1
|
||||
org.testcontainers:testcontainers:1.15.1
|
||||
org.threeten:threetenbp:1.4.5
|
||||
org.threeten:threetenbp:1.5.0
|
||||
org.tukaani:xz:1.8
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
|
||||
@@ -10,9 +10,10 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.10.3
|
||||
com.fasterxml.jackson.core:jackson-core:2.11.3
|
||||
com.fasterxml.jackson.core:jackson-databind:2.10.2
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.1
|
||||
com.fasterxml.jackson:jackson-bom:2.12.1
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
@@ -25,91 +26,104 @@ com.github.jnr:jnr-ffi:2.1.13
|
||||
com.github.jnr:jnr-posix:3.0.55
|
||||
com.github.jnr:jnr-unixsocket:0.30
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.github.rholder:guava-retrying:2.0.0
|
||||
com.google.android:annotations:4.1.1.4
|
||||
com.google.api-client:google-api-client-appengine:1.30.8
|
||||
com.google.api-client:google-api-client-jackson2:1.30.9
|
||||
com.google.api-client:google-api-client-java6:1.30.9
|
||||
com.google.api-client:google-api-client-jackson2:1.30.10
|
||||
com.google.api-client:google-api-client-java6:1.30.10
|
||||
com.google.api-client:google-api-client-servlet:1.30.8
|
||||
com.google.api-client:google-api-client:1.30.9
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:grpc-google-common-protos:1.17.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.85.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.1
|
||||
com.google.api-client:google-api-client:1.30.10
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.90.3
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-common-protos:1.18.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.16.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.88.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.92.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.5
|
||||
com.google.api:api-common:1.10.1
|
||||
com.google.api:gax-grpc:1.60.0
|
||||
com.google.api:gax-httpjson:0.70.1
|
||||
com.google.api:gax:1.60.0
|
||||
com.google.api:gax-grpc:1.60.1
|
||||
com.google.api:gax-httpjson:0.76.1
|
||||
com.google.api:gax:1.60.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev101-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20191211-1.30.9
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200313-1.30.9
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20200916-1.30.10
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200501-1.30.10
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200311-1.30.9
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200305-1.30.9
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200720-1.30.10
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0
|
||||
com.google.apis:google-api-services-drive:v2-rev160-1.19.1
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev60-1.22.0
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200525-1.30.9
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.30.10
|
||||
com.google.apis:google-api-services-monitoring:v3-rev426-1.23.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200312-1.30.9
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-sheets:v4-rev483-1.22.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20190827-1.30.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20200326-1.30.9
|
||||
com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10
|
||||
com.google.appengine.tools:appengine-gcs-client:0.6
|
||||
com.google.appengine.tools:appengine-mapreduce:0.9
|
||||
com.google.appengine.tools:appengine-pipeline:0.2.13
|
||||
com.google.appengine:appengine-api-1.0-sdk:1.9.81
|
||||
com.google.appengine:appengine-remote-api:1.9.81
|
||||
com.google.appengine:appengine-testing:1.9.81
|
||||
com.google.auth:google-auth-library-credentials:0.22.0
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.0
|
||||
com.google.auth:google-auth-library-credentials:0.22.2
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.2
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.3
|
||||
com.google.cloud.bigdataoss:util:2.1.3
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.13.0
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.6
|
||||
com.google.cloud.bigdataoss:util:2.1.6
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.16.0
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.0.16
|
||||
com.google.cloud.sql:postgres-socket-factory:1.0.16
|
||||
com.google.cloud:google-cloud-bigquery:1.106.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:0.125.0-beta
|
||||
com.google.cloud:google-cloud-bigtable:1.9.1
|
||||
com.google.cloud:google-cloud-core-grpc:1.92.2
|
||||
com.google.cloud:google-cloud-core-http:1.92.4
|
||||
com.google.cloud:google-cloud-core:1.92.5
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.3
|
||||
com.google.cloud:google-cloud-spanner:1.49.1
|
||||
com.google.cloud:google-cloud-bigquery:1.122.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:1.5.5
|
||||
com.google.cloud:google-cloud-bigtable:1.14.0
|
||||
com.google.cloud:google-cloud-core-grpc:1.93.9
|
||||
com.google.cloud:google-cloud-core-http:1.93.9
|
||||
com.google.cloud:google-cloud-core:1.93.9
|
||||
com.google.cloud:google-cloud-pubsub:1.110.0
|
||||
com.google.cloud:google-cloud-pubsublite:0.7.0
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.9
|
||||
com.google.cloud:google-cloud-spanner:2.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.6
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.dagger:dagger:2.28
|
||||
com.google.errorprone:error_prone_annotations:2.4.0
|
||||
com.google.errorprone:error_prone_annotations:2.5.0
|
||||
com.google.flogger:flogger-system-backend:0.5.1
|
||||
com.google.flogger:flogger:0.5.1
|
||||
com.google.flogger:google-extensions:0.5.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.2
|
||||
com.google.http-client:google-http-client-appengine:1.34.1
|
||||
com.google.http-client:google-http-client-jackson2:1.37.0
|
||||
com.google.http-client:google-http-client-appengine:1.36.0
|
||||
com.google.http-client:google-http-client-jackson2:1.38.0
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.37.0
|
||||
com.google.http-client:google-http-client:1.38.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -117,25 +131,23 @@ com.google.jsinterop:jsinterop-annotations:1.0.2
|
||||
com.google.monitoring-client:metrics:1.0.7
|
||||
com.google.monitoring-client:stackdriver:1.0.7
|
||||
com.google.oauth-client:google-oauth-client-appengine:1.30.5
|
||||
com.google.oauth-client:google-oauth-client-java6:1.30.6
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.2
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.28.0
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.30.5
|
||||
com.google.oauth-client:google-oauth-client:1.30.6
|
||||
com.google.protobuf:protobuf-java-util:3.13.0
|
||||
com.google.protobuf:protobuf-java:3.13.0
|
||||
com.google.oauth-client:google-oauth-client:1.31.2
|
||||
com.google.protobuf:protobuf-java-util:3.14.0
|
||||
com.google.protobuf:protobuf-java:3.14.0
|
||||
com.google.re2j:re2j:1.1
|
||||
com.google.template:soy:2018-03-14
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
com.googlecode.json-simple:json-simple:1.1.1
|
||||
com.ibm.icu:icu4j:57.1
|
||||
com.jcraft:jsch:0.1.55
|
||||
com.squareup.okhttp:okhttp:2.5.0
|
||||
com.squareup.okio:okio:1.13.0
|
||||
com.sun.istack:istack-commons-runtime:3.0.7
|
||||
com.sun.xml.fastinfoset:FastInfoset:1.2.15
|
||||
com.thoughtworks.paranamer:paranamer:2.7
|
||||
com.zaxxer:HikariCP:3.4.5
|
||||
commons-codec:commons-codec:1.13
|
||||
commons-codec:commons-codec:1.15
|
||||
commons-logging:commons-logging:1.2
|
||||
dnsjava:dnsjava:2.1.7
|
||||
guru.nidi.com.kitfox:svgSalamander:1.1.3
|
||||
@@ -143,31 +155,28 @@ guru.nidi:graphviz-java-all-j2v8:0.17.0
|
||||
guru.nidi:graphviz-java:0.17.0
|
||||
io.dropwizard.metrics:metrics-core:3.2.6
|
||||
io.github.classgraph:classgraph:4.8.65
|
||||
io.grpc:grpc-all:1.27.2
|
||||
io.grpc:grpc-alts:1.32.2
|
||||
io.grpc:grpc-api:1.32.2
|
||||
io.grpc:grpc-auth:1.32.2
|
||||
io.grpc:grpc-context:1.32.2
|
||||
io.grpc:grpc-core:1.32.2
|
||||
io.grpc:grpc-grpclb:1.32.2
|
||||
io.grpc:grpc-netty-shaded:1.32.2
|
||||
io.grpc:grpc-netty:1.27.2
|
||||
io.grpc:grpc-okhttp:1.27.2
|
||||
io.grpc:grpc-protobuf-lite:1.32.2
|
||||
io.grpc:grpc-protobuf:1.32.2
|
||||
io.grpc:grpc-stub:1.32.2
|
||||
io.grpc:grpc-testing:1.27.2
|
||||
io.netty:netty-buffer:4.1.42.Final
|
||||
io.netty:netty-codec-http2:4.1.42.Final
|
||||
io.netty:netty-codec-http:4.1.42.Final
|
||||
io.netty:netty-codec-socks:4.1.42.Final
|
||||
io.netty:netty-codec:4.1.42.Final
|
||||
io.netty:netty-common:4.1.42.Final
|
||||
io.netty:netty-handler-proxy:4.1.42.Final
|
||||
io.netty:netty-handler:4.1.42.Final
|
||||
io.netty:netty-resolver:4.1.42.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.17.Final
|
||||
io.netty:netty-transport:4.1.42.Final
|
||||
io.grpc:grpc-alts:1.34.1
|
||||
io.grpc:grpc-api:1.34.1
|
||||
io.grpc:grpc-auth:1.34.1
|
||||
io.grpc:grpc-context:1.34.1
|
||||
io.grpc:grpc-core:1.34.1
|
||||
io.grpc:grpc-grpclb:1.34.1
|
||||
io.grpc:grpc-netty-shaded:1.34.1
|
||||
io.grpc:grpc-netty:1.32.2
|
||||
io.grpc:grpc-protobuf-lite:1.34.1
|
||||
io.grpc:grpc-protobuf:1.34.1
|
||||
io.grpc:grpc-stub:1.34.1
|
||||
io.netty:netty-buffer:4.1.51.Final
|
||||
io.netty:netty-codec-http2:4.1.51.Final
|
||||
io.netty:netty-codec-http:4.1.51.Final
|
||||
io.netty:netty-codec-socks:4.1.51.Final
|
||||
io.netty:netty-codec:4.1.51.Final
|
||||
io.netty:netty-common:4.1.51.Final
|
||||
io.netty:netty-handler-proxy:4.1.51.Final
|
||||
io.netty:netty-handler:4.1.51.Final
|
||||
io.netty:netty-resolver:4.1.51.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.51.Final
|
||||
io.opencensus:opencensus-api:0.24.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.24.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.24.0
|
||||
@@ -191,22 +200,22 @@ net.arnx:nashorn-promise:0.1.1
|
||||
net.bytebuddy:byte-buddy:1.10.17
|
||||
net.java.dev.jna:jna:5.5.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.23.0
|
||||
org.apache.beam:beam-model-job-management:2.23.0
|
||||
org.apache.beam:beam-model-pipeline:2.23.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.23.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.23.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.23.0
|
||||
org.apache.beam:beam-model-fn-execution:2.27.0
|
||||
org.apache.beam:beam-model-job-management:2.27.0
|
||||
org.apache.beam:beam-model-pipeline:2.27.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.27.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.27.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.27.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_10_8:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_26_0:0.3
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.5
|
||||
@@ -218,16 +227,18 @@ org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.5.0
|
||||
org.checkerframework:checker-qual:3.7.0
|
||||
org.codehaus.jackson:jackson-core-asl:1.9.13
|
||||
org.codehaus.jackson:jackson-mapper-asl:1.9.13
|
||||
org.codehaus.mojo:animal-sniffer-annotations:1.19
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.2.1
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.5.1
|
||||
org.dom4j:dom4j:2.1.3
|
||||
org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
org.hibernate:hibernate-hikaricp:5.4.23.Final
|
||||
@@ -236,7 +247,7 @@ org.jboss.logging:jboss-logging:3.4.1.Final
|
||||
org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final
|
||||
org.jboss:jandex:2.1.3.Final
|
||||
org.joda:joda-money:1.0.1
|
||||
org.json:json:20160810
|
||||
org.json:json:20200518
|
||||
org.jsoup:jsoup:1.13.1
|
||||
org.jvnet.staxex:stax-ex:1.8
|
||||
org.mortbay.jetty:jetty-util:6.1.26
|
||||
@@ -258,7 +269,7 @@ org.testcontainers:database-commons:1.15.1
|
||||
org.testcontainers:jdbc:1.15.1
|
||||
org.testcontainers:postgresql:1.15.1
|
||||
org.testcontainers:testcontainers:1.15.1
|
||||
org.threeten:threetenbp:1.4.5
|
||||
org.threeten:threetenbp:1.5.0
|
||||
org.tukaani:xz:1.8
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
|
||||
@@ -6,9 +6,10 @@ aopalliance:aopalliance:1.0
|
||||
args4j:args4j:2.33
|
||||
cglib:cglib-nodep:2.2
|
||||
com.beust:jcommander:1.60
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.10.3
|
||||
com.fasterxml.jackson.core:jackson-core:2.11.3
|
||||
com.fasterxml.jackson.core:jackson-databind:2.10.2
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.1
|
||||
com.fasterxml.jackson:jackson-bom:2.12.1
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
@@ -21,90 +22,103 @@ com.github.jnr:jnr-ffi:2.1.13
|
||||
com.github.jnr:jnr-posix:3.0.55
|
||||
com.github.jnr:jnr-unixsocket:0.30
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.github.rholder:guava-retrying:2.0.0
|
||||
com.google.android:annotations:4.1.1.4
|
||||
com.google.api-client:google-api-client-appengine:1.30.8
|
||||
com.google.api-client:google-api-client-jackson2:1.30.9
|
||||
com.google.api-client:google-api-client-java6:1.30.9
|
||||
com.google.api-client:google-api-client-jackson2:1.30.10
|
||||
com.google.api-client:google-api-client-java6:1.30.10
|
||||
com.google.api-client:google-api-client-servlet:1.30.8
|
||||
com.google.api-client:google-api-client:1.30.9
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:grpc-google-common-protos:1.17.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.85.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.1
|
||||
com.google.api-client:google-api-client:1.30.10
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.90.3
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-common-protos:1.18.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.16.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.88.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.92.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.5
|
||||
com.google.api:api-common:1.10.1
|
||||
com.google.api:gax-grpc:1.60.0
|
||||
com.google.api:gax-httpjson:0.70.1
|
||||
com.google.api:gax:1.60.0
|
||||
com.google.api:gax-grpc:1.60.1
|
||||
com.google.api:gax-httpjson:0.76.1
|
||||
com.google.api:gax:1.60.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev101-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20191211-1.30.9
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200313-1.30.9
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20200916-1.30.10
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200501-1.30.10
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200311-1.30.9
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200305-1.30.9
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200720-1.30.10
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0
|
||||
com.google.apis:google-api-services-drive:v2-rev160-1.19.1
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev60-1.22.0
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200525-1.30.9
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.30.10
|
||||
com.google.apis:google-api-services-monitoring:v3-rev426-1.23.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200312-1.30.9
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-sheets:v4-rev483-1.22.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20190827-1.30.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20200326-1.30.9
|
||||
com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10
|
||||
com.google.appengine.tools:appengine-gcs-client:0.6
|
||||
com.google.appengine.tools:appengine-mapreduce:0.9
|
||||
com.google.appengine.tools:appengine-pipeline:0.2.13
|
||||
com.google.appengine:appengine-api-1.0-sdk:1.9.81
|
||||
com.google.appengine:appengine-remote-api:1.9.81
|
||||
com.google.appengine:appengine-testing:1.9.81
|
||||
com.google.auth:google-auth-library-credentials:0.22.0
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.0
|
||||
com.google.auth:google-auth-library-credentials:0.22.2
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.2
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.3
|
||||
com.google.cloud.bigdataoss:util:2.1.3
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.13.0
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.6
|
||||
com.google.cloud.bigdataoss:util:2.1.6
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.16.0
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.0.16
|
||||
com.google.cloud:google-cloud-bigquery:1.106.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:0.125.0-beta
|
||||
com.google.cloud:google-cloud-bigtable:1.9.1
|
||||
com.google.cloud:google-cloud-core-grpc:1.92.2
|
||||
com.google.cloud:google-cloud-core-http:1.92.4
|
||||
com.google.cloud:google-cloud-core:1.92.5
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.3
|
||||
com.google.cloud:google-cloud-spanner:1.49.1
|
||||
com.google.cloud:google-cloud-bigquery:1.122.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:1.5.5
|
||||
com.google.cloud:google-cloud-bigtable:1.14.0
|
||||
com.google.cloud:google-cloud-core-grpc:1.93.9
|
||||
com.google.cloud:google-cloud-core-http:1.93.9
|
||||
com.google.cloud:google-cloud-core:1.93.9
|
||||
com.google.cloud:google-cloud-pubsub:1.110.0
|
||||
com.google.cloud:google-cloud-pubsublite:0.7.0
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.9
|
||||
com.google.cloud:google-cloud-spanner:2.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.6
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.dagger:dagger:2.28
|
||||
com.google.errorprone:error_prone_annotations:2.4.0
|
||||
com.google.errorprone:error_prone_annotations:2.5.0
|
||||
com.google.flogger:flogger-system-backend:0.5.1
|
||||
com.google.flogger:flogger:0.5.1
|
||||
com.google.flogger:google-extensions:0.5.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.2
|
||||
com.google.http-client:google-http-client-appengine:1.34.1
|
||||
com.google.http-client:google-http-client-jackson2:1.37.0
|
||||
com.google.http-client:google-http-client-appengine:1.36.0
|
||||
com.google.http-client:google-http-client-jackson2:1.38.0
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.37.0
|
||||
com.google.http-client:google-http-client:1.38.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -112,54 +126,49 @@ com.google.jsinterop:jsinterop-annotations:1.0.2
|
||||
com.google.monitoring-client:metrics:1.0.7
|
||||
com.google.monitoring-client:stackdriver:1.0.7
|
||||
com.google.oauth-client:google-oauth-client-appengine:1.30.5
|
||||
com.google.oauth-client:google-oauth-client-java6:1.30.6
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.2
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.28.0
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.30.5
|
||||
com.google.oauth-client:google-oauth-client:1.30.6
|
||||
com.google.protobuf:protobuf-java-util:3.13.0
|
||||
com.google.protobuf:protobuf-java:3.13.0
|
||||
com.google.oauth-client:google-oauth-client:1.31.2
|
||||
com.google.protobuf:protobuf-java-util:3.14.0
|
||||
com.google.protobuf:protobuf-java:3.14.0
|
||||
com.google.re2j:re2j:1.1
|
||||
com.google.template:soy:2018-03-14
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
com.googlecode.json-simple:json-simple:1.1.1
|
||||
com.ibm.icu:icu4j:57.1
|
||||
com.jcraft:jsch:0.1.55
|
||||
com.squareup.okhttp:okhttp:2.5.0
|
||||
com.squareup.okio:okio:1.13.0
|
||||
com.sun.istack:istack-commons-runtime:3.0.7
|
||||
com.sun.xml.fastinfoset:FastInfoset:1.2.15
|
||||
com.thoughtworks.paranamer:paranamer:2.7
|
||||
com.zaxxer:HikariCP:3.4.5
|
||||
commons-codec:commons-codec:1.13
|
||||
commons-codec:commons-codec:1.15
|
||||
commons-logging:commons-logging:1.2
|
||||
dnsjava:dnsjava:2.1.7
|
||||
io.dropwizard.metrics:metrics-core:3.2.6
|
||||
io.github.classgraph:classgraph:4.8.65
|
||||
io.grpc:grpc-all:1.27.2
|
||||
io.grpc:grpc-alts:1.32.2
|
||||
io.grpc:grpc-api:1.32.2
|
||||
io.grpc:grpc-auth:1.32.2
|
||||
io.grpc:grpc-context:1.32.2
|
||||
io.grpc:grpc-core:1.32.2
|
||||
io.grpc:grpc-grpclb:1.32.2
|
||||
io.grpc:grpc-netty-shaded:1.32.2
|
||||
io.grpc:grpc-netty:1.27.2
|
||||
io.grpc:grpc-okhttp:1.27.2
|
||||
io.grpc:grpc-protobuf-lite:1.32.2
|
||||
io.grpc:grpc-protobuf:1.32.2
|
||||
io.grpc:grpc-stub:1.32.2
|
||||
io.grpc:grpc-testing:1.27.2
|
||||
io.netty:netty-buffer:4.1.42.Final
|
||||
io.netty:netty-codec-http2:4.1.42.Final
|
||||
io.netty:netty-codec-http:4.1.42.Final
|
||||
io.netty:netty-codec-socks:4.1.42.Final
|
||||
io.netty:netty-codec:4.1.42.Final
|
||||
io.netty:netty-common:4.1.42.Final
|
||||
io.netty:netty-handler-proxy:4.1.42.Final
|
||||
io.netty:netty-handler:4.1.42.Final
|
||||
io.netty:netty-resolver:4.1.42.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.17.Final
|
||||
io.netty:netty-transport:4.1.42.Final
|
||||
io.grpc:grpc-alts:1.34.1
|
||||
io.grpc:grpc-api:1.34.1
|
||||
io.grpc:grpc-auth:1.34.1
|
||||
io.grpc:grpc-context:1.34.1
|
||||
io.grpc:grpc-core:1.34.1
|
||||
io.grpc:grpc-grpclb:1.34.1
|
||||
io.grpc:grpc-netty-shaded:1.34.1
|
||||
io.grpc:grpc-netty:1.32.2
|
||||
io.grpc:grpc-protobuf-lite:1.34.1
|
||||
io.grpc:grpc-protobuf:1.34.1
|
||||
io.grpc:grpc-stub:1.34.1
|
||||
io.netty:netty-buffer:4.1.51.Final
|
||||
io.netty:netty-codec-http2:4.1.51.Final
|
||||
io.netty:netty-codec-http:4.1.51.Final
|
||||
io.netty:netty-codec-socks:4.1.51.Final
|
||||
io.netty:netty-codec:4.1.51.Final
|
||||
io.netty:netty-common:4.1.51.Final
|
||||
io.netty:netty-handler-proxy:4.1.51.Final
|
||||
io.netty:netty-handler:4.1.51.Final
|
||||
io.netty:netty-resolver:4.1.51.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.51.Final
|
||||
io.opencensus:opencensus-api:0.24.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.24.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.24.0
|
||||
@@ -179,26 +188,26 @@ javax.validation:validation-api:1.0.0.GA
|
||||
javax.xml.bind:jaxb-api:2.3.1
|
||||
jline:jline:1.0
|
||||
joda-time:joda-time:2.10.5
|
||||
junit:junit:4.12
|
||||
junit:junit:4.13.1
|
||||
net.bytebuddy:byte-buddy:1.10.17
|
||||
net.java.dev.jna:jna:5.5.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.23.0
|
||||
org.apache.beam:beam-model-job-management:2.23.0
|
||||
org.apache.beam:beam-model-pipeline:2.23.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.23.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.23.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.23.0
|
||||
org.apache.beam:beam-model-fn-execution:2.27.0
|
||||
org.apache.beam:beam-model-job-management:2.27.0
|
||||
org.apache.beam:beam-model-pipeline:2.27.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.27.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.27.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.27.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_10_8:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_26_0:0.3
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-lang3:3.5
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
@@ -208,17 +217,18 @@ org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.5.0
|
||||
org.checkerframework:checker-qual:3.7.0
|
||||
org.codehaus.jackson:jackson-core-asl:1.9.13
|
||||
org.codehaus.jackson:jackson-mapper-asl:1.9.13
|
||||
org.codehaus.mojo:animal-sniffer-annotations:1.19
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.2.1
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.5.1
|
||||
org.dom4j:dom4j:2.1.3
|
||||
org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
org.hibernate:hibernate-hikaricp:5.4.23.Final
|
||||
@@ -227,7 +237,7 @@ org.jboss.logging:jboss-logging:3.4.1.Final
|
||||
org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final
|
||||
org.jboss:jandex:2.1.3.Final
|
||||
org.joda:joda-money:1.0.1
|
||||
org.json:json:20160810
|
||||
org.json:json:20200518
|
||||
org.jsoup:jsoup:1.13.1
|
||||
org.jvnet.staxex:stax-ex:1.8
|
||||
org.mortbay.jetty:jetty-util:6.1.26
|
||||
@@ -246,7 +256,7 @@ org.testcontainers:database-commons:1.15.1
|
||||
org.testcontainers:jdbc:1.15.1
|
||||
org.testcontainers:postgresql:1.15.1
|
||||
org.testcontainers:testcontainers:1.15.1
|
||||
org.threeten:threetenbp:1.4.5
|
||||
org.threeten:threetenbp:1.5.0
|
||||
org.tukaani:xz:1.8
|
||||
org.w3c.css:sac:1.3
|
||||
org.xerial.snappy:snappy-java:1.1.4
|
||||
|
||||
@@ -6,9 +6,10 @@ aopalliance:aopalliance:1.0
|
||||
args4j:args4j:2.33
|
||||
cglib:cglib-nodep:2.2
|
||||
com.beust:jcommander:1.60
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.10.3
|
||||
com.fasterxml.jackson.core:jackson-core:2.11.3
|
||||
com.fasterxml.jackson.core:jackson-databind:2.10.2
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.1
|
||||
com.fasterxml.jackson:jackson-bom:2.12.1
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
@@ -21,88 +22,101 @@ com.github.jnr:jnr-ffi:2.1.13
|
||||
com.github.jnr:jnr-posix:3.0.55
|
||||
com.github.jnr:jnr-unixsocket:0.30
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.github.rholder:guava-retrying:2.0.0
|
||||
com.google.api-client:google-api-client-appengine:1.30.8
|
||||
com.google.api-client:google-api-client-jackson2:1.30.9
|
||||
com.google.api-client:google-api-client-java6:1.30.9
|
||||
com.google.api-client:google-api-client-jackson2:1.30.10
|
||||
com.google.api-client:google-api-client-java6:1.30.10
|
||||
com.google.api-client:google-api-client-servlet:1.30.8
|
||||
com.google.api-client:google-api-client:1.30.9
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:grpc-google-common-protos:1.17.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.85.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.1
|
||||
com.google.api-client:google-api-client:1.30.10
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.90.3
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-common-protos:1.18.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.16.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.88.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.92.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.5
|
||||
com.google.api:api-common:1.10.1
|
||||
com.google.api:gax-grpc:1.60.0
|
||||
com.google.api:gax-httpjson:0.70.1
|
||||
com.google.api:gax:1.60.0
|
||||
com.google.api:gax-grpc:1.60.1
|
||||
com.google.api:gax-httpjson:0.76.1
|
||||
com.google.api:gax:1.60.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev101-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20191211-1.30.9
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200313-1.30.9
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20200916-1.30.10
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200501-1.30.10
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200311-1.30.9
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200305-1.30.9
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200720-1.30.10
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0
|
||||
com.google.apis:google-api-services-drive:v2-rev160-1.19.1
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev60-1.22.0
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200525-1.30.9
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.30.10
|
||||
com.google.apis:google-api-services-monitoring:v3-rev426-1.23.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200312-1.30.9
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-sheets:v4-rev483-1.22.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20190827-1.30.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20200326-1.30.9
|
||||
com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10
|
||||
com.google.appengine.tools:appengine-gcs-client:0.6
|
||||
com.google.appengine.tools:appengine-mapreduce:0.9
|
||||
com.google.appengine.tools:appengine-pipeline:0.2.13
|
||||
com.google.appengine:appengine-api-1.0-sdk:1.9.81
|
||||
com.google.appengine:appengine-remote-api:1.9.81
|
||||
com.google.appengine:appengine-testing:1.9.81
|
||||
com.google.auth:google-auth-library-credentials:0.22.0
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.0
|
||||
com.google.auth:google-auth-library-credentials:0.22.2
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.2
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.3
|
||||
com.google.cloud.bigdataoss:util:2.1.3
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.13.0
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.6
|
||||
com.google.cloud.bigdataoss:util:2.1.6
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.16.0
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.0.16
|
||||
com.google.cloud:google-cloud-bigquery:1.106.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:0.125.0-beta
|
||||
com.google.cloud:google-cloud-bigtable:1.9.1
|
||||
com.google.cloud:google-cloud-core-grpc:1.92.2
|
||||
com.google.cloud:google-cloud-core-http:1.92.4
|
||||
com.google.cloud:google-cloud-core:1.92.5
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.3
|
||||
com.google.cloud:google-cloud-spanner:1.49.1
|
||||
com.google.cloud:google-cloud-bigquery:1.122.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:1.5.5
|
||||
com.google.cloud:google-cloud-bigtable:1.14.0
|
||||
com.google.cloud:google-cloud-core-grpc:1.93.9
|
||||
com.google.cloud:google-cloud-core-http:1.93.9
|
||||
com.google.cloud:google-cloud-core:1.93.9
|
||||
com.google.cloud:google-cloud-pubsub:1.110.0
|
||||
com.google.cloud:google-cloud-pubsublite:0.7.0
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.9
|
||||
com.google.cloud:google-cloud-spanner:2.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.6
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.dagger:dagger:2.28
|
||||
com.google.errorprone:error_prone_annotations:2.4.0
|
||||
com.google.errorprone:error_prone_annotations:2.5.0
|
||||
com.google.flogger:flogger:0.5.1
|
||||
com.google.flogger:google-extensions:0.5.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.2
|
||||
com.google.http-client:google-http-client-appengine:1.34.1
|
||||
com.google.http-client:google-http-client-jackson2:1.37.0
|
||||
com.google.http-client:google-http-client-appengine:1.36.0
|
||||
com.google.http-client:google-http-client-jackson2:1.38.0
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.37.0
|
||||
com.google.http-client:google-http-client:1.38.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -110,54 +124,47 @@ com.google.jsinterop:jsinterop-annotations:1.0.2
|
||||
com.google.monitoring-client:metrics:1.0.7
|
||||
com.google.monitoring-client:stackdriver:1.0.7
|
||||
com.google.oauth-client:google-oauth-client-appengine:1.30.5
|
||||
com.google.oauth-client:google-oauth-client-java6:1.30.6
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.2
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.28.0
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.30.5
|
||||
com.google.oauth-client:google-oauth-client:1.30.6
|
||||
com.google.protobuf:protobuf-java-util:3.11.4
|
||||
com.google.protobuf:protobuf-java:3.13.0
|
||||
com.google.oauth-client:google-oauth-client:1.31.2
|
||||
com.google.protobuf:protobuf-java-util:3.14.0
|
||||
com.google.protobuf:protobuf-java:3.14.0
|
||||
com.google.re2j:re2j:1.1
|
||||
com.google.template:soy:2018-03-14
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
com.googlecode.json-simple:json-simple:1.1.1
|
||||
com.ibm.icu:icu4j:57.1
|
||||
com.jcraft:jsch:0.1.55
|
||||
com.squareup.okhttp:okhttp:2.5.0
|
||||
com.squareup.okio:okio:1.13.0
|
||||
com.sun.istack:istack-commons-runtime:3.0.7
|
||||
com.sun.xml.fastinfoset:FastInfoset:1.2.15
|
||||
com.thoughtworks.paranamer:paranamer:2.7
|
||||
com.zaxxer:HikariCP:3.4.5
|
||||
commons-codec:commons-codec:1.13
|
||||
commons-codec:commons-codec:1.15
|
||||
commons-logging:commons-logging:1.2
|
||||
dnsjava:dnsjava:2.1.7
|
||||
io.dropwizard.metrics:metrics-core:3.2.6
|
||||
io.github.classgraph:classgraph:4.8.65
|
||||
io.grpc:grpc-all:1.27.2
|
||||
io.grpc:grpc-alts:1.32.2
|
||||
io.grpc:grpc-api:1.32.2
|
||||
io.grpc:grpc-auth:1.32.2
|
||||
io.grpc:grpc-context:1.32.2
|
||||
io.grpc:grpc-core:1.32.2
|
||||
io.grpc:grpc-grpclb:1.32.2
|
||||
io.grpc:grpc-netty-shaded:1.32.2
|
||||
io.grpc:grpc-netty:1.27.2
|
||||
io.grpc:grpc-okhttp:1.27.2
|
||||
io.grpc:grpc-protobuf-lite:1.32.2
|
||||
io.grpc:grpc-protobuf:1.32.2
|
||||
io.grpc:grpc-stub:1.32.2
|
||||
io.grpc:grpc-testing:1.27.2
|
||||
io.netty:netty-buffer:4.1.42.Final
|
||||
io.netty:netty-codec-http2:4.1.42.Final
|
||||
io.netty:netty-codec-http:4.1.42.Final
|
||||
io.netty:netty-codec-socks:4.1.42.Final
|
||||
io.netty:netty-codec:4.1.42.Final
|
||||
io.netty:netty-common:4.1.42.Final
|
||||
io.netty:netty-handler-proxy:4.1.42.Final
|
||||
io.netty:netty-handler:4.1.42.Final
|
||||
io.netty:netty-resolver:4.1.42.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.17.Final
|
||||
io.netty:netty-transport:4.1.42.Final
|
||||
io.grpc:grpc-alts:1.34.1
|
||||
io.grpc:grpc-api:1.34.1
|
||||
io.grpc:grpc-auth:1.34.1
|
||||
io.grpc:grpc-context:1.34.1
|
||||
io.grpc:grpc-core:1.34.1
|
||||
io.grpc:grpc-grpclb:1.34.1
|
||||
io.grpc:grpc-netty-shaded:1.34.1
|
||||
io.grpc:grpc-netty:1.32.2
|
||||
io.grpc:grpc-protobuf-lite:1.34.1
|
||||
io.grpc:grpc-protobuf:1.34.1
|
||||
io.grpc:grpc-stub:1.34.1
|
||||
io.netty:netty-buffer:4.1.51.Final
|
||||
io.netty:netty-codec-http2:4.1.51.Final
|
||||
io.netty:netty-codec-http:4.1.51.Final
|
||||
io.netty:netty-codec:4.1.51.Final
|
||||
io.netty:netty-common:4.1.51.Final
|
||||
io.netty:netty-handler:4.1.51.Final
|
||||
io.netty:netty-resolver:4.1.51.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.51.Final
|
||||
io.opencensus:opencensus-api:0.24.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.24.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.24.0
|
||||
@@ -176,26 +183,26 @@ javax.validation:validation-api:1.0.0.GA
|
||||
javax.xml.bind:jaxb-api:2.3.1
|
||||
jline:jline:1.0
|
||||
joda-time:joda-time:2.10.5
|
||||
junit:junit:4.12
|
||||
junit:junit:4.13.1
|
||||
net.bytebuddy:byte-buddy:1.10.17
|
||||
net.java.dev.jna:jna:5.5.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.23.0
|
||||
org.apache.beam:beam-model-job-management:2.23.0
|
||||
org.apache.beam:beam-model-pipeline:2.23.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.23.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.23.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.23.0
|
||||
org.apache.beam:beam-model-fn-execution:2.27.0
|
||||
org.apache.beam:beam-model-job-management:2.27.0
|
||||
org.apache.beam:beam-model-pipeline:2.27.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.27.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.27.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.27.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_10_8:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_26_0:0.3
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-lang3:3.5
|
||||
org.apache.httpcomponents:httpclient:4.5.13
|
||||
@@ -205,16 +212,17 @@ org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.5.0
|
||||
org.checkerframework:checker-qual:3.7.0
|
||||
org.codehaus.jackson:jackson-core-asl:1.9.13
|
||||
org.codehaus.jackson:jackson-mapper-asl:1.9.13
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.2.1
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.5.1
|
||||
org.dom4j:dom4j:2.1.3
|
||||
org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
org.hibernate:hibernate-hikaricp:5.4.23.Final
|
||||
@@ -223,7 +231,7 @@ org.jboss.logging:jboss-logging:3.4.1.Final
|
||||
org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final
|
||||
org.jboss:jandex:2.1.3.Final
|
||||
org.joda:joda-money:1.0.1
|
||||
org.json:json:20160810
|
||||
org.json:json:20200518
|
||||
org.jsoup:jsoup:1.13.1
|
||||
org.jvnet.staxex:stax-ex:1.8
|
||||
org.mortbay.jetty:jetty-util:6.1.26
|
||||
@@ -242,7 +250,7 @@ org.testcontainers:database-commons:1.15.1
|
||||
org.testcontainers:jdbc:1.15.1
|
||||
org.testcontainers:postgresql:1.15.1
|
||||
org.testcontainers:testcontainers:1.15.1
|
||||
org.threeten:threetenbp:1.4.5
|
||||
org.threeten:threetenbp:1.5.0
|
||||
org.tukaani:xz:1.8
|
||||
org.w3c.css:sac:1.3
|
||||
org.xerial.snappy:snappy-java:1.1.4
|
||||
|
||||
@@ -10,9 +10,10 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.10.3
|
||||
com.fasterxml.jackson.core:jackson-core:2.11.3
|
||||
com.fasterxml.jackson.core:jackson-databind:2.10.2
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.1
|
||||
com.fasterxml.jackson:jackson-bom:2.12.1
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
@@ -25,90 +26,103 @@ com.github.jnr:jnr-ffi:2.1.13
|
||||
com.github.jnr:jnr-posix:3.0.55
|
||||
com.github.jnr:jnr-unixsocket:0.30
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.github.rholder:guava-retrying:2.0.0
|
||||
com.google.android:annotations:4.1.1.4
|
||||
com.google.api-client:google-api-client-appengine:1.30.8
|
||||
com.google.api-client:google-api-client-jackson2:1.30.9
|
||||
com.google.api-client:google-api-client-java6:1.30.9
|
||||
com.google.api-client:google-api-client-jackson2:1.30.10
|
||||
com.google.api-client:google-api-client-java6:1.30.10
|
||||
com.google.api-client:google-api-client-servlet:1.30.8
|
||||
com.google.api-client:google-api-client:1.30.9
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:grpc-google-common-protos:1.17.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.85.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.1
|
||||
com.google.api-client:google-api-client:1.30.10
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.90.3
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-common-protos:1.18.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.16.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.88.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.92.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.5
|
||||
com.google.api:api-common:1.10.1
|
||||
com.google.api:gax-grpc:1.60.0
|
||||
com.google.api:gax-httpjson:0.70.1
|
||||
com.google.api:gax:1.60.0
|
||||
com.google.api:gax-grpc:1.60.1
|
||||
com.google.api:gax-httpjson:0.76.1
|
||||
com.google.api:gax:1.60.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev101-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20191211-1.30.9
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200313-1.30.9
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20200916-1.30.10
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200501-1.30.10
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200311-1.30.9
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200305-1.30.9
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200720-1.30.10
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0
|
||||
com.google.apis:google-api-services-drive:v2-rev160-1.19.1
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev60-1.22.0
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200525-1.30.9
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.30.10
|
||||
com.google.apis:google-api-services-monitoring:v3-rev426-1.23.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200312-1.30.9
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-sheets:v4-rev483-1.22.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20190827-1.30.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20200326-1.30.9
|
||||
com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10
|
||||
com.google.appengine.tools:appengine-gcs-client:0.6
|
||||
com.google.appengine.tools:appengine-mapreduce:0.9
|
||||
com.google.appengine.tools:appengine-pipeline:0.2.13
|
||||
com.google.appengine:appengine-api-1.0-sdk:1.9.81
|
||||
com.google.appengine:appengine-remote-api:1.9.81
|
||||
com.google.appengine:appengine-testing:1.9.81
|
||||
com.google.auth:google-auth-library-credentials:0.22.0
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.0
|
||||
com.google.auth:google-auth-library-credentials:0.22.2
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.2
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.3
|
||||
com.google.cloud.bigdataoss:util:2.1.3
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.13.0
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.6
|
||||
com.google.cloud.bigdataoss:util:2.1.6
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.16.0
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.0.16
|
||||
com.google.cloud:google-cloud-bigquery:1.106.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:0.125.0-beta
|
||||
com.google.cloud:google-cloud-bigtable:1.9.1
|
||||
com.google.cloud:google-cloud-core-grpc:1.92.2
|
||||
com.google.cloud:google-cloud-core-http:1.92.4
|
||||
com.google.cloud:google-cloud-core:1.92.5
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.3
|
||||
com.google.cloud:google-cloud-spanner:1.49.1
|
||||
com.google.cloud:google-cloud-bigquery:1.122.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:1.5.5
|
||||
com.google.cloud:google-cloud-bigtable:1.14.0
|
||||
com.google.cloud:google-cloud-core-grpc:1.93.9
|
||||
com.google.cloud:google-cloud-core-http:1.93.9
|
||||
com.google.cloud:google-cloud-core:1.93.9
|
||||
com.google.cloud:google-cloud-pubsub:1.110.0
|
||||
com.google.cloud:google-cloud-pubsublite:0.7.0
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.9
|
||||
com.google.cloud:google-cloud-spanner:2.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.6
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.dagger:dagger:2.28
|
||||
com.google.errorprone:error_prone_annotations:2.4.0
|
||||
com.google.errorprone:error_prone_annotations:2.5.0
|
||||
com.google.flogger:flogger-system-backend:0.5.1
|
||||
com.google.flogger:flogger:0.5.1
|
||||
com.google.flogger:google-extensions:0.5.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.2
|
||||
com.google.http-client:google-http-client-appengine:1.34.1
|
||||
com.google.http-client:google-http-client-jackson2:1.37.0
|
||||
com.google.http-client:google-http-client-appengine:1.36.0
|
||||
com.google.http-client:google-http-client-jackson2:1.38.0
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.37.0
|
||||
com.google.http-client:google-http-client:1.38.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -116,25 +130,23 @@ com.google.jsinterop:jsinterop-annotations:1.0.2
|
||||
com.google.monitoring-client:metrics:1.0.7
|
||||
com.google.monitoring-client:stackdriver:1.0.7
|
||||
com.google.oauth-client:google-oauth-client-appengine:1.30.5
|
||||
com.google.oauth-client:google-oauth-client-java6:1.30.6
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.2
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.28.0
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.30.5
|
||||
com.google.oauth-client:google-oauth-client:1.30.6
|
||||
com.google.protobuf:protobuf-java-util:3.13.0
|
||||
com.google.protobuf:protobuf-java:3.13.0
|
||||
com.google.oauth-client:google-oauth-client:1.31.2
|
||||
com.google.protobuf:protobuf-java-util:3.14.0
|
||||
com.google.protobuf:protobuf-java:3.14.0
|
||||
com.google.re2j:re2j:1.1
|
||||
com.google.template:soy:2018-03-14
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
com.googlecode.json-simple:json-simple:1.1.1
|
||||
com.ibm.icu:icu4j:57.1
|
||||
com.jcraft:jsch:0.1.55
|
||||
com.squareup.okhttp:okhttp:2.5.0
|
||||
com.squareup.okio:okio:1.13.0
|
||||
com.sun.istack:istack-commons-runtime:3.0.7
|
||||
com.sun.xml.fastinfoset:FastInfoset:1.2.15
|
||||
com.thoughtworks.paranamer:paranamer:2.7
|
||||
com.zaxxer:HikariCP:3.4.5
|
||||
commons-codec:commons-codec:1.13
|
||||
commons-codec:commons-codec:1.15
|
||||
commons-logging:commons-logging:1.2
|
||||
dnsjava:dnsjava:2.1.7
|
||||
guru.nidi.com.kitfox:svgSalamander:1.1.3
|
||||
@@ -142,31 +154,28 @@ guru.nidi:graphviz-java-all-j2v8:0.17.0
|
||||
guru.nidi:graphviz-java:0.17.0
|
||||
io.dropwizard.metrics:metrics-core:3.2.6
|
||||
io.github.classgraph:classgraph:4.8.65
|
||||
io.grpc:grpc-all:1.27.2
|
||||
io.grpc:grpc-alts:1.32.2
|
||||
io.grpc:grpc-api:1.32.2
|
||||
io.grpc:grpc-auth:1.32.2
|
||||
io.grpc:grpc-context:1.32.2
|
||||
io.grpc:grpc-core:1.32.2
|
||||
io.grpc:grpc-grpclb:1.32.2
|
||||
io.grpc:grpc-netty-shaded:1.32.2
|
||||
io.grpc:grpc-netty:1.27.2
|
||||
io.grpc:grpc-okhttp:1.27.2
|
||||
io.grpc:grpc-protobuf-lite:1.32.2
|
||||
io.grpc:grpc-protobuf:1.32.2
|
||||
io.grpc:grpc-stub:1.32.2
|
||||
io.grpc:grpc-testing:1.27.2
|
||||
io.netty:netty-buffer:4.1.42.Final
|
||||
io.netty:netty-codec-http2:4.1.42.Final
|
||||
io.netty:netty-codec-http:4.1.42.Final
|
||||
io.netty:netty-codec-socks:4.1.42.Final
|
||||
io.netty:netty-codec:4.1.42.Final
|
||||
io.netty:netty-common:4.1.42.Final
|
||||
io.netty:netty-handler-proxy:4.1.42.Final
|
||||
io.netty:netty-handler:4.1.42.Final
|
||||
io.netty:netty-resolver:4.1.42.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.17.Final
|
||||
io.netty:netty-transport:4.1.42.Final
|
||||
io.grpc:grpc-alts:1.34.1
|
||||
io.grpc:grpc-api:1.34.1
|
||||
io.grpc:grpc-auth:1.34.1
|
||||
io.grpc:grpc-context:1.34.1
|
||||
io.grpc:grpc-core:1.34.1
|
||||
io.grpc:grpc-grpclb:1.34.1
|
||||
io.grpc:grpc-netty-shaded:1.34.1
|
||||
io.grpc:grpc-netty:1.32.2
|
||||
io.grpc:grpc-protobuf-lite:1.34.1
|
||||
io.grpc:grpc-protobuf:1.34.1
|
||||
io.grpc:grpc-stub:1.34.1
|
||||
io.netty:netty-buffer:4.1.51.Final
|
||||
io.netty:netty-codec-http2:4.1.51.Final
|
||||
io.netty:netty-codec-http:4.1.51.Final
|
||||
io.netty:netty-codec-socks:4.1.51.Final
|
||||
io.netty:netty-codec:4.1.51.Final
|
||||
io.netty:netty-common:4.1.51.Final
|
||||
io.netty:netty-handler-proxy:4.1.51.Final
|
||||
io.netty:netty-handler:4.1.51.Final
|
||||
io.netty:netty-resolver:4.1.51.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.51.Final
|
||||
io.opencensus:opencensus-api:0.24.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.24.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.24.0
|
||||
@@ -186,27 +195,27 @@ javax.validation:validation-api:1.0.0.GA
|
||||
javax.xml.bind:jaxb-api:2.3.1
|
||||
jline:jline:1.0
|
||||
joda-time:joda-time:2.10.5
|
||||
junit:junit:4.12
|
||||
junit:junit:4.13.1
|
||||
net.arnx:nashorn-promise:0.1.1
|
||||
net.bytebuddy:byte-buddy:1.10.17
|
||||
net.java.dev.jna:jna:5.5.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.23.0
|
||||
org.apache.beam:beam-model-job-management:2.23.0
|
||||
org.apache.beam:beam-model-pipeline:2.23.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.23.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.23.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.23.0
|
||||
org.apache.beam:beam-model-fn-execution:2.27.0
|
||||
org.apache.beam:beam-model-job-management:2.27.0
|
||||
org.apache.beam:beam-model-pipeline:2.27.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.27.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.27.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.27.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_10_8:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_26_0:0.3
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.5
|
||||
@@ -218,17 +227,18 @@ org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.5.0
|
||||
org.checkerframework:checker-qual:3.7.0
|
||||
org.codehaus.jackson:jackson-core-asl:1.9.13
|
||||
org.codehaus.jackson:jackson-mapper-asl:1.9.13
|
||||
org.codehaus.mojo:animal-sniffer-annotations:1.19
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.2.1
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.5.1
|
||||
org.dom4j:dom4j:2.1.3
|
||||
org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
org.hibernate:hibernate-hikaricp:5.4.23.Final
|
||||
@@ -237,7 +247,7 @@ org.jboss.logging:jboss-logging:3.4.1.Final
|
||||
org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final
|
||||
org.jboss:jandex:2.1.3.Final
|
||||
org.joda:joda-money:1.0.1
|
||||
org.json:json:20160810
|
||||
org.json:json:20200518
|
||||
org.jsoup:jsoup:1.13.1
|
||||
org.jvnet.staxex:stax-ex:1.8
|
||||
org.mortbay.jetty:jetty-util:6.1.26
|
||||
@@ -258,7 +268,7 @@ org.testcontainers:database-commons:1.15.1
|
||||
org.testcontainers:jdbc:1.15.1
|
||||
org.testcontainers:postgresql:1.15.1
|
||||
org.testcontainers:testcontainers:1.15.1
|
||||
org.threeten:threetenbp:1.4.5
|
||||
org.threeten:threetenbp:1.5.0
|
||||
org.tukaani:xz:1.8
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
|
||||
@@ -10,9 +10,10 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.10.3
|
||||
com.fasterxml.jackson.core:jackson-core:2.11.3
|
||||
com.fasterxml.jackson.core:jackson-databind:2.10.2
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.1
|
||||
com.fasterxml.jackson:jackson-bom:2.12.1
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
@@ -25,90 +26,103 @@ com.github.jnr:jnr-ffi:2.1.13
|
||||
com.github.jnr:jnr-posix:3.0.55
|
||||
com.github.jnr:jnr-unixsocket:0.30
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.github.rholder:guava-retrying:2.0.0
|
||||
com.google.android:annotations:4.1.1.4
|
||||
com.google.api-client:google-api-client-appengine:1.30.8
|
||||
com.google.api-client:google-api-client-jackson2:1.30.9
|
||||
com.google.api-client:google-api-client-java6:1.30.9
|
||||
com.google.api-client:google-api-client-jackson2:1.30.10
|
||||
com.google.api-client:google-api-client-java6:1.30.10
|
||||
com.google.api-client:google-api-client-servlet:1.30.8
|
||||
com.google.api-client:google-api-client:1.30.9
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:grpc-google-common-protos:1.17.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.85.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.1
|
||||
com.google.api-client:google-api-client:1.30.10
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.90.3
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-common-protos:1.18.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.16.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.88.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.92.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.5
|
||||
com.google.api:api-common:1.10.1
|
||||
com.google.api:gax-grpc:1.60.0
|
||||
com.google.api:gax-httpjson:0.70.1
|
||||
com.google.api:gax:1.60.0
|
||||
com.google.api:gax-grpc:1.60.1
|
||||
com.google.api:gax-httpjson:0.76.1
|
||||
com.google.api:gax:1.60.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev101-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20191211-1.30.9
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200313-1.30.9
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20200916-1.30.10
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200501-1.30.10
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200311-1.30.9
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200305-1.30.9
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200720-1.30.10
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0
|
||||
com.google.apis:google-api-services-drive:v2-rev160-1.19.1
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev60-1.22.0
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200525-1.30.9
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.30.10
|
||||
com.google.apis:google-api-services-monitoring:v3-rev426-1.23.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200312-1.30.9
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-sheets:v4-rev483-1.22.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20190827-1.30.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20200326-1.30.9
|
||||
com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10
|
||||
com.google.appengine.tools:appengine-gcs-client:0.6
|
||||
com.google.appengine.tools:appengine-mapreduce:0.9
|
||||
com.google.appengine.tools:appengine-pipeline:0.2.13
|
||||
com.google.appengine:appengine-api-1.0-sdk:1.9.81
|
||||
com.google.appengine:appengine-remote-api:1.9.81
|
||||
com.google.appengine:appengine-testing:1.9.81
|
||||
com.google.auth:google-auth-library-credentials:0.22.0
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.0
|
||||
com.google.auth:google-auth-library-credentials:0.22.2
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.2
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.3
|
||||
com.google.cloud.bigdataoss:util:2.1.3
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.13.0
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.6
|
||||
com.google.cloud.bigdataoss:util:2.1.6
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.16.0
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.0.16
|
||||
com.google.cloud:google-cloud-bigquery:1.106.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:0.125.0-beta
|
||||
com.google.cloud:google-cloud-bigtable:1.9.1
|
||||
com.google.cloud:google-cloud-core-grpc:1.92.2
|
||||
com.google.cloud:google-cloud-core-http:1.92.4
|
||||
com.google.cloud:google-cloud-core:1.92.5
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.3
|
||||
com.google.cloud:google-cloud-spanner:1.49.1
|
||||
com.google.cloud:google-cloud-bigquery:1.122.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:1.5.5
|
||||
com.google.cloud:google-cloud-bigtable:1.14.0
|
||||
com.google.cloud:google-cloud-core-grpc:1.93.9
|
||||
com.google.cloud:google-cloud-core-http:1.93.9
|
||||
com.google.cloud:google-cloud-core:1.93.9
|
||||
com.google.cloud:google-cloud-pubsub:1.110.0
|
||||
com.google.cloud:google-cloud-pubsublite:0.7.0
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.9
|
||||
com.google.cloud:google-cloud-spanner:2.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.6
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.dagger:dagger:2.28
|
||||
com.google.errorprone:error_prone_annotations:2.4.0
|
||||
com.google.errorprone:error_prone_annotations:2.5.0
|
||||
com.google.flogger:flogger-system-backend:0.5.1
|
||||
com.google.flogger:flogger:0.5.1
|
||||
com.google.flogger:google-extensions:0.5.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.2
|
||||
com.google.http-client:google-http-client-appengine:1.34.1
|
||||
com.google.http-client:google-http-client-jackson2:1.37.0
|
||||
com.google.http-client:google-http-client-appengine:1.36.0
|
||||
com.google.http-client:google-http-client-jackson2:1.38.0
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.37.0
|
||||
com.google.http-client:google-http-client:1.38.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -116,25 +130,23 @@ com.google.jsinterop:jsinterop-annotations:1.0.2
|
||||
com.google.monitoring-client:metrics:1.0.7
|
||||
com.google.monitoring-client:stackdriver:1.0.7
|
||||
com.google.oauth-client:google-oauth-client-appengine:1.30.5
|
||||
com.google.oauth-client:google-oauth-client-java6:1.30.6
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.2
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.28.0
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.30.5
|
||||
com.google.oauth-client:google-oauth-client:1.30.6
|
||||
com.google.protobuf:protobuf-java-util:3.13.0
|
||||
com.google.protobuf:protobuf-java:3.13.0
|
||||
com.google.oauth-client:google-oauth-client:1.31.2
|
||||
com.google.protobuf:protobuf-java-util:3.14.0
|
||||
com.google.protobuf:protobuf-java:3.14.0
|
||||
com.google.re2j:re2j:1.1
|
||||
com.google.template:soy:2018-03-14
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
com.googlecode.json-simple:json-simple:1.1.1
|
||||
com.ibm.icu:icu4j:57.1
|
||||
com.jcraft:jsch:0.1.55
|
||||
com.squareup.okhttp:okhttp:2.5.0
|
||||
com.squareup.okio:okio:1.13.0
|
||||
com.sun.istack:istack-commons-runtime:3.0.7
|
||||
com.sun.xml.fastinfoset:FastInfoset:1.2.15
|
||||
com.thoughtworks.paranamer:paranamer:2.7
|
||||
com.zaxxer:HikariCP:3.4.5
|
||||
commons-codec:commons-codec:1.13
|
||||
commons-codec:commons-codec:1.15
|
||||
commons-logging:commons-logging:1.2
|
||||
dnsjava:dnsjava:2.1.7
|
||||
guru.nidi.com.kitfox:svgSalamander:1.1.3
|
||||
@@ -142,31 +154,28 @@ guru.nidi:graphviz-java-all-j2v8:0.17.0
|
||||
guru.nidi:graphviz-java:0.17.0
|
||||
io.dropwizard.metrics:metrics-core:3.2.6
|
||||
io.github.classgraph:classgraph:4.8.65
|
||||
io.grpc:grpc-all:1.27.2
|
||||
io.grpc:grpc-alts:1.32.2
|
||||
io.grpc:grpc-api:1.32.2
|
||||
io.grpc:grpc-auth:1.32.2
|
||||
io.grpc:grpc-context:1.32.2
|
||||
io.grpc:grpc-core:1.32.2
|
||||
io.grpc:grpc-grpclb:1.32.2
|
||||
io.grpc:grpc-netty-shaded:1.32.2
|
||||
io.grpc:grpc-netty:1.27.2
|
||||
io.grpc:grpc-okhttp:1.27.2
|
||||
io.grpc:grpc-protobuf-lite:1.32.2
|
||||
io.grpc:grpc-protobuf:1.32.2
|
||||
io.grpc:grpc-stub:1.32.2
|
||||
io.grpc:grpc-testing:1.27.2
|
||||
io.netty:netty-buffer:4.1.42.Final
|
||||
io.netty:netty-codec-http2:4.1.42.Final
|
||||
io.netty:netty-codec-http:4.1.42.Final
|
||||
io.netty:netty-codec-socks:4.1.42.Final
|
||||
io.netty:netty-codec:4.1.42.Final
|
||||
io.netty:netty-common:4.1.42.Final
|
||||
io.netty:netty-handler-proxy:4.1.42.Final
|
||||
io.netty:netty-handler:4.1.42.Final
|
||||
io.netty:netty-resolver:4.1.42.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.17.Final
|
||||
io.netty:netty-transport:4.1.42.Final
|
||||
io.grpc:grpc-alts:1.34.1
|
||||
io.grpc:grpc-api:1.34.1
|
||||
io.grpc:grpc-auth:1.34.1
|
||||
io.grpc:grpc-context:1.34.1
|
||||
io.grpc:grpc-core:1.34.1
|
||||
io.grpc:grpc-grpclb:1.34.1
|
||||
io.grpc:grpc-netty-shaded:1.34.1
|
||||
io.grpc:grpc-netty:1.32.2
|
||||
io.grpc:grpc-protobuf-lite:1.34.1
|
||||
io.grpc:grpc-protobuf:1.34.1
|
||||
io.grpc:grpc-stub:1.34.1
|
||||
io.netty:netty-buffer:4.1.51.Final
|
||||
io.netty:netty-codec-http2:4.1.51.Final
|
||||
io.netty:netty-codec-http:4.1.51.Final
|
||||
io.netty:netty-codec-socks:4.1.51.Final
|
||||
io.netty:netty-codec:4.1.51.Final
|
||||
io.netty:netty-common:4.1.51.Final
|
||||
io.netty:netty-handler-proxy:4.1.51.Final
|
||||
io.netty:netty-handler:4.1.51.Final
|
||||
io.netty:netty-resolver:4.1.51.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.51.Final
|
||||
io.opencensus:opencensus-api:0.24.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.24.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.24.0
|
||||
@@ -186,27 +195,27 @@ javax.validation:validation-api:1.0.0.GA
|
||||
javax.xml.bind:jaxb-api:2.3.1
|
||||
jline:jline:1.0
|
||||
joda-time:joda-time:2.10.5
|
||||
junit:junit:4.12
|
||||
junit:junit:4.13.1
|
||||
net.arnx:nashorn-promise:0.1.1
|
||||
net.bytebuddy:byte-buddy:1.10.17
|
||||
net.java.dev.jna:jna:5.5.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.23.0
|
||||
org.apache.beam:beam-model-job-management:2.23.0
|
||||
org.apache.beam:beam-model-pipeline:2.23.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.23.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.23.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.23.0
|
||||
org.apache.beam:beam-model-fn-execution:2.27.0
|
||||
org.apache.beam:beam-model-job-management:2.27.0
|
||||
org.apache.beam:beam-model-pipeline:2.27.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.27.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.27.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.27.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_10_8:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_26_0:0.3
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.5
|
||||
@@ -218,17 +227,18 @@ org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.5.0
|
||||
org.checkerframework:checker-qual:3.7.0
|
||||
org.codehaus.jackson:jackson-core-asl:1.9.13
|
||||
org.codehaus.jackson:jackson-mapper-asl:1.9.13
|
||||
org.codehaus.mojo:animal-sniffer-annotations:1.19
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.2.1
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.5.1
|
||||
org.dom4j:dom4j:2.1.3
|
||||
org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
org.hibernate:hibernate-hikaricp:5.4.23.Final
|
||||
@@ -237,7 +247,7 @@ org.jboss.logging:jboss-logging:3.4.1.Final
|
||||
org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final
|
||||
org.jboss:jandex:2.1.3.Final
|
||||
org.joda:joda-money:1.0.1
|
||||
org.json:json:20160810
|
||||
org.json:json:20200518
|
||||
org.jsoup:jsoup:1.13.1
|
||||
org.jvnet.staxex:stax-ex:1.8
|
||||
org.mortbay.jetty:jetty-util:6.1.26
|
||||
@@ -258,7 +268,7 @@ org.testcontainers:database-commons:1.15.1
|
||||
org.testcontainers:jdbc:1.15.1
|
||||
org.testcontainers:postgresql:1.15.1
|
||||
org.testcontainers:testcontainers:1.15.1
|
||||
org.threeten:threetenbp:1.4.5
|
||||
org.threeten:threetenbp:1.5.0
|
||||
org.tukaani:xz:1.8
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
|
||||
@@ -10,9 +10,10 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.10.3
|
||||
com.fasterxml.jackson.core:jackson-core:2.11.3
|
||||
com.fasterxml.jackson.core:jackson-databind:2.10.2
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.1
|
||||
com.fasterxml.jackson:jackson-bom:2.12.1
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
@@ -25,90 +26,103 @@ com.github.jnr:jnr-ffi:2.1.13
|
||||
com.github.jnr:jnr-posix:3.0.55
|
||||
com.github.jnr:jnr-unixsocket:0.30
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.github.rholder:guava-retrying:2.0.0
|
||||
com.google.android:annotations:4.1.1.4
|
||||
com.google.api-client:google-api-client-appengine:1.30.8
|
||||
com.google.api-client:google-api-client-jackson2:1.30.9
|
||||
com.google.api-client:google-api-client-java6:1.30.9
|
||||
com.google.api-client:google-api-client-jackson2:1.30.10
|
||||
com.google.api-client:google-api-client-java6:1.30.10
|
||||
com.google.api-client:google-api-client-servlet:1.30.8
|
||||
com.google.api-client:google-api-client:1.30.9
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:grpc-google-common-protos:1.17.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.85.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.1
|
||||
com.google.api-client:google-api-client:1.30.10
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.90.3
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-common-protos:1.18.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.16.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.88.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.92.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.5
|
||||
com.google.api:api-common:1.10.1
|
||||
com.google.api:gax-grpc:1.60.0
|
||||
com.google.api:gax-httpjson:0.70.1
|
||||
com.google.api:gax:1.60.0
|
||||
com.google.api:gax-grpc:1.60.1
|
||||
com.google.api:gax-httpjson:0.76.1
|
||||
com.google.api:gax:1.60.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev101-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20191211-1.30.9
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200313-1.30.9
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20200916-1.30.10
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200501-1.30.10
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200311-1.30.9
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200305-1.30.9
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200720-1.30.10
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0
|
||||
com.google.apis:google-api-services-drive:v2-rev160-1.19.1
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev60-1.22.0
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200525-1.30.9
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.30.10
|
||||
com.google.apis:google-api-services-monitoring:v3-rev426-1.23.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200312-1.30.9
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-sheets:v4-rev483-1.22.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20190827-1.30.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20200326-1.30.9
|
||||
com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10
|
||||
com.google.appengine.tools:appengine-gcs-client:0.6
|
||||
com.google.appengine.tools:appengine-mapreduce:0.9
|
||||
com.google.appengine.tools:appengine-pipeline:0.2.13
|
||||
com.google.appengine:appengine-api-1.0-sdk:1.9.81
|
||||
com.google.appengine:appengine-remote-api:1.9.81
|
||||
com.google.appengine:appengine-testing:1.9.81
|
||||
com.google.auth:google-auth-library-credentials:0.22.0
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.0
|
||||
com.google.auth:google-auth-library-credentials:0.22.2
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.2
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.3
|
||||
com.google.cloud.bigdataoss:util:2.1.3
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.13.0
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.6
|
||||
com.google.cloud.bigdataoss:util:2.1.6
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.16.0
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.0.16
|
||||
com.google.cloud:google-cloud-bigquery:1.106.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:0.125.0-beta
|
||||
com.google.cloud:google-cloud-bigtable:1.9.1
|
||||
com.google.cloud:google-cloud-core-grpc:1.92.2
|
||||
com.google.cloud:google-cloud-core-http:1.92.4
|
||||
com.google.cloud:google-cloud-core:1.92.5
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.3
|
||||
com.google.cloud:google-cloud-spanner:1.49.1
|
||||
com.google.cloud:google-cloud-bigquery:1.122.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:1.5.5
|
||||
com.google.cloud:google-cloud-bigtable:1.14.0
|
||||
com.google.cloud:google-cloud-core-grpc:1.93.9
|
||||
com.google.cloud:google-cloud-core-http:1.93.9
|
||||
com.google.cloud:google-cloud-core:1.93.9
|
||||
com.google.cloud:google-cloud-pubsub:1.110.0
|
||||
com.google.cloud:google-cloud-pubsublite:0.7.0
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.9
|
||||
com.google.cloud:google-cloud-spanner:2.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.6
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.dagger:dagger:2.28
|
||||
com.google.errorprone:error_prone_annotations:2.4.0
|
||||
com.google.errorprone:error_prone_annotations:2.5.0
|
||||
com.google.flogger:flogger-system-backend:0.5.1
|
||||
com.google.flogger:flogger:0.5.1
|
||||
com.google.flogger:google-extensions:0.5.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.2
|
||||
com.google.http-client:google-http-client-appengine:1.34.1
|
||||
com.google.http-client:google-http-client-jackson2:1.37.0
|
||||
com.google.http-client:google-http-client-appengine:1.36.0
|
||||
com.google.http-client:google-http-client-jackson2:1.38.0
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.37.0
|
||||
com.google.http-client:google-http-client:1.38.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -116,25 +130,23 @@ com.google.jsinterop:jsinterop-annotations:1.0.2
|
||||
com.google.monitoring-client:metrics:1.0.7
|
||||
com.google.monitoring-client:stackdriver:1.0.7
|
||||
com.google.oauth-client:google-oauth-client-appengine:1.30.5
|
||||
com.google.oauth-client:google-oauth-client-java6:1.30.6
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.2
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.28.0
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.30.5
|
||||
com.google.oauth-client:google-oauth-client:1.30.6
|
||||
com.google.protobuf:protobuf-java-util:3.13.0
|
||||
com.google.protobuf:protobuf-java:3.13.0
|
||||
com.google.oauth-client:google-oauth-client:1.31.2
|
||||
com.google.protobuf:protobuf-java-util:3.14.0
|
||||
com.google.protobuf:protobuf-java:3.14.0
|
||||
com.google.re2j:re2j:1.1
|
||||
com.google.template:soy:2018-03-14
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
com.googlecode.json-simple:json-simple:1.1.1
|
||||
com.ibm.icu:icu4j:57.1
|
||||
com.jcraft:jsch:0.1.55
|
||||
com.squareup.okhttp:okhttp:2.5.0
|
||||
com.squareup.okio:okio:1.13.0
|
||||
com.sun.istack:istack-commons-runtime:3.0.7
|
||||
com.sun.xml.fastinfoset:FastInfoset:1.2.15
|
||||
com.thoughtworks.paranamer:paranamer:2.7
|
||||
com.zaxxer:HikariCP:3.4.5
|
||||
commons-codec:commons-codec:1.13
|
||||
commons-codec:commons-codec:1.15
|
||||
commons-logging:commons-logging:1.2
|
||||
dnsjava:dnsjava:2.1.7
|
||||
guru.nidi.com.kitfox:svgSalamander:1.1.3
|
||||
@@ -142,31 +154,28 @@ guru.nidi:graphviz-java-all-j2v8:0.17.0
|
||||
guru.nidi:graphviz-java:0.17.0
|
||||
io.dropwizard.metrics:metrics-core:3.2.6
|
||||
io.github.classgraph:classgraph:4.8.65
|
||||
io.grpc:grpc-all:1.27.2
|
||||
io.grpc:grpc-alts:1.32.2
|
||||
io.grpc:grpc-api:1.32.2
|
||||
io.grpc:grpc-auth:1.32.2
|
||||
io.grpc:grpc-context:1.32.2
|
||||
io.grpc:grpc-core:1.32.2
|
||||
io.grpc:grpc-grpclb:1.32.2
|
||||
io.grpc:grpc-netty-shaded:1.32.2
|
||||
io.grpc:grpc-netty:1.27.2
|
||||
io.grpc:grpc-okhttp:1.27.2
|
||||
io.grpc:grpc-protobuf-lite:1.32.2
|
||||
io.grpc:grpc-protobuf:1.32.2
|
||||
io.grpc:grpc-stub:1.32.2
|
||||
io.grpc:grpc-testing:1.27.2
|
||||
io.netty:netty-buffer:4.1.42.Final
|
||||
io.netty:netty-codec-http2:4.1.42.Final
|
||||
io.netty:netty-codec-http:4.1.42.Final
|
||||
io.netty:netty-codec-socks:4.1.42.Final
|
||||
io.netty:netty-codec:4.1.42.Final
|
||||
io.netty:netty-common:4.1.42.Final
|
||||
io.netty:netty-handler-proxy:4.1.42.Final
|
||||
io.netty:netty-handler:4.1.42.Final
|
||||
io.netty:netty-resolver:4.1.42.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.17.Final
|
||||
io.netty:netty-transport:4.1.42.Final
|
||||
io.grpc:grpc-alts:1.34.1
|
||||
io.grpc:grpc-api:1.34.1
|
||||
io.grpc:grpc-auth:1.34.1
|
||||
io.grpc:grpc-context:1.34.1
|
||||
io.grpc:grpc-core:1.34.1
|
||||
io.grpc:grpc-grpclb:1.34.1
|
||||
io.grpc:grpc-netty-shaded:1.34.1
|
||||
io.grpc:grpc-netty:1.32.2
|
||||
io.grpc:grpc-protobuf-lite:1.34.1
|
||||
io.grpc:grpc-protobuf:1.34.1
|
||||
io.grpc:grpc-stub:1.34.1
|
||||
io.netty:netty-buffer:4.1.51.Final
|
||||
io.netty:netty-codec-http2:4.1.51.Final
|
||||
io.netty:netty-codec-http:4.1.51.Final
|
||||
io.netty:netty-codec-socks:4.1.51.Final
|
||||
io.netty:netty-codec:4.1.51.Final
|
||||
io.netty:netty-common:4.1.51.Final
|
||||
io.netty:netty-handler-proxy:4.1.51.Final
|
||||
io.netty:netty-handler:4.1.51.Final
|
||||
io.netty:netty-resolver:4.1.51.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.51.Final
|
||||
io.opencensus:opencensus-api:0.24.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.24.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.24.0
|
||||
@@ -186,27 +195,27 @@ javax.validation:validation-api:1.0.0.GA
|
||||
javax.xml.bind:jaxb-api:2.3.1
|
||||
jline:jline:1.0
|
||||
joda-time:joda-time:2.10.5
|
||||
junit:junit:4.12
|
||||
junit:junit:4.13.1
|
||||
net.arnx:nashorn-promise:0.1.1
|
||||
net.bytebuddy:byte-buddy:1.10.17
|
||||
net.java.dev.jna:jna:5.5.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.23.0
|
||||
org.apache.beam:beam-model-job-management:2.23.0
|
||||
org.apache.beam:beam-model-pipeline:2.23.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.23.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.23.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.23.0
|
||||
org.apache.beam:beam-model-fn-execution:2.27.0
|
||||
org.apache.beam:beam-model-job-management:2.27.0
|
||||
org.apache.beam:beam-model-pipeline:2.27.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.27.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.27.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.27.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_10_8:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_26_0:0.3
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.5
|
||||
@@ -218,17 +227,18 @@ org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.5.0
|
||||
org.checkerframework:checker-qual:3.7.0
|
||||
org.codehaus.jackson:jackson-core-asl:1.9.13
|
||||
org.codehaus.jackson:jackson-mapper-asl:1.9.13
|
||||
org.codehaus.mojo:animal-sniffer-annotations:1.19
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.2.1
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.5.1
|
||||
org.dom4j:dom4j:2.1.3
|
||||
org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
org.hibernate:hibernate-hikaricp:5.4.23.Final
|
||||
@@ -237,7 +247,7 @@ org.jboss.logging:jboss-logging:3.4.1.Final
|
||||
org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final
|
||||
org.jboss:jandex:2.1.3.Final
|
||||
org.joda:joda-money:1.0.1
|
||||
org.json:json:20160810
|
||||
org.json:json:20200518
|
||||
org.jsoup:jsoup:1.13.1
|
||||
org.jvnet.staxex:stax-ex:1.8
|
||||
org.mortbay.jetty:jetty-util:6.1.26
|
||||
@@ -258,7 +268,7 @@ org.testcontainers:database-commons:1.15.1
|
||||
org.testcontainers:jdbc:1.15.1
|
||||
org.testcontainers:postgresql:1.15.1
|
||||
org.testcontainers:testcontainers:1.15.1
|
||||
org.threeten:threetenbp:1.4.5
|
||||
org.threeten:threetenbp:1.5.0
|
||||
org.tukaani:xz:1.8
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
|
||||
@@ -10,9 +10,10 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.10.3
|
||||
com.fasterxml.jackson.core:jackson-core:2.11.3
|
||||
com.fasterxml.jackson.core:jackson-databind:2.10.2
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.1
|
||||
com.fasterxml.jackson:jackson-bom:2.12.1
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
@@ -25,91 +26,104 @@ com.github.jnr:jnr-ffi:2.1.13
|
||||
com.github.jnr:jnr-posix:3.0.55
|
||||
com.github.jnr:jnr-unixsocket:0.30
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.github.rholder:guava-retrying:2.0.0
|
||||
com.google.android:annotations:4.1.1.4
|
||||
com.google.api-client:google-api-client-appengine:1.30.8
|
||||
com.google.api-client:google-api-client-jackson2:1.30.9
|
||||
com.google.api-client:google-api-client-java6:1.30.9
|
||||
com.google.api-client:google-api-client-jackson2:1.30.10
|
||||
com.google.api-client:google-api-client-java6:1.30.10
|
||||
com.google.api-client:google-api-client-servlet:1.30.8
|
||||
com.google.api-client:google-api-client:1.30.9
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:grpc-google-common-protos:1.17.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.85.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.1
|
||||
com.google.api-client:google-api-client:1.30.10
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.90.3
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-common-protos:1.18.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.16.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.88.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.92.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.5
|
||||
com.google.api:api-common:1.10.1
|
||||
com.google.api:gax-grpc:1.60.0
|
||||
com.google.api:gax-httpjson:0.70.1
|
||||
com.google.api:gax:1.60.0
|
||||
com.google.api:gax-grpc:1.60.1
|
||||
com.google.api:gax-httpjson:0.76.1
|
||||
com.google.api:gax:1.60.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev101-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20191211-1.30.9
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200313-1.30.9
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20200916-1.30.10
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200501-1.30.10
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200311-1.30.9
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200305-1.30.9
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200720-1.30.10
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0
|
||||
com.google.apis:google-api-services-drive:v2-rev160-1.19.1
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev60-1.22.0
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200525-1.30.9
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.30.10
|
||||
com.google.apis:google-api-services-monitoring:v3-rev426-1.23.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200312-1.30.9
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-sheets:v4-rev483-1.22.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20190827-1.30.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20200326-1.30.9
|
||||
com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10
|
||||
com.google.appengine.tools:appengine-gcs-client:0.6
|
||||
com.google.appengine.tools:appengine-mapreduce:0.9
|
||||
com.google.appengine.tools:appengine-pipeline:0.2.13
|
||||
com.google.appengine:appengine-api-1.0-sdk:1.9.81
|
||||
com.google.appengine:appengine-remote-api:1.9.81
|
||||
com.google.appengine:appengine-testing:1.9.81
|
||||
com.google.auth:google-auth-library-credentials:0.22.0
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.0
|
||||
com.google.auth:google-auth-library-credentials:0.22.2
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.2
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.3
|
||||
com.google.cloud.bigdataoss:util:2.1.3
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.13.0
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.6
|
||||
com.google.cloud.bigdataoss:util:2.1.6
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.16.0
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.0.16
|
||||
com.google.cloud.sql:postgres-socket-factory:1.0.16
|
||||
com.google.cloud:google-cloud-bigquery:1.106.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:0.125.0-beta
|
||||
com.google.cloud:google-cloud-bigtable:1.9.1
|
||||
com.google.cloud:google-cloud-core-grpc:1.92.2
|
||||
com.google.cloud:google-cloud-core-http:1.92.4
|
||||
com.google.cloud:google-cloud-core:1.92.5
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.3
|
||||
com.google.cloud:google-cloud-spanner:1.49.1
|
||||
com.google.cloud:google-cloud-bigquery:1.122.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:1.5.5
|
||||
com.google.cloud:google-cloud-bigtable:1.14.0
|
||||
com.google.cloud:google-cloud-core-grpc:1.93.9
|
||||
com.google.cloud:google-cloud-core-http:1.93.9
|
||||
com.google.cloud:google-cloud-core:1.93.9
|
||||
com.google.cloud:google-cloud-pubsub:1.110.0
|
||||
com.google.cloud:google-cloud-pubsublite:0.7.0
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.9
|
||||
com.google.cloud:google-cloud-spanner:2.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.6
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.dagger:dagger:2.28
|
||||
com.google.errorprone:error_prone_annotations:2.4.0
|
||||
com.google.errorprone:error_prone_annotations:2.5.0
|
||||
com.google.flogger:flogger-system-backend:0.5.1
|
||||
com.google.flogger:flogger:0.5.1
|
||||
com.google.flogger:google-extensions:0.5.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.2
|
||||
com.google.http-client:google-http-client-appengine:1.34.1
|
||||
com.google.http-client:google-http-client-jackson2:1.37.0
|
||||
com.google.http-client:google-http-client-appengine:1.36.0
|
||||
com.google.http-client:google-http-client-jackson2:1.38.0
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.37.0
|
||||
com.google.http-client:google-http-client:1.38.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -117,25 +131,23 @@ com.google.jsinterop:jsinterop-annotations:1.0.2
|
||||
com.google.monitoring-client:metrics:1.0.7
|
||||
com.google.monitoring-client:stackdriver:1.0.7
|
||||
com.google.oauth-client:google-oauth-client-appengine:1.30.5
|
||||
com.google.oauth-client:google-oauth-client-java6:1.30.6
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.2
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.28.0
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.30.5
|
||||
com.google.oauth-client:google-oauth-client:1.30.6
|
||||
com.google.protobuf:protobuf-java-util:3.13.0
|
||||
com.google.protobuf:protobuf-java:3.13.0
|
||||
com.google.oauth-client:google-oauth-client:1.31.2
|
||||
com.google.protobuf:protobuf-java-util:3.14.0
|
||||
com.google.protobuf:protobuf-java:3.14.0
|
||||
com.google.re2j:re2j:1.1
|
||||
com.google.template:soy:2018-03-14
|
||||
com.googlecode.charts4j:charts4j:1.3
|
||||
com.googlecode.json-simple:json-simple:1.1.1
|
||||
com.ibm.icu:icu4j:57.1
|
||||
com.jcraft:jsch:0.1.55
|
||||
com.squareup.okhttp:okhttp:2.5.0
|
||||
com.squareup.okio:okio:1.13.0
|
||||
com.sun.istack:istack-commons-runtime:3.0.7
|
||||
com.sun.xml.fastinfoset:FastInfoset:1.2.15
|
||||
com.thoughtworks.paranamer:paranamer:2.7
|
||||
com.zaxxer:HikariCP:3.4.5
|
||||
commons-codec:commons-codec:1.13
|
||||
commons-codec:commons-codec:1.15
|
||||
commons-logging:commons-logging:1.2
|
||||
dnsjava:dnsjava:2.1.7
|
||||
guru.nidi.com.kitfox:svgSalamander:1.1.3
|
||||
@@ -143,31 +155,28 @@ guru.nidi:graphviz-java-all-j2v8:0.17.0
|
||||
guru.nidi:graphviz-java:0.17.0
|
||||
io.dropwizard.metrics:metrics-core:3.2.6
|
||||
io.github.classgraph:classgraph:4.8.65
|
||||
io.grpc:grpc-all:1.27.2
|
||||
io.grpc:grpc-alts:1.32.2
|
||||
io.grpc:grpc-api:1.32.2
|
||||
io.grpc:grpc-auth:1.32.2
|
||||
io.grpc:grpc-context:1.32.2
|
||||
io.grpc:grpc-core:1.32.2
|
||||
io.grpc:grpc-grpclb:1.32.2
|
||||
io.grpc:grpc-netty-shaded:1.32.2
|
||||
io.grpc:grpc-netty:1.27.2
|
||||
io.grpc:grpc-okhttp:1.27.2
|
||||
io.grpc:grpc-protobuf-lite:1.32.2
|
||||
io.grpc:grpc-protobuf:1.32.2
|
||||
io.grpc:grpc-stub:1.32.2
|
||||
io.grpc:grpc-testing:1.27.2
|
||||
io.netty:netty-buffer:4.1.42.Final
|
||||
io.netty:netty-codec-http2:4.1.42.Final
|
||||
io.netty:netty-codec-http:4.1.42.Final
|
||||
io.netty:netty-codec-socks:4.1.42.Final
|
||||
io.netty:netty-codec:4.1.42.Final
|
||||
io.netty:netty-common:4.1.42.Final
|
||||
io.netty:netty-handler-proxy:4.1.42.Final
|
||||
io.netty:netty-handler:4.1.42.Final
|
||||
io.netty:netty-resolver:4.1.42.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.17.Final
|
||||
io.netty:netty-transport:4.1.42.Final
|
||||
io.grpc:grpc-alts:1.34.1
|
||||
io.grpc:grpc-api:1.34.1
|
||||
io.grpc:grpc-auth:1.34.1
|
||||
io.grpc:grpc-context:1.34.1
|
||||
io.grpc:grpc-core:1.34.1
|
||||
io.grpc:grpc-grpclb:1.34.1
|
||||
io.grpc:grpc-netty-shaded:1.34.1
|
||||
io.grpc:grpc-netty:1.32.2
|
||||
io.grpc:grpc-protobuf-lite:1.34.1
|
||||
io.grpc:grpc-protobuf:1.34.1
|
||||
io.grpc:grpc-stub:1.34.1
|
||||
io.netty:netty-buffer:4.1.51.Final
|
||||
io.netty:netty-codec-http2:4.1.51.Final
|
||||
io.netty:netty-codec-http:4.1.51.Final
|
||||
io.netty:netty-codec-socks:4.1.51.Final
|
||||
io.netty:netty-codec:4.1.51.Final
|
||||
io.netty:netty-common:4.1.51.Final
|
||||
io.netty:netty-handler-proxy:4.1.51.Final
|
||||
io.netty:netty-handler:4.1.51.Final
|
||||
io.netty:netty-resolver:4.1.51.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.51.Final
|
||||
io.opencensus:opencensus-api:0.24.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.24.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.24.0
|
||||
@@ -191,22 +200,22 @@ net.arnx:nashorn-promise:0.1.1
|
||||
net.bytebuddy:byte-buddy:1.10.17
|
||||
net.java.dev.jna:jna:5.5.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.23.0
|
||||
org.apache.beam:beam-model-job-management:2.23.0
|
||||
org.apache.beam:beam-model-pipeline:2.23.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.23.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.23.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.23.0
|
||||
org.apache.beam:beam-model-fn-execution:2.27.0
|
||||
org.apache.beam:beam-model-job-management:2.27.0
|
||||
org.apache.beam:beam-model-pipeline:2.27.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.27.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.27.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.27.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_10_8:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_26_0:0.3
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.5
|
||||
@@ -218,16 +227,18 @@ org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.5.0
|
||||
org.checkerframework:checker-qual:3.7.0
|
||||
org.codehaus.jackson:jackson-core-asl:1.9.13
|
||||
org.codehaus.jackson:jackson-mapper-asl:1.9.13
|
||||
org.codehaus.mojo:animal-sniffer-annotations:1.19
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.2.1
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.5.1
|
||||
org.dom4j:dom4j:2.1.3
|
||||
org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-core:2.1
|
||||
org.hamcrest:hamcrest:2.1
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
org.hibernate:hibernate-hikaricp:5.4.23.Final
|
||||
@@ -236,7 +247,7 @@ org.jboss.logging:jboss-logging:3.4.1.Final
|
||||
org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final
|
||||
org.jboss:jandex:2.1.3.Final
|
||||
org.joda:joda-money:1.0.1
|
||||
org.json:json:20160810
|
||||
org.json:json:20200518
|
||||
org.jsoup:jsoup:1.13.1
|
||||
org.jvnet.staxex:stax-ex:1.8
|
||||
org.mortbay.jetty:jetty-util:6.1.26
|
||||
@@ -258,7 +269,7 @@ org.testcontainers:database-commons:1.15.1
|
||||
org.testcontainers:jdbc:1.15.1
|
||||
org.testcontainers:postgresql:1.15.1
|
||||
org.testcontainers:testcontainers:1.15.1
|
||||
org.threeten:threetenbp:1.4.5
|
||||
org.threeten:threetenbp:1.5.0
|
||||
org.tukaani:xz:1.8
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# This file is expected to be part of source control.
|
||||
com.github.ben-manes.caffeine:caffeine:2.7.0
|
||||
com.github.kevinstern:software-and-algorithms:1.0
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.auto:auto-common:0.10
|
||||
com.google.code.findbugs:jFormatString:3.0.0
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
@@ -19,7 +19,7 @@ com.google.errorprone:error_prone_type_annotations:2.3.4
|
||||
com.google.errorprone:javac-shaded:9-dev-r4023-3
|
||||
com.google.googlejavaformat:google-java-format:1.5
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
com.google.protobuf:protobuf-java:3.4.0
|
||||
|
||||
@@ -6,9 +6,10 @@ aopalliance:aopalliance:1.0
|
||||
args4j:args4j:2.33
|
||||
cglib:cglib-nodep:2.2
|
||||
com.beust:jcommander:1.60
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.11.2
|
||||
com.fasterxml.jackson.core:jackson-core:2.11.3
|
||||
com.fasterxml.jackson.core:jackson-databind:2.11.2
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.1
|
||||
com.fasterxml.jackson:jackson-bom:2.12.1
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
@@ -21,51 +22,61 @@ com.github.jnr:jnr-ffi:2.1.13
|
||||
com.github.jnr:jnr-posix:3.0.55
|
||||
com.github.jnr:jnr-unixsocket:0.30
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.github.rholder:guava-retrying:2.0.0
|
||||
com.google.android:annotations:4.1.1.4
|
||||
com.google.api-client:google-api-client-appengine:1.30.8
|
||||
com.google.api-client:google-api-client-jackson2:1.30.9
|
||||
com.google.api-client:google-api-client-java6:1.30.9
|
||||
com.google.api-client:google-api-client-jackson2:1.30.10
|
||||
com.google.api-client:google-api-client-java6:1.30.10
|
||||
com.google.api-client:google-api-client-servlet:1.30.8
|
||||
com.google.api-client:google-api-client:1.30.9
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:grpc-google-common-protos:1.17.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.85.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.1
|
||||
com.google.api-client:google-api-client:1.30.10
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.90.3
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-common-protos:1.18.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.16.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.88.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.92.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.5
|
||||
com.google.api:api-common:1.10.1
|
||||
com.google.api:gax-grpc:1.60.0
|
||||
com.google.api:gax-httpjson:0.70.1
|
||||
com.google.api:gax:1.60.0
|
||||
com.google.api:gax-grpc:1.60.1
|
||||
com.google.api:gax-httpjson:0.76.1
|
||||
com.google.api:gax:1.60.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev101-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20191211-1.30.9
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200313-1.30.9
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20200916-1.30.10
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200501-1.30.10
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200311-1.30.9
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200305-1.30.9
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200720-1.30.10
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0
|
||||
com.google.apis:google-api-services-drive:v2-rev160-1.19.1
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev60-1.22.0
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200525-1.30.9
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.30.10
|
||||
com.google.apis:google-api-services-monitoring:v3-rev426-1.23.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200312-1.30.9
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-sheets:v4-rev483-1.22.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20190827-1.30.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20200326-1.30.9
|
||||
com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10
|
||||
com.google.appengine.tools:appengine-gcs-client:0.6
|
||||
com.google.appengine.tools:appengine-mapreduce:0.9
|
||||
com.google.appengine.tools:appengine-pipeline:0.2.13
|
||||
@@ -73,40 +84,43 @@ com.google.appengine:appengine-api-1.0-sdk:1.9.81
|
||||
com.google.appengine:appengine-api-stubs:1.9.81
|
||||
com.google.appengine:appengine-remote-api:1.9.81
|
||||
com.google.appengine:appengine-testing:1.9.81
|
||||
com.google.auth:google-auth-library-credentials:0.22.0
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.0
|
||||
com.google.auth:google-auth-library-credentials:0.22.2
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.2
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.3
|
||||
com.google.cloud.bigdataoss:util:2.1.3
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.13.0
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.6
|
||||
com.google.cloud.bigdataoss:util:2.1.6
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.16.0
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.0.16
|
||||
com.google.cloud:google-cloud-bigquery:1.106.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:0.125.0-beta
|
||||
com.google.cloud:google-cloud-bigtable:1.9.1
|
||||
com.google.cloud:google-cloud-core-grpc:1.92.2
|
||||
com.google.cloud:google-cloud-core-http:1.92.4
|
||||
com.google.cloud:google-cloud-core:1.92.5
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.3
|
||||
com.google.cloud:google-cloud-spanner:1.49.1
|
||||
com.google.cloud:google-cloud-bigquery:1.122.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:1.5.5
|
||||
com.google.cloud:google-cloud-bigtable:1.14.0
|
||||
com.google.cloud:google-cloud-core-grpc:1.93.9
|
||||
com.google.cloud:google-cloud-core-http:1.93.9
|
||||
com.google.cloud:google-cloud-core:1.93.9
|
||||
com.google.cloud:google-cloud-pubsub:1.110.0
|
||||
com.google.cloud:google-cloud-pubsublite:0.7.0
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.9
|
||||
com.google.cloud:google-cloud-spanner:2.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.6
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.dagger:dagger:2.28
|
||||
com.google.errorprone:error_prone_annotations:2.4.0
|
||||
com.google.errorprone:error_prone_annotations:2.5.0
|
||||
com.google.flogger:flogger-system-backend:0.5.1
|
||||
com.google.flogger:flogger:0.5.1
|
||||
com.google.flogger:google-extensions:0.5.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava-testlib:30.0-jre
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava-testlib:30.1-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.2
|
||||
com.google.http-client:google-http-client-appengine:1.34.1
|
||||
com.google.http-client:google-http-client-jackson2:1.37.0
|
||||
com.google.http-client:google-http-client-appengine:1.36.0
|
||||
com.google.http-client:google-http-client-jackson2:1.38.0
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.37.0
|
||||
com.google.http-client:google-http-client:1.38.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -115,12 +129,12 @@ com.google.monitoring-client:contrib:1.0.7
|
||||
com.google.monitoring-client:metrics:1.0.7
|
||||
com.google.monitoring-client:stackdriver:1.0.7
|
||||
com.google.oauth-client:google-oauth-client-appengine:1.30.5
|
||||
com.google.oauth-client:google-oauth-client-java6:1.30.6
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.2
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.28.0
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.30.5
|
||||
com.google.oauth-client:google-oauth-client:1.30.6
|
||||
com.google.protobuf:protobuf-java-util:3.13.0
|
||||
com.google.protobuf:protobuf-java:3.13.0
|
||||
com.google.oauth-client:google-oauth-client:1.31.2
|
||||
com.google.protobuf:protobuf-java-util:3.14.0
|
||||
com.google.protobuf:protobuf-java:3.14.0
|
||||
com.google.re2j:re2j:1.1
|
||||
com.google.template:soy:2018-03-14
|
||||
com.google.truth.extensions:truth-java8-extension:1.0
|
||||
@@ -131,43 +145,39 @@ com.googlecode.json-simple:json-simple:1.1.1
|
||||
com.ibm.icu:icu4j:57.1
|
||||
com.jcraft:jsch:0.1.55
|
||||
com.squareup.okhttp3:okhttp:3.11.0
|
||||
com.squareup.okhttp:okhttp:2.5.0
|
||||
com.squareup.okio:okio:1.14.0
|
||||
com.sun.istack:istack-commons-runtime:3.0.7
|
||||
com.sun.xml.fastinfoset:FastInfoset:1.2.15
|
||||
com.thoughtworks.paranamer:paranamer:2.7
|
||||
com.thoughtworks.qdox:qdox:1.12.1
|
||||
com.zaxxer:HikariCP:3.4.5
|
||||
commons-codec:commons-codec:1.13
|
||||
commons-codec:commons-codec:1.15
|
||||
commons-logging:commons-logging:1.2
|
||||
dnsjava:dnsjava:2.1.7
|
||||
io.dropwizard.metrics:metrics-core:3.2.6
|
||||
io.github.classgraph:classgraph:4.8.65
|
||||
io.grpc:grpc-all:1.27.2
|
||||
io.grpc:grpc-alts:1.32.2
|
||||
io.grpc:grpc-api:1.32.2
|
||||
io.grpc:grpc-auth:1.32.2
|
||||
io.grpc:grpc-context:1.32.2
|
||||
io.grpc:grpc-core:1.32.2
|
||||
io.grpc:grpc-grpclb:1.32.2
|
||||
io.grpc:grpc-netty-shaded:1.32.2
|
||||
io.grpc:grpc-netty:1.27.2
|
||||
io.grpc:grpc-okhttp:1.27.2
|
||||
io.grpc:grpc-protobuf-lite:1.32.2
|
||||
io.grpc:grpc-protobuf:1.32.2
|
||||
io.grpc:grpc-stub:1.32.2
|
||||
io.grpc:grpc-testing:1.27.2
|
||||
io.netty:netty-buffer:4.1.42.Final
|
||||
io.netty:netty-codec-http2:4.1.42.Final
|
||||
io.netty:netty-codec-http:4.1.42.Final
|
||||
io.netty:netty-codec-socks:4.1.42.Final
|
||||
io.netty:netty-codec:4.1.42.Final
|
||||
io.netty:netty-common:4.1.42.Final
|
||||
io.netty:netty-handler-proxy:4.1.42.Final
|
||||
io.netty:netty-handler:4.1.42.Final
|
||||
io.netty:netty-resolver:4.1.42.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.17.Final
|
||||
io.netty:netty-transport:4.1.42.Final
|
||||
io.grpc:grpc-alts:1.34.1
|
||||
io.grpc:grpc-api:1.34.1
|
||||
io.grpc:grpc-auth:1.34.1
|
||||
io.grpc:grpc-context:1.34.1
|
||||
io.grpc:grpc-core:1.34.1
|
||||
io.grpc:grpc-grpclb:1.34.1
|
||||
io.grpc:grpc-netty-shaded:1.34.1
|
||||
io.grpc:grpc-netty:1.32.2
|
||||
io.grpc:grpc-protobuf-lite:1.34.1
|
||||
io.grpc:grpc-protobuf:1.34.1
|
||||
io.grpc:grpc-stub:1.34.1
|
||||
io.netty:netty-buffer:4.1.51.Final
|
||||
io.netty:netty-codec-http2:4.1.51.Final
|
||||
io.netty:netty-codec-http:4.1.51.Final
|
||||
io.netty:netty-codec-socks:4.1.51.Final
|
||||
io.netty:netty-codec:4.1.51.Final
|
||||
io.netty:netty-common:4.1.51.Final
|
||||
io.netty:netty-handler-proxy:4.1.51.Final
|
||||
io.netty:netty-handler:4.1.51.Final
|
||||
io.netty:netty-resolver:4.1.51.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.51.Final
|
||||
io.opencensus:opencensus-api:0.24.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.24.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.24.0
|
||||
@@ -187,28 +197,28 @@ javax.validation:validation-api:1.0.0.GA
|
||||
javax.xml.bind:jaxb-api:2.3.1
|
||||
jline:jline:1.0
|
||||
joda-time:joda-time:2.10.5
|
||||
junit:junit:4.13
|
||||
junit:junit:4.13.1
|
||||
net.bytebuddy:byte-buddy-agent:1.10.5
|
||||
net.bytebuddy:byte-buddy:1.10.17
|
||||
net.java.dev.jna:jna:5.5.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.23.0
|
||||
org.apache.beam:beam-model-job-management:2.23.0
|
||||
org.apache.beam:beam-model-pipeline:2.23.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.23.0
|
||||
org.apache.beam:beam-runners-direct-java:2.23.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.23.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.23.0
|
||||
org.apache.beam:beam-model-fn-execution:2.27.0
|
||||
org.apache.beam:beam-model-job-management:2.27.0
|
||||
org.apache.beam:beam-model-pipeline:2.27.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.27.0
|
||||
org.apache.beam:beam-runners-direct-java:2.27.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.27.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.27.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_10_8:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_26_0:0.3
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.8.1
|
||||
@@ -228,19 +238,19 @@ org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.5.0
|
||||
org.checkerframework:checker-qual:3.7.0
|
||||
org.codehaus.jackson:jackson-core-asl:1.9.13
|
||||
org.codehaus.jackson:jackson-mapper-asl:1.9.13
|
||||
org.codehaus.mojo:animal-sniffer-annotations:1.19
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.2.1
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.5.1
|
||||
org.dom4j:dom4j:2.1.3
|
||||
org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-all:1.3
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest-library:1.3
|
||||
org.hamcrest:hamcrest-core:2.2
|
||||
org.hamcrest:hamcrest-library:2.2
|
||||
org.hamcrest:hamcrest:2.2
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
org.hibernate:hibernate-hikaricp:5.4.23.Final
|
||||
@@ -249,7 +259,7 @@ org.jboss.logging:jboss-logging:3.4.1.Final
|
||||
org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final
|
||||
org.jboss:jandex:2.1.3.Final
|
||||
org.joda:joda-money:1.0.1
|
||||
org.json:json:20160810
|
||||
org.json:json:20200518
|
||||
org.jsoup:jsoup:1.13.1
|
||||
org.junit-pioneer:junit-pioneer:0.7.0
|
||||
org.junit.jupiter:junit-jupiter-api:5.7.0
|
||||
@@ -294,7 +304,7 @@ org.testcontainers:junit-jupiter:1.15.1
|
||||
org.testcontainers:postgresql:1.15.1
|
||||
org.testcontainers:selenium:1.15.1
|
||||
org.testcontainers:testcontainers:1.15.1
|
||||
org.threeten:threetenbp:1.4.5
|
||||
org.threeten:threetenbp:1.5.0
|
||||
org.tukaani:xz:1.8
|
||||
org.w3c.css:sac:1.3
|
||||
org.xerial.snappy:snappy-java:1.1.4
|
||||
|
||||
@@ -6,9 +6,10 @@ aopalliance:aopalliance:1.0
|
||||
args4j:args4j:2.33
|
||||
cglib:cglib-nodep:2.2
|
||||
com.beust:jcommander:1.60
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.11.2
|
||||
com.fasterxml.jackson.core:jackson-core:2.11.3
|
||||
com.fasterxml.jackson.core:jackson-databind:2.11.2
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.1
|
||||
com.fasterxml.jackson:jackson-bom:2.12.1
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
@@ -21,50 +22,60 @@ com.github.jnr:jnr-ffi:2.1.13
|
||||
com.github.jnr:jnr-posix:3.0.55
|
||||
com.github.jnr:jnr-unixsocket:0.30
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.github.rholder:guava-retrying:2.0.0
|
||||
com.google.api-client:google-api-client-appengine:1.30.8
|
||||
com.google.api-client:google-api-client-jackson2:1.30.9
|
||||
com.google.api-client:google-api-client-java6:1.30.9
|
||||
com.google.api-client:google-api-client-jackson2:1.30.10
|
||||
com.google.api-client:google-api-client-java6:1.30.10
|
||||
com.google.api-client:google-api-client-servlet:1.30.8
|
||||
com.google.api-client:google-api-client:1.30.9
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:grpc-google-common-protos:1.17.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.85.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.1
|
||||
com.google.api-client:google-api-client:1.30.10
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.90.3
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-common-protos:1.18.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.16.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.88.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.92.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.5
|
||||
com.google.api:api-common:1.10.1
|
||||
com.google.api:gax-grpc:1.60.0
|
||||
com.google.api:gax-httpjson:0.70.1
|
||||
com.google.api:gax:1.60.0
|
||||
com.google.api:gax-grpc:1.60.1
|
||||
com.google.api:gax-httpjson:0.76.1
|
||||
com.google.api:gax:1.60.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev101-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20191211-1.30.9
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200313-1.30.9
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20200916-1.30.10
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200501-1.30.10
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200311-1.30.9
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200305-1.30.9
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200720-1.30.10
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0
|
||||
com.google.apis:google-api-services-drive:v2-rev160-1.19.1
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev60-1.22.0
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200525-1.30.9
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.30.10
|
||||
com.google.apis:google-api-services-monitoring:v3-rev426-1.23.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200312-1.30.9
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-sheets:v4-rev483-1.22.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20190827-1.30.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20200326-1.30.9
|
||||
com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10
|
||||
com.google.appengine.tools:appengine-gcs-client:0.6
|
||||
com.google.appengine.tools:appengine-mapreduce:0.9
|
||||
com.google.appengine.tools:appengine-pipeline:0.2.13
|
||||
@@ -72,39 +83,42 @@ com.google.appengine:appengine-api-1.0-sdk:1.9.81
|
||||
com.google.appengine:appengine-api-stubs:1.9.81
|
||||
com.google.appengine:appengine-remote-api:1.9.81
|
||||
com.google.appengine:appengine-testing:1.9.81
|
||||
com.google.auth:google-auth-library-credentials:0.22.0
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.0
|
||||
com.google.auth:google-auth-library-credentials:0.22.2
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.2
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.3
|
||||
com.google.cloud.bigdataoss:util:2.1.3
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.13.0
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.6
|
||||
com.google.cloud.bigdataoss:util:2.1.6
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.16.0
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.0.16
|
||||
com.google.cloud:google-cloud-bigquery:1.106.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:0.125.0-beta
|
||||
com.google.cloud:google-cloud-bigtable:1.9.1
|
||||
com.google.cloud:google-cloud-core-grpc:1.92.2
|
||||
com.google.cloud:google-cloud-core-http:1.92.4
|
||||
com.google.cloud:google-cloud-core:1.92.5
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.3
|
||||
com.google.cloud:google-cloud-spanner:1.49.1
|
||||
com.google.cloud:google-cloud-bigquery:1.122.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:1.5.5
|
||||
com.google.cloud:google-cloud-bigtable:1.14.0
|
||||
com.google.cloud:google-cloud-core-grpc:1.93.9
|
||||
com.google.cloud:google-cloud-core-http:1.93.9
|
||||
com.google.cloud:google-cloud-core:1.93.9
|
||||
com.google.cloud:google-cloud-pubsub:1.110.0
|
||||
com.google.cloud:google-cloud-pubsublite:0.7.0
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.9
|
||||
com.google.cloud:google-cloud-spanner:2.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.6
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.dagger:dagger:2.28
|
||||
com.google.errorprone:error_prone_annotations:2.4.0
|
||||
com.google.errorprone:error_prone_annotations:2.5.0
|
||||
com.google.flogger:flogger:0.5.1
|
||||
com.google.flogger:google-extensions:0.5.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava-testlib:30.0-jre
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava-testlib:30.1-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.2
|
||||
com.google.http-client:google-http-client-appengine:1.34.1
|
||||
com.google.http-client:google-http-client-jackson2:1.37.0
|
||||
com.google.http-client:google-http-client-appengine:1.36.0
|
||||
com.google.http-client:google-http-client-jackson2:1.38.0
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.37.0
|
||||
com.google.http-client:google-http-client:1.38.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -113,12 +127,12 @@ com.google.monitoring-client:contrib:1.0.7
|
||||
com.google.monitoring-client:metrics:1.0.7
|
||||
com.google.monitoring-client:stackdriver:1.0.7
|
||||
com.google.oauth-client:google-oauth-client-appengine:1.30.5
|
||||
com.google.oauth-client:google-oauth-client-java6:1.30.6
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.2
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.28.0
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.30.5
|
||||
com.google.oauth-client:google-oauth-client:1.30.6
|
||||
com.google.protobuf:protobuf-java-util:3.11.4
|
||||
com.google.protobuf:protobuf-java:3.13.0
|
||||
com.google.oauth-client:google-oauth-client:1.31.2
|
||||
com.google.protobuf:protobuf-java-util:3.14.0
|
||||
com.google.protobuf:protobuf-java:3.14.0
|
||||
com.google.re2j:re2j:1.1
|
||||
com.google.template:soy:2018-03-14
|
||||
com.google.truth.extensions:truth-java8-extension:1.0
|
||||
@@ -129,43 +143,37 @@ com.googlecode.json-simple:json-simple:1.1.1
|
||||
com.ibm.icu:icu4j:57.1
|
||||
com.jcraft:jsch:0.1.55
|
||||
com.squareup.okhttp3:okhttp:3.11.0
|
||||
com.squareup.okhttp:okhttp:2.5.0
|
||||
com.squareup.okio:okio:1.14.0
|
||||
com.sun.istack:istack-commons-runtime:3.0.7
|
||||
com.sun.xml.fastinfoset:FastInfoset:1.2.15
|
||||
com.thoughtworks.paranamer:paranamer:2.7
|
||||
com.thoughtworks.qdox:qdox:1.12.1
|
||||
com.zaxxer:HikariCP:3.4.5
|
||||
commons-codec:commons-codec:1.13
|
||||
commons-codec:commons-codec:1.15
|
||||
commons-logging:commons-logging:1.2
|
||||
dnsjava:dnsjava:2.1.7
|
||||
io.dropwizard.metrics:metrics-core:3.2.6
|
||||
io.github.classgraph:classgraph:4.8.65
|
||||
io.grpc:grpc-all:1.27.2
|
||||
io.grpc:grpc-alts:1.32.2
|
||||
io.grpc:grpc-api:1.32.2
|
||||
io.grpc:grpc-auth:1.32.2
|
||||
io.grpc:grpc-context:1.32.2
|
||||
io.grpc:grpc-core:1.32.2
|
||||
io.grpc:grpc-grpclb:1.32.2
|
||||
io.grpc:grpc-netty-shaded:1.32.2
|
||||
io.grpc:grpc-netty:1.27.2
|
||||
io.grpc:grpc-okhttp:1.27.2
|
||||
io.grpc:grpc-protobuf-lite:1.32.2
|
||||
io.grpc:grpc-protobuf:1.32.2
|
||||
io.grpc:grpc-stub:1.32.2
|
||||
io.grpc:grpc-testing:1.27.2
|
||||
io.netty:netty-buffer:4.1.42.Final
|
||||
io.netty:netty-codec-http2:4.1.42.Final
|
||||
io.netty:netty-codec-http:4.1.42.Final
|
||||
io.netty:netty-codec-socks:4.1.42.Final
|
||||
io.netty:netty-codec:4.1.42.Final
|
||||
io.netty:netty-common:4.1.42.Final
|
||||
io.netty:netty-handler-proxy:4.1.42.Final
|
||||
io.netty:netty-handler:4.1.42.Final
|
||||
io.netty:netty-resolver:4.1.42.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.17.Final
|
||||
io.netty:netty-transport:4.1.42.Final
|
||||
io.grpc:grpc-alts:1.34.1
|
||||
io.grpc:grpc-api:1.34.1
|
||||
io.grpc:grpc-auth:1.34.1
|
||||
io.grpc:grpc-context:1.34.1
|
||||
io.grpc:grpc-core:1.34.1
|
||||
io.grpc:grpc-grpclb:1.34.1
|
||||
io.grpc:grpc-netty-shaded:1.34.1
|
||||
io.grpc:grpc-netty:1.32.2
|
||||
io.grpc:grpc-protobuf-lite:1.34.1
|
||||
io.grpc:grpc-protobuf:1.34.1
|
||||
io.grpc:grpc-stub:1.34.1
|
||||
io.netty:netty-buffer:4.1.51.Final
|
||||
io.netty:netty-codec-http2:4.1.51.Final
|
||||
io.netty:netty-codec-http:4.1.51.Final
|
||||
io.netty:netty-codec:4.1.51.Final
|
||||
io.netty:netty-common:4.1.51.Final
|
||||
io.netty:netty-handler:4.1.51.Final
|
||||
io.netty:netty-resolver:4.1.51.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.51.Final
|
||||
io.opencensus:opencensus-api:0.24.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.24.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.24.0
|
||||
@@ -184,28 +192,28 @@ javax.validation:validation-api:1.0.0.GA
|
||||
javax.xml.bind:jaxb-api:2.3.1
|
||||
jline:jline:1.0
|
||||
joda-time:joda-time:2.10.5
|
||||
junit:junit:4.13
|
||||
junit:junit:4.13.1
|
||||
net.bytebuddy:byte-buddy-agent:1.10.5
|
||||
net.bytebuddy:byte-buddy:1.10.17
|
||||
net.java.dev.jna:jna:5.5.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.23.0
|
||||
org.apache.beam:beam-model-job-management:2.23.0
|
||||
org.apache.beam:beam-model-pipeline:2.23.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.23.0
|
||||
org.apache.beam:beam-runners-direct-java:2.23.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.23.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.23.0
|
||||
org.apache.beam:beam-model-fn-execution:2.27.0
|
||||
org.apache.beam:beam-model-job-management:2.27.0
|
||||
org.apache.beam:beam-model-pipeline:2.27.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.27.0
|
||||
org.apache.beam:beam-runners-direct-java:2.27.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.27.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.27.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_10_8:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_26_0:0.3
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.8.1
|
||||
@@ -225,18 +233,18 @@ org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.5.0
|
||||
org.checkerframework:checker-qual:3.7.0
|
||||
org.codehaus.jackson:jackson-core-asl:1.9.13
|
||||
org.codehaus.jackson:jackson-mapper-asl:1.9.13
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.2.1
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.5.1
|
||||
org.dom4j:dom4j:2.1.3
|
||||
org.easymock:easymock:3.0
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-all:1.3
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest-library:1.3
|
||||
org.hamcrest:hamcrest-core:2.2
|
||||
org.hamcrest:hamcrest-library:2.2
|
||||
org.hamcrest:hamcrest:2.2
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
org.hibernate:hibernate-hikaricp:5.4.23.Final
|
||||
@@ -245,7 +253,7 @@ org.jboss.logging:jboss-logging:3.4.1.Final
|
||||
org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final
|
||||
org.jboss:jandex:2.1.3.Final
|
||||
org.joda:joda-money:1.0.1
|
||||
org.json:json:20160810
|
||||
org.json:json:20200518
|
||||
org.jsoup:jsoup:1.13.1
|
||||
org.junit-pioneer:junit-pioneer:0.7.0
|
||||
org.junit.jupiter:junit-jupiter-api:5.7.0
|
||||
@@ -290,7 +298,7 @@ org.testcontainers:junit-jupiter:1.15.1
|
||||
org.testcontainers:postgresql:1.15.1
|
||||
org.testcontainers:selenium:1.15.1
|
||||
org.testcontainers:testcontainers:1.15.1
|
||||
org.threeten:threetenbp:1.4.5
|
||||
org.threeten:threetenbp:1.5.0
|
||||
org.tukaani:xz:1.8
|
||||
org.w3c.css:sac:1.3
|
||||
org.xerial.snappy:snappy-java:1.1.4
|
||||
|
||||
@@ -10,9 +10,10 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.11.2
|
||||
com.fasterxml.jackson.core:jackson-core:2.11.3
|
||||
com.fasterxml.jackson.core:jackson-databind:2.11.2
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.1
|
||||
com.fasterxml.jackson:jackson-bom:2.12.1
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
@@ -25,51 +26,61 @@ com.github.jnr:jnr-ffi:2.1.13
|
||||
com.github.jnr:jnr-posix:3.0.55
|
||||
com.github.jnr:jnr-unixsocket:0.30
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.github.rholder:guava-retrying:2.0.0
|
||||
com.google.android:annotations:4.1.1.4
|
||||
com.google.api-client:google-api-client-appengine:1.30.8
|
||||
com.google.api-client:google-api-client-jackson2:1.30.9
|
||||
com.google.api-client:google-api-client-java6:1.30.9
|
||||
com.google.api-client:google-api-client-jackson2:1.30.10
|
||||
com.google.api-client:google-api-client-java6:1.30.10
|
||||
com.google.api-client:google-api-client-servlet:1.30.8
|
||||
com.google.api-client:google-api-client:1.30.9
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:grpc-google-common-protos:1.17.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.85.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.1
|
||||
com.google.api-client:google-api-client:1.30.10
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.90.3
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-common-protos:1.18.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.16.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.88.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.92.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.5
|
||||
com.google.api:api-common:1.10.1
|
||||
com.google.api:gax-grpc:1.60.0
|
||||
com.google.api:gax-httpjson:0.70.1
|
||||
com.google.api:gax:1.60.0
|
||||
com.google.api:gax-grpc:1.60.1
|
||||
com.google.api:gax-httpjson:0.76.1
|
||||
com.google.api:gax:1.60.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev101-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20191211-1.30.9
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200313-1.30.9
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20200916-1.30.10
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200501-1.30.10
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200311-1.30.9
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200305-1.30.9
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200720-1.30.10
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0
|
||||
com.google.apis:google-api-services-drive:v2-rev160-1.19.1
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev60-1.22.0
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200525-1.30.9
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.30.10
|
||||
com.google.apis:google-api-services-monitoring:v3-rev426-1.23.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200312-1.30.9
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-sheets:v4-rev483-1.22.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20190827-1.30.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20200326-1.30.9
|
||||
com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10
|
||||
com.google.appengine.tools:appengine-gcs-client:0.6
|
||||
com.google.appengine.tools:appengine-mapreduce:0.9
|
||||
com.google.appengine.tools:appengine-pipeline:0.2.13
|
||||
@@ -77,41 +88,44 @@ com.google.appengine:appengine-api-1.0-sdk:1.9.81
|
||||
com.google.appengine:appengine-api-stubs:1.9.81
|
||||
com.google.appengine:appengine-remote-api:1.9.81
|
||||
com.google.appengine:appengine-testing:1.9.81
|
||||
com.google.auth:google-auth-library-credentials:0.22.0
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.0
|
||||
com.google.auth:google-auth-library-credentials:0.22.2
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.2
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.3
|
||||
com.google.cloud.bigdataoss:util:2.1.3
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.13.0
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.6
|
||||
com.google.cloud.bigdataoss:util:2.1.6
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.16.0
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.0.16
|
||||
com.google.cloud.sql:postgres-socket-factory:1.0.16
|
||||
com.google.cloud:google-cloud-bigquery:1.106.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:0.125.0-beta
|
||||
com.google.cloud:google-cloud-bigtable:1.9.1
|
||||
com.google.cloud:google-cloud-core-grpc:1.92.2
|
||||
com.google.cloud:google-cloud-core-http:1.92.4
|
||||
com.google.cloud:google-cloud-core:1.92.5
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.3
|
||||
com.google.cloud:google-cloud-spanner:1.49.1
|
||||
com.google.cloud:google-cloud-bigquery:1.122.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:1.5.5
|
||||
com.google.cloud:google-cloud-bigtable:1.14.0
|
||||
com.google.cloud:google-cloud-core-grpc:1.93.9
|
||||
com.google.cloud:google-cloud-core-http:1.93.9
|
||||
com.google.cloud:google-cloud-core:1.93.9
|
||||
com.google.cloud:google-cloud-pubsub:1.110.0
|
||||
com.google.cloud:google-cloud-pubsublite:0.7.0
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.9
|
||||
com.google.cloud:google-cloud-spanner:2.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.6
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.dagger:dagger:2.28
|
||||
com.google.errorprone:error_prone_annotations:2.4.0
|
||||
com.google.errorprone:error_prone_annotations:2.5.0
|
||||
com.google.flogger:flogger-system-backend:0.5.1
|
||||
com.google.flogger:flogger:0.5.1
|
||||
com.google.flogger:google-extensions:0.5.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava-testlib:30.0-jre
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava-testlib:30.1-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.2
|
||||
com.google.http-client:google-http-client-appengine:1.34.1
|
||||
com.google.http-client:google-http-client-jackson2:1.37.0
|
||||
com.google.http-client:google-http-client-appengine:1.36.0
|
||||
com.google.http-client:google-http-client-jackson2:1.38.0
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.37.0
|
||||
com.google.http-client:google-http-client:1.38.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -120,12 +134,12 @@ com.google.monitoring-client:contrib:1.0.7
|
||||
com.google.monitoring-client:metrics:1.0.7
|
||||
com.google.monitoring-client:stackdriver:1.0.7
|
||||
com.google.oauth-client:google-oauth-client-appengine:1.30.5
|
||||
com.google.oauth-client:google-oauth-client-java6:1.30.6
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.2
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.28.0
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.30.5
|
||||
com.google.oauth-client:google-oauth-client:1.30.6
|
||||
com.google.protobuf:protobuf-java-util:3.13.0
|
||||
com.google.protobuf:protobuf-java:3.13.0
|
||||
com.google.oauth-client:google-oauth-client:1.31.2
|
||||
com.google.protobuf:protobuf-java-util:3.14.0
|
||||
com.google.protobuf:protobuf-java:3.14.0
|
||||
com.google.re2j:re2j:1.1
|
||||
com.google.template:soy:2018-03-14
|
||||
com.google.truth.extensions:truth-java8-extension:1.0
|
||||
@@ -136,14 +150,13 @@ com.googlecode.json-simple:json-simple:1.1.1
|
||||
com.ibm.icu:icu4j:57.1
|
||||
com.jcraft:jsch:0.1.55
|
||||
com.squareup.okhttp3:okhttp:3.11.0
|
||||
com.squareup.okhttp:okhttp:2.5.0
|
||||
com.squareup.okio:okio:1.14.0
|
||||
com.sun.istack:istack-commons-runtime:3.0.7
|
||||
com.sun.xml.fastinfoset:FastInfoset:1.2.15
|
||||
com.thoughtworks.paranamer:paranamer:2.7
|
||||
com.thoughtworks.qdox:qdox:1.12.1
|
||||
com.zaxxer:HikariCP:3.4.5
|
||||
commons-codec:commons-codec:1.13
|
||||
commons-codec:commons-codec:1.15
|
||||
commons-logging:commons-logging:1.2
|
||||
dnsjava:dnsjava:2.1.7
|
||||
guru.nidi.com.kitfox:svgSalamander:1.1.3
|
||||
@@ -152,31 +165,28 @@ guru.nidi:graphviz-java:0.17.0
|
||||
io.dropwizard.metrics:metrics-core:3.2.6
|
||||
io.github.classgraph:classgraph:4.8.65
|
||||
io.github.java-diff-utils:java-diff-utils:4.0
|
||||
io.grpc:grpc-all:1.27.2
|
||||
io.grpc:grpc-alts:1.32.2
|
||||
io.grpc:grpc-api:1.32.2
|
||||
io.grpc:grpc-auth:1.32.2
|
||||
io.grpc:grpc-context:1.32.2
|
||||
io.grpc:grpc-core:1.32.2
|
||||
io.grpc:grpc-grpclb:1.32.2
|
||||
io.grpc:grpc-netty-shaded:1.32.2
|
||||
io.grpc:grpc-netty:1.27.2
|
||||
io.grpc:grpc-okhttp:1.27.2
|
||||
io.grpc:grpc-protobuf-lite:1.32.2
|
||||
io.grpc:grpc-protobuf:1.32.2
|
||||
io.grpc:grpc-stub:1.32.2
|
||||
io.grpc:grpc-testing:1.27.2
|
||||
io.netty:netty-buffer:4.1.42.Final
|
||||
io.netty:netty-codec-http2:4.1.42.Final
|
||||
io.netty:netty-codec-http:4.1.42.Final
|
||||
io.netty:netty-codec-socks:4.1.42.Final
|
||||
io.netty:netty-codec:4.1.42.Final
|
||||
io.netty:netty-common:4.1.42.Final
|
||||
io.netty:netty-handler-proxy:4.1.42.Final
|
||||
io.netty:netty-handler:4.1.42.Final
|
||||
io.netty:netty-resolver:4.1.42.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.17.Final
|
||||
io.netty:netty-transport:4.1.42.Final
|
||||
io.grpc:grpc-alts:1.34.1
|
||||
io.grpc:grpc-api:1.34.1
|
||||
io.grpc:grpc-auth:1.34.1
|
||||
io.grpc:grpc-context:1.34.1
|
||||
io.grpc:grpc-core:1.34.1
|
||||
io.grpc:grpc-grpclb:1.34.1
|
||||
io.grpc:grpc-netty-shaded:1.34.1
|
||||
io.grpc:grpc-netty:1.32.2
|
||||
io.grpc:grpc-protobuf-lite:1.34.1
|
||||
io.grpc:grpc-protobuf:1.34.1
|
||||
io.grpc:grpc-stub:1.34.1
|
||||
io.netty:netty-buffer:4.1.51.Final
|
||||
io.netty:netty-codec-http2:4.1.51.Final
|
||||
io.netty:netty-codec-http:4.1.51.Final
|
||||
io.netty:netty-codec-socks:4.1.51.Final
|
||||
io.netty:netty-codec:4.1.51.Final
|
||||
io.netty:netty-common:4.1.51.Final
|
||||
io.netty:netty-handler-proxy:4.1.51.Final
|
||||
io.netty:netty-handler:4.1.51.Final
|
||||
io.netty:netty-resolver:4.1.51.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.51.Final
|
||||
io.opencensus:opencensus-api:0.24.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.24.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.24.0
|
||||
@@ -196,29 +206,29 @@ javax.validation:validation-api:1.0.0.GA
|
||||
javax.xml.bind:jaxb-api:2.3.1
|
||||
jline:jline:1.0
|
||||
joda-time:joda-time:2.10.5
|
||||
junit:junit:4.13
|
||||
junit:junit:4.13.1
|
||||
net.arnx:nashorn-promise:0.1.1
|
||||
net.bytebuddy:byte-buddy-agent:1.10.5
|
||||
net.bytebuddy:byte-buddy:1.10.17
|
||||
net.java.dev.jna:jna:5.5.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.23.0
|
||||
org.apache.beam:beam-model-job-management:2.23.0
|
||||
org.apache.beam:beam-model-pipeline:2.23.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.23.0
|
||||
org.apache.beam:beam-runners-direct-java:2.23.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.23.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.23.0
|
||||
org.apache.beam:beam-model-fn-execution:2.27.0
|
||||
org.apache.beam:beam-model-job-management:2.27.0
|
||||
org.apache.beam:beam-model-pipeline:2.27.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.27.0
|
||||
org.apache.beam:beam-runners-direct-java:2.27.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.27.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.27.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_10_8:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_26_0:0.3
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.8.1
|
||||
@@ -239,20 +249,20 @@ org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.5.0
|
||||
org.checkerframework:checker-qual:3.7.0
|
||||
org.codehaus.jackson:jackson-core-asl:1.9.13
|
||||
org.codehaus.jackson:jackson-mapper-asl:1.9.13
|
||||
org.codehaus.mojo:animal-sniffer-annotations:1.19
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.2.1
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.5.1
|
||||
org.dom4j:dom4j:2.1.3
|
||||
org.easymock:easymock:3.0
|
||||
org.eclipse.jgit:org.eclipse.jgit:4.4.1.201607150455-r
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-all:1.3
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest-library:1.3
|
||||
org.hamcrest:hamcrest-core:2.2
|
||||
org.hamcrest:hamcrest-library:2.2
|
||||
org.hamcrest:hamcrest:2.2
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
org.hibernate:hibernate-hikaricp:5.4.23.Final
|
||||
@@ -261,7 +271,7 @@ org.jboss.logging:jboss-logging:3.4.1.Final
|
||||
org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final
|
||||
org.jboss:jandex:2.1.3.Final
|
||||
org.joda:joda-money:1.0.1
|
||||
org.json:json:20160810
|
||||
org.json:json:20200518
|
||||
org.jsoup:jsoup:1.13.1
|
||||
org.junit-pioneer:junit-pioneer:0.7.0
|
||||
org.junit.jupiter:junit-jupiter-api:5.7.0
|
||||
@@ -308,7 +318,7 @@ org.testcontainers:junit-jupiter:1.15.1
|
||||
org.testcontainers:postgresql:1.15.1
|
||||
org.testcontainers:selenium:1.15.1
|
||||
org.testcontainers:testcontainers:1.15.1
|
||||
org.threeten:threetenbp:1.4.5
|
||||
org.threeten:threetenbp:1.5.0
|
||||
org.tukaani:xz:1.8
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
|
||||
@@ -10,9 +10,10 @@ com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
|
||||
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.11.2
|
||||
com.fasterxml.jackson.core:jackson-core:2.11.3
|
||||
com.fasterxml.jackson.core:jackson-databind:2.11.2
|
||||
com.fasterxml.jackson.core:jackson-annotations:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-core:2.12.1
|
||||
com.fasterxml.jackson.core:jackson-databind:2.12.1
|
||||
com.fasterxml.jackson:jackson-bom:2.12.1
|
||||
com.fasterxml:classmate:1.5.1
|
||||
com.github.docker-java:docker-java-api:3.2.7
|
||||
com.github.docker-java:docker-java-transport-zerodep:3.2.7
|
||||
@@ -25,51 +26,61 @@ com.github.jnr:jnr-ffi:2.1.13
|
||||
com.github.jnr:jnr-posix:3.0.55
|
||||
com.github.jnr:jnr-unixsocket:0.30
|
||||
com.github.jnr:jnr-x86asm:1.0.2
|
||||
com.github.rholder:guava-retrying:2.0.0
|
||||
com.google.android:annotations:4.1.1.4
|
||||
com.google.api-client:google-api-client-appengine:1.30.8
|
||||
com.google.api-client:google-api-client-jackson2:1.30.9
|
||||
com.google.api-client:google-api-client-java6:1.30.9
|
||||
com.google.api-client:google-api-client-jackson2:1.30.10
|
||||
com.google.api-client:google-api-client-java6:1.30.10
|
||||
com.google.api-client:google-api-client-servlet:1.30.8
|
||||
com.google.api-client:google-api-client:1.30.9
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:grpc-google-common-protos:1.17.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.90.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.9.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.85.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.85.1
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.3
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:1.49.1
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.0
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.1
|
||||
com.google.api-client:google-api-client:1.30.10
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-bigtable-v2:1.14.0
|
||||
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.90.3
|
||||
com.google.api.grpc:grpc-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:grpc-google-common-protos:1.18.1
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:1.5.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:0.105.5
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:1.14.0
|
||||
com.google.api.grpc:proto-google-cloud-bigtable-v2:1.16.1
|
||||
com.google.api.grpc:proto-google-cloud-datastore-v1:0.88.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.92.0
|
||||
com.google.api.grpc:proto-google-cloud-pubsublite-v1:0.7.0
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:1.2.9
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-cloud-spanner-v1:2.0.2
|
||||
com.google.api.grpc:proto-google-common-protos:2.0.1
|
||||
com.google.api.grpc:proto-google-iam-v1:1.0.5
|
||||
com.google.api:api-common:1.10.1
|
||||
com.google.api:gax-grpc:1.60.0
|
||||
com.google.api:gax-httpjson:0.70.1
|
||||
com.google.api:gax:1.60.0
|
||||
com.google.api:gax-grpc:1.60.1
|
||||
com.google.api:gax-httpjson:0.76.1
|
||||
com.google.api:gax:1.60.1
|
||||
com.google.apis:google-api-services-admin-directory:directory_v1-rev72-1.22.0
|
||||
com.google.apis:google-api-services-appengine:v1-rev101-1.25.0
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20191211-1.30.9
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200313-1.30.9
|
||||
com.google.apis:google-api-services-bigquery:v2-rev20200916-1.30.10
|
||||
com.google.apis:google-api-services-clouddebugger:v2-rev20200501-1.30.10
|
||||
com.google.apis:google-api-services-cloudkms:v1-rev12-1.22.0
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200311-1.30.9
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200305-1.30.9
|
||||
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20200720-1.30.10
|
||||
com.google.apis:google-api-services-dataflow:v1b3-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-dns:v2beta1-rev6-1.22.0
|
||||
com.google.apis:google-api-services-drive:v2-rev160-1.19.1
|
||||
com.google.apis:google-api-services-groupssettings:v1-rev60-1.22.0
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200525-1.30.9
|
||||
com.google.apis:google-api-services-healthcare:v1beta1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-iamcredentials:v1-rev20201022-1.30.10
|
||||
com.google.apis:google-api-services-monitoring:v3-rev426-1.23.0
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200312-1.30.9
|
||||
com.google.apis:google-api-services-pubsub:v1-rev20200713-1.30.10
|
||||
com.google.apis:google-api-services-sheets:v4-rev483-1.22.0
|
||||
com.google.apis:google-api-services-sqladmin:v1beta4-rev20190827-1.30.1
|
||||
com.google.apis:google-api-services-storage:v1-rev20200326-1.30.9
|
||||
com.google.apis:google-api-services-storage:v1-rev20200927-1.30.10
|
||||
com.google.appengine.tools:appengine-gcs-client:0.6
|
||||
com.google.appengine.tools:appengine-mapreduce:0.9
|
||||
com.google.appengine.tools:appengine-pipeline:0.2.13
|
||||
@@ -77,41 +88,44 @@ com.google.appengine:appengine-api-1.0-sdk:1.9.81
|
||||
com.google.appengine:appengine-api-stubs:1.9.81
|
||||
com.google.appengine:appengine-remote-api:1.9.81
|
||||
com.google.appengine:appengine-testing:1.9.81
|
||||
com.google.auth:google-auth-library-credentials:0.22.0
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.0
|
||||
com.google.auth:google-auth-library-credentials:0.22.2
|
||||
com.google.auth:google-auth-library-oauth2-http:0.22.2
|
||||
com.google.auto.service:auto-service-annotations:1.0-rc7
|
||||
com.google.auto.value:auto-value-annotations:1.7.4
|
||||
com.google.auto.value:auto-value:1.6.3
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.3
|
||||
com.google.cloud.bigdataoss:util:2.1.3
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.13.0
|
||||
com.google.auto.value:auto-value:1.7.4
|
||||
com.google.cloud.bigdataoss:gcsio:2.1.6
|
||||
com.google.cloud.bigdataoss:util:2.1.6
|
||||
com.google.cloud.bigtable:bigtable-client-core:1.16.0
|
||||
com.google.cloud.datastore:datastore-v1-proto-client:1.6.3
|
||||
com.google.cloud.sql:jdbc-socket-factory-core:1.0.16
|
||||
com.google.cloud.sql:postgres-socket-factory:1.0.16
|
||||
com.google.cloud:google-cloud-bigquery:1.106.0
|
||||
com.google.cloud:google-cloud-bigquerystorage:0.125.0-beta
|
||||
com.google.cloud:google-cloud-bigtable:1.9.1
|
||||
com.google.cloud:google-cloud-core-grpc:1.92.2
|
||||
com.google.cloud:google-cloud-core-http:1.92.4
|
||||
com.google.cloud:google-cloud-core:1.92.5
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.3
|
||||
com.google.cloud:google-cloud-spanner:1.49.1
|
||||
com.google.cloud:google-cloud-bigquery:1.122.2
|
||||
com.google.cloud:google-cloud-bigquerystorage:1.5.5
|
||||
com.google.cloud:google-cloud-bigtable:1.14.0
|
||||
com.google.cloud:google-cloud-core-grpc:1.93.9
|
||||
com.google.cloud:google-cloud-core-http:1.93.9
|
||||
com.google.cloud:google-cloud-core:1.93.9
|
||||
com.google.cloud:google-cloud-pubsub:1.110.0
|
||||
com.google.cloud:google-cloud-pubsublite:0.7.0
|
||||
com.google.cloud:google-cloud-secretmanager:1.2.9
|
||||
com.google.cloud:google-cloud-spanner:2.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.8.6
|
||||
com.google.common.html.types:types:1.0.4
|
||||
com.google.dagger:dagger:2.28
|
||||
com.google.errorprone:error_prone_annotations:2.4.0
|
||||
com.google.errorprone:error_prone_annotations:2.5.0
|
||||
com.google.flogger:flogger-system-backend:0.5.1
|
||||
com.google.flogger:flogger:0.5.1
|
||||
com.google.flogger:google-extensions:0.5.1
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava-testlib:30.0-jre
|
||||
com.google.guava:guava:30.0-jre
|
||||
com.google.guava:guava-testlib:30.1-jre
|
||||
com.google.guava:guava:30.1-jre
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.gwt:gwt-user:2.8.2
|
||||
com.google.http-client:google-http-client-appengine:1.34.1
|
||||
com.google.http-client:google-http-client-jackson2:1.37.0
|
||||
com.google.http-client:google-http-client-appengine:1.36.0
|
||||
com.google.http-client:google-http-client-jackson2:1.38.0
|
||||
com.google.http-client:google-http-client-protobuf:1.33.0
|
||||
com.google.http-client:google-http-client:1.37.0
|
||||
com.google.http-client:google-http-client:1.38.0
|
||||
com.google.inject.extensions:guice-multibindings:4.1.0
|
||||
com.google.inject:guice:4.1.0
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
@@ -120,12 +134,12 @@ com.google.monitoring-client:contrib:1.0.7
|
||||
com.google.monitoring-client:metrics:1.0.7
|
||||
com.google.monitoring-client:stackdriver:1.0.7
|
||||
com.google.oauth-client:google-oauth-client-appengine:1.30.5
|
||||
com.google.oauth-client:google-oauth-client-java6:1.30.6
|
||||
com.google.oauth-client:google-oauth-client-java6:1.31.2
|
||||
com.google.oauth-client:google-oauth-client-jetty:1.28.0
|
||||
com.google.oauth-client:google-oauth-client-servlet:1.30.5
|
||||
com.google.oauth-client:google-oauth-client:1.30.6
|
||||
com.google.protobuf:protobuf-java-util:3.13.0
|
||||
com.google.protobuf:protobuf-java:3.13.0
|
||||
com.google.oauth-client:google-oauth-client:1.31.2
|
||||
com.google.protobuf:protobuf-java-util:3.14.0
|
||||
com.google.protobuf:protobuf-java:3.14.0
|
||||
com.google.re2j:re2j:1.1
|
||||
com.google.template:soy:2018-03-14
|
||||
com.google.truth.extensions:truth-java8-extension:1.0
|
||||
@@ -136,14 +150,13 @@ com.googlecode.json-simple:json-simple:1.1.1
|
||||
com.ibm.icu:icu4j:57.1
|
||||
com.jcraft:jsch:0.1.55
|
||||
com.squareup.okhttp3:okhttp:3.11.0
|
||||
com.squareup.okhttp:okhttp:2.5.0
|
||||
com.squareup.okio:okio:1.14.0
|
||||
com.sun.istack:istack-commons-runtime:3.0.7
|
||||
com.sun.xml.fastinfoset:FastInfoset:1.2.15
|
||||
com.thoughtworks.paranamer:paranamer:2.7
|
||||
com.thoughtworks.qdox:qdox:1.12.1
|
||||
com.zaxxer:HikariCP:3.4.5
|
||||
commons-codec:commons-codec:1.13
|
||||
commons-codec:commons-codec:1.15
|
||||
commons-logging:commons-logging:1.2
|
||||
dnsjava:dnsjava:2.1.7
|
||||
guru.nidi.com.kitfox:svgSalamander:1.1.3
|
||||
@@ -152,31 +165,28 @@ guru.nidi:graphviz-java:0.17.0
|
||||
io.dropwizard.metrics:metrics-core:3.2.6
|
||||
io.github.classgraph:classgraph:4.8.65
|
||||
io.github.java-diff-utils:java-diff-utils:4.0
|
||||
io.grpc:grpc-all:1.27.2
|
||||
io.grpc:grpc-alts:1.32.2
|
||||
io.grpc:grpc-api:1.32.2
|
||||
io.grpc:grpc-auth:1.32.2
|
||||
io.grpc:grpc-context:1.32.2
|
||||
io.grpc:grpc-core:1.32.2
|
||||
io.grpc:grpc-grpclb:1.32.2
|
||||
io.grpc:grpc-netty-shaded:1.32.2
|
||||
io.grpc:grpc-netty:1.27.2
|
||||
io.grpc:grpc-okhttp:1.27.2
|
||||
io.grpc:grpc-protobuf-lite:1.32.2
|
||||
io.grpc:grpc-protobuf:1.32.2
|
||||
io.grpc:grpc-stub:1.32.2
|
||||
io.grpc:grpc-testing:1.27.2
|
||||
io.netty:netty-buffer:4.1.42.Final
|
||||
io.netty:netty-codec-http2:4.1.42.Final
|
||||
io.netty:netty-codec-http:4.1.42.Final
|
||||
io.netty:netty-codec-socks:4.1.42.Final
|
||||
io.netty:netty-codec:4.1.42.Final
|
||||
io.netty:netty-common:4.1.42.Final
|
||||
io.netty:netty-handler-proxy:4.1.42.Final
|
||||
io.netty:netty-handler:4.1.42.Final
|
||||
io.netty:netty-resolver:4.1.42.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.17.Final
|
||||
io.netty:netty-transport:4.1.42.Final
|
||||
io.grpc:grpc-alts:1.34.1
|
||||
io.grpc:grpc-api:1.34.1
|
||||
io.grpc:grpc-auth:1.34.1
|
||||
io.grpc:grpc-context:1.34.1
|
||||
io.grpc:grpc-core:1.34.1
|
||||
io.grpc:grpc-grpclb:1.34.1
|
||||
io.grpc:grpc-netty-shaded:1.34.1
|
||||
io.grpc:grpc-netty:1.32.2
|
||||
io.grpc:grpc-protobuf-lite:1.34.1
|
||||
io.grpc:grpc-protobuf:1.34.1
|
||||
io.grpc:grpc-stub:1.34.1
|
||||
io.netty:netty-buffer:4.1.51.Final
|
||||
io.netty:netty-codec-http2:4.1.51.Final
|
||||
io.netty:netty-codec-http:4.1.51.Final
|
||||
io.netty:netty-codec-socks:4.1.51.Final
|
||||
io.netty:netty-codec:4.1.51.Final
|
||||
io.netty:netty-common:4.1.51.Final
|
||||
io.netty:netty-handler-proxy:4.1.51.Final
|
||||
io.netty:netty-handler:4.1.51.Final
|
||||
io.netty:netty-resolver:4.1.51.Final
|
||||
io.netty:netty-tcnative-boringssl-static:2.0.33.Final
|
||||
io.netty:netty-transport:4.1.51.Final
|
||||
io.opencensus:opencensus-api:0.24.0
|
||||
io.opencensus:opencensus-contrib-grpc-util:0.24.0
|
||||
io.opencensus:opencensus-contrib-http-util:0.24.0
|
||||
@@ -196,29 +206,29 @@ javax.validation:validation-api:1.0.0.GA
|
||||
javax.xml.bind:jaxb-api:2.3.1
|
||||
jline:jline:1.0
|
||||
joda-time:joda-time:2.10.5
|
||||
junit:junit:4.13
|
||||
junit:junit:4.13.1
|
||||
net.arnx:nashorn-promise:0.1.1
|
||||
net.bytebuddy:byte-buddy-agent:1.10.5
|
||||
net.bytebuddy:byte-buddy:1.10.17
|
||||
net.java.dev.jna:jna:5.5.0
|
||||
org.apache.avro:avro:1.8.2
|
||||
org.apache.beam:beam-model-fn-execution:2.23.0
|
||||
org.apache.beam:beam-model-job-management:2.23.0
|
||||
org.apache.beam:beam-model-pipeline:2.23.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.23.0
|
||||
org.apache.beam:beam-runners-direct-java:2.23.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.23.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.23.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.23.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.23.0
|
||||
org.apache.beam:beam-model-fn-execution:2.27.0
|
||||
org.apache.beam:beam-model-job-management:2.27.0
|
||||
org.apache.beam:beam-model-pipeline:2.27.0
|
||||
org.apache.beam:beam-runners-core-construction-java:2.27.0
|
||||
org.apache.beam:beam-runners-direct-java:2.27.0
|
||||
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.27.0
|
||||
org.apache.beam:beam-runners-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-expansion-service:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.27.0
|
||||
org.apache.beam:beam-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.beam:beam-sdks-java-fn-execution:2.27.0
|
||||
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.27.0
|
||||
org.apache.beam:beam-vendor-bytebuddy-1_10_8:0.1
|
||||
org.apache.beam:beam-vendor-grpc-1_26_0:0.3
|
||||
org.apache.beam:beam-vendor-guava-26_0-jre:0.1
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.23.0
|
||||
org.apache.beam:beam-vendor-sdks-java-extensions-protobuf:2.27.0
|
||||
org.apache.commons:commons-compress:1.20
|
||||
org.apache.commons:commons-exec:1.3
|
||||
org.apache.commons:commons-lang3:3.8.1
|
||||
@@ -239,20 +249,20 @@ org.bouncycastle:bcpg-jdk15on:1.61
|
||||
org.bouncycastle:bcpkix-jdk15on:1.61
|
||||
org.bouncycastle:bcprov-jdk15on:1.61
|
||||
org.checkerframework:checker-compat-qual:2.5.5
|
||||
org.checkerframework:checker-qual:3.5.0
|
||||
org.checkerframework:checker-qual:3.7.0
|
||||
org.codehaus.jackson:jackson-core-asl:1.9.13
|
||||
org.codehaus.jackson:jackson-mapper-asl:1.9.13
|
||||
org.codehaus.mojo:animal-sniffer-annotations:1.19
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.2.1
|
||||
org.conscrypt:conscrypt-openjdk-uber:2.5.1
|
||||
org.dom4j:dom4j:2.1.3
|
||||
org.easymock:easymock:3.0
|
||||
org.eclipse.jgit:org.eclipse.jgit:4.4.1.201607150455-r
|
||||
org.flywaydb:flyway-core:5.2.4
|
||||
org.glassfish.jaxb:jaxb-runtime:2.3.1
|
||||
org.glassfish.jaxb:txw2:2.3.1
|
||||
org.hamcrest:hamcrest-all:1.3
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest-library:1.3
|
||||
org.hamcrest:hamcrest-core:2.2
|
||||
org.hamcrest:hamcrest-library:2.2
|
||||
org.hamcrest:hamcrest:2.2
|
||||
org.hibernate.common:hibernate-commons-annotations:5.1.2.Final
|
||||
org.hibernate:hibernate-core:5.4.23.Final
|
||||
org.hibernate:hibernate-hikaricp:5.4.23.Final
|
||||
@@ -261,7 +271,7 @@ org.jboss.logging:jboss-logging:3.4.1.Final
|
||||
org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.1.1.Final
|
||||
org.jboss:jandex:2.1.3.Final
|
||||
org.joda:joda-money:1.0.1
|
||||
org.json:json:20160810
|
||||
org.json:json:20200518
|
||||
org.jsoup:jsoup:1.13.1
|
||||
org.junit-pioneer:junit-pioneer:0.7.0
|
||||
org.junit.jupiter:junit-jupiter-api:5.7.0
|
||||
@@ -309,7 +319,7 @@ org.testcontainers:junit-jupiter:1.15.1
|
||||
org.testcontainers:postgresql:1.15.1
|
||||
org.testcontainers:selenium:1.15.1
|
||||
org.testcontainers:testcontainers:1.15.1
|
||||
org.threeten:threetenbp:1.4.5
|
||||
org.threeten:threetenbp:1.5.0
|
||||
org.tukaani:xz:1.8
|
||||
org.w3c.css:sac:1.3
|
||||
org.webjars.npm:viz.js-for-graphviz-java:2.1.3
|
||||
|
||||
@@ -140,11 +140,13 @@ public class ReplayCommitLogsToSqlAction implements Runnable {
|
||||
transaction.stream()
|
||||
.sorted(ReplayCommitLogsToSqlAction::compareByWeight)
|
||||
.forEach(
|
||||
versionedEntity ->
|
||||
versionedEntity
|
||||
.getEntity()
|
||||
.ifPresentOrElse(
|
||||
this::handleEntityPut, () -> handleEntityDelete(versionedEntity)));
|
||||
versionedEntity -> {
|
||||
if (versionedEntity.getEntity().isPresent()) {
|
||||
handleEntityPut(versionedEntity.getEntity().get());
|
||||
} else {
|
||||
handleEntityDelete(versionedEntity);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void handleEntityPut(Entity entity) {
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
// Copyright 2020 The Nomulus Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package google.registry.beam.common;
|
||||
|
||||
import static com.google.common.base.Verify.verify;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm;
|
||||
|
||||
import google.registry.backup.AppEngineEnvironment;
|
||||
import google.registry.persistence.transaction.JpaTransactionManager;
|
||||
import java.io.Serializable;
|
||||
import org.apache.beam.sdk.Pipeline;
|
||||
import org.apache.beam.sdk.metrics.Counter;
|
||||
import org.apache.beam.sdk.metrics.Metrics;
|
||||
import org.apache.beam.sdk.options.PipelineOptionsFactory;
|
||||
import org.apache.beam.sdk.transforms.Create;
|
||||
import org.apache.beam.sdk.transforms.DoFn;
|
||||
import org.apache.beam.sdk.transforms.ParDo;
|
||||
|
||||
/** Toy pipeline that demonstrates how to use {@link JpaTransactionManager} in BEAM pipelines. */
|
||||
public class JpaDemoPipeline implements Serializable {
|
||||
|
||||
public static void main(String[] args) {
|
||||
RegistryPipelineOptions options =
|
||||
PipelineOptionsFactory.fromArgs(args).withValidation().as(RegistryPipelineOptions.class);
|
||||
RegistryPipelineOptions.validateRegistryPipelineOptions(options);
|
||||
|
||||
Pipeline pipeline = Pipeline.create(options);
|
||||
pipeline
|
||||
.apply("Start", Create.of((Void) null))
|
||||
.apply(
|
||||
"Generate Elements",
|
||||
ParDo.of(
|
||||
new DoFn<Void, Void>() {
|
||||
@ProcessElement
|
||||
public void processElement(OutputReceiver<Void> output) {
|
||||
for (int i = 0; i < 500; i++) {
|
||||
output.output(null);
|
||||
}
|
||||
}
|
||||
}))
|
||||
.apply(
|
||||
"Make Query",
|
||||
ParDo.of(
|
||||
new DoFn<Void, Void>() {
|
||||
private Counter counter = Metrics.counter("Demo", "Read");
|
||||
|
||||
@ProcessElement
|
||||
public void processElement() {
|
||||
// AppEngineEnvironment is needed as long as JPA entity classes still depends
|
||||
// on Objectify.
|
||||
try (AppEngineEnvironment allowOfyEntity = new AppEngineEnvironment()) {
|
||||
int result =
|
||||
(Integer)
|
||||
jpaTm()
|
||||
.transact(
|
||||
() ->
|
||||
jpaTm()
|
||||
.getEntityManager()
|
||||
.createNativeQuery("select 1;")
|
||||
.getSingleResult());
|
||||
verify(result == 1, "Expecting 1, got %s.", result);
|
||||
}
|
||||
counter.inc();
|
||||
}
|
||||
}));
|
||||
|
||||
pipeline.run();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
// Copyright 2020 The Nomulus Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package google.registry.beam.common;
|
||||
|
||||
import dagger.Component;
|
||||
import dagger.Lazy;
|
||||
import google.registry.config.CredentialModule;
|
||||
import google.registry.config.RegistryConfig.Config;
|
||||
import google.registry.config.RegistryConfig.ConfigModule;
|
||||
import google.registry.persistence.PersistenceModule;
|
||||
import google.registry.persistence.PersistenceModule.BeamJpaTm;
|
||||
import google.registry.persistence.transaction.JpaTransactionManager;
|
||||
import google.registry.privileges.secretmanager.SecretManagerModule;
|
||||
import google.registry.util.UtilsModule;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
/** Component that provides everything needed on a Pipeline worker. */
|
||||
@Singleton
|
||||
@Component(
|
||||
modules = {
|
||||
ConfigModule.class,
|
||||
CredentialModule.class,
|
||||
PersistenceModule.class,
|
||||
SecretManagerModule.class,
|
||||
UtilsModule.class
|
||||
})
|
||||
public interface RegistryPipelineComponent {
|
||||
|
||||
/** Returns the GCP project ID. */
|
||||
@Config("projectId")
|
||||
String getProjectId();
|
||||
|
||||
@BeamJpaTm
|
||||
Lazy<JpaTransactionManager> getJpaTransactionManager();
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
// Copyright 2020 The Nomulus Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package google.registry.beam.common;
|
||||
|
||||
import google.registry.config.RegistryEnvironment;
|
||||
import java.util.Objects;
|
||||
import javax.annotation.Nullable;
|
||||
import org.apache.beam.sdk.extensions.gcp.options.GcpOptions;
|
||||
import org.apache.beam.sdk.options.Description;
|
||||
|
||||
/** Defines Nomulus-specific pipeline options. */
|
||||
public interface RegistryPipelineOptions extends GcpOptions {
|
||||
|
||||
@Description("The Registry environment.")
|
||||
@Nullable
|
||||
RegistryEnvironment getRegistryEnvironment();
|
||||
|
||||
void setRegistryEnvironment(RegistryEnvironment environment);
|
||||
|
||||
/**
|
||||
* Validates the GCP project and Registry environment settings in {@code option}. If project is
|
||||
* undefined, it is set according to the Registry environment; if project is defined but
|
||||
* inconsistent with the Registry environment, an {@link IllegalArgumentException} will be thrown.
|
||||
*
|
||||
* <p>This method may modify the system property ("google.registry.environment" which is defined
|
||||
* in {@link RegistryEnvironment}). Tests calling this method must restore the original
|
||||
* environment on completion.
|
||||
*/
|
||||
static void validateRegistryPipelineOptions(RegistryPipelineOptions option) {
|
||||
RegistryEnvironment environment = option.getRegistryEnvironment();
|
||||
if (environment == null) {
|
||||
return;
|
||||
}
|
||||
environment.setup();
|
||||
String projectByEnv = DaggerRegistryPipelineComponent.create().getProjectId();
|
||||
if (Objects.equals(option.getProject(), projectByEnv)) {
|
||||
return;
|
||||
}
|
||||
if (option.getProject() == null) {
|
||||
option.setProject(projectByEnv);
|
||||
return;
|
||||
}
|
||||
throw new IllegalArgumentException(
|
||||
"Arguments for --project and --registryEnvironment do not match.");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
// Copyright 2020 The Nomulus Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package google.registry.beam.common;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import dagger.Lazy;
|
||||
import google.registry.config.RegistryEnvironment;
|
||||
import google.registry.persistence.transaction.JpaTransactionManager;
|
||||
import google.registry.persistence.transaction.TransactionManagerFactory;
|
||||
import org.apache.beam.sdk.harness.JvmInitializer;
|
||||
import org.apache.beam.sdk.options.PipelineOptions;
|
||||
|
||||
/**
|
||||
* Sets up Nomulus environment and initializes JPA on each pipeline worker.
|
||||
*
|
||||
* <p>This class only takes effect in portable beam pipeline runners (including the Cloud Dataflow
|
||||
* runner). It is not invoked in test pipelines.
|
||||
*/
|
||||
@AutoService(JvmInitializer.class)
|
||||
public class RegistryPipelineWorkerInitializer implements JvmInitializer {
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
@Override
|
||||
public void beforeProcessing(PipelineOptions options) {
|
||||
RegistryEnvironment environment =
|
||||
options.as(RegistryPipelineOptions.class).getRegistryEnvironment();
|
||||
if (environment == null || environment.equals(RegistryEnvironment.UNITTEST)) {
|
||||
return;
|
||||
}
|
||||
logger.atInfo().log("Setting up RegistryEnvironment: %s", environment);
|
||||
environment.setup();
|
||||
Lazy<JpaTransactionManager> transactionManagerLazy =
|
||||
DaggerRegistryPipelineComponent.create().getJpaTransactionManager();
|
||||
TransactionManagerFactory.setJpaTmOnBeamWorker(transactionManagerLazy::get);
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,6 @@ package google.registry.export;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static com.google.common.base.Strings.isNullOrEmpty;
|
||||
import static com.google.common.net.MediaType.PLAIN_TEXT_UTF_8;
|
||||
import static google.registry.model.registry.label.PremiumListUtils.loadPremiumListEntries;
|
||||
import static google.registry.request.Action.Method.POST;
|
||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
|
||||
@@ -32,7 +31,7 @@ import com.google.common.flogger.FluentLogger;
|
||||
import com.google.common.net.MediaType;
|
||||
import google.registry.config.RegistryConfig.Config;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.model.registry.label.PremiumListDualDao;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.Parameter;
|
||||
import google.registry.request.RequestParameters;
|
||||
@@ -137,10 +136,11 @@ public class ExportPremiumTermsAction implements Runnable {
|
||||
}
|
||||
|
||||
private String getFormattedPremiumTerms(Registry registry) {
|
||||
Optional<PremiumList> premiumList = PremiumList.getCached(registry.getPremiumList().getName());
|
||||
checkState(premiumList.isPresent(), "Could not load premium list for " + tld);
|
||||
String premiumListName = registry.getPremiumList().getName();
|
||||
checkState(
|
||||
PremiumListDualDao.exists(premiumListName), "Could not load premium list for " + tld);
|
||||
SortedSet<String> premiumTerms =
|
||||
Streams.stream(loadPremiumListEntries(premiumList.get()))
|
||||
Streams.stream(PremiumListDualDao.loadAllPremiumListEntries(premiumListName))
|
||||
.map(entry -> Joiner.on(",").join(entry.getLabel(), entry.getValue()))
|
||||
.collect(ImmutableSortedSet.toImmutableSortedSet(String::compareTo));
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ import google.registry.model.registrar.RegistrarContact;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.model.registry.Registry.TldState;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.model.registry.label.PremiumListDualDao;
|
||||
import google.registry.util.CidrAddressBlock;
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
@@ -288,7 +289,7 @@ public final class OteAccountBuilder {
|
||||
boolean isEarlyAccess,
|
||||
int roidSuffix) {
|
||||
String tldNameAlphaNumerical = tldName.replaceAll("[^a-z0-9]", "");
|
||||
Optional<PremiumList> premiumList = PremiumList.getUncached(DEFAULT_PREMIUM_LIST);
|
||||
Optional<PremiumList> premiumList = PremiumListDualDao.getLatestRevision(DEFAULT_PREMIUM_LIST);
|
||||
checkState(premiumList.isPresent(), "Couldn't find premium list %s.", DEFAULT_PREMIUM_LIST);
|
||||
Registry.Builder builder =
|
||||
new Registry.Builder()
|
||||
|
||||
@@ -406,17 +406,20 @@ public abstract class PollMessage extends ImmutableObject
|
||||
pendingActionNotificationResponse.processedDate));
|
||||
}
|
||||
if (contactId != null && transferResponse != null) {
|
||||
contactTransferResponses =
|
||||
ImmutableList.of(
|
||||
new ContactTransferResponse.Builder()
|
||||
.setContactId(contactId)
|
||||
.setGainingClientId(transferResponse.getGainingClientId())
|
||||
.setLosingClientId(transferResponse.getLosingClientId())
|
||||
.setTransferStatus(transferResponse.getTransferStatus())
|
||||
.setTransferRequestTime(transferResponse.getTransferRequestTime())
|
||||
.setPendingTransferExpirationTime(
|
||||
transferResponse.getPendingTransferExpirationTime())
|
||||
.build());
|
||||
// The transferResponse is currently an unspecialized TransferResponse instance, create a
|
||||
// ContactTransferResponse so that the value is consistently specialized and store it in the
|
||||
// list representation for datastore.
|
||||
transferResponse =
|
||||
new ContactTransferResponse.Builder()
|
||||
.setContactId(contactId)
|
||||
.setGainingClientId(transferResponse.getGainingClientId())
|
||||
.setLosingClientId(transferResponse.getLosingClientId())
|
||||
.setTransferStatus(transferResponse.getTransferStatus())
|
||||
.setTransferRequestTime(transferResponse.getTransferRequestTime())
|
||||
.setPendingTransferExpirationTime(
|
||||
transferResponse.getPendingTransferExpirationTime())
|
||||
.build();
|
||||
contactTransferResponses = ImmutableList.of((ContactTransferResponse) transferResponse);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
package google.registry.model.pricing;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static google.registry.model.registry.label.PremiumListUtils.getPremiumPrice;
|
||||
import static google.registry.util.DomainNameUtils.getTldFromDomainName;
|
||||
|
||||
import com.google.common.net.InternetDomainName;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.model.registry.label.PremiumListDualDao;
|
||||
import java.util.Optional;
|
||||
import javax.inject.Inject;
|
||||
import org.joda.money.Money;
|
||||
@@ -38,7 +38,7 @@ public final class StaticPremiumListPricingEngine implements PremiumPricingEngin
|
||||
String tld = getTldFromDomainName(fullyQualifiedDomainName);
|
||||
String label = InternetDomainName.from(fullyQualifiedDomainName).parts().get(0);
|
||||
Registry registry = Registry.get(checkNotNull(tld, "tld"));
|
||||
Optional<Money> premiumPrice = getPremiumPrice(label, registry);
|
||||
Optional<Money> premiumPrice = PremiumListDualDao.getPremiumPrice(label, registry);
|
||||
return DomainPrices.create(
|
||||
premiumPrice.isPresent(),
|
||||
premiumPrice.orElse(registry.getStandardCreateCost()),
|
||||
|
||||
@@ -996,6 +996,13 @@ public class Registrar extends ImmutableObject
|
||||
return CACHE_BY_CLIENT_ID.get().values();
|
||||
}
|
||||
|
||||
/** Loads all registrar keys using an in-memory cache. */
|
||||
public static ImmutableSet<VKey<Registrar>> loadAllKeysCached() {
|
||||
return CACHE_BY_CLIENT_ID.get().keySet().stream()
|
||||
.map(Registrar::createVKey)
|
||||
.collect(toImmutableSet());
|
||||
}
|
||||
|
||||
/** Loads and returns a registrar entity by its client id directly from Datastore. */
|
||||
public static Optional<Registrar> loadByClientId(String clientId) {
|
||||
checkArgument(!Strings.isNullOrEmpty(clientId), "clientId must be specified");
|
||||
|
||||
@@ -18,23 +18,12 @@ import static com.google.common.base.Charsets.US_ASCII;
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.hash.Funnels.stringFunnel;
|
||||
import static com.google.common.hash.Funnels.unencodedCharsFunnel;
|
||||
import static google.registry.config.RegistryConfig.getDomainLabelListCacheDuration;
|
||||
import static google.registry.config.RegistryConfig.getSingletonCachePersistDuration;
|
||||
import static google.registry.config.RegistryConfig.getStaticPremiumListMaxCachedEntries;
|
||||
import static google.registry.model.common.EntityGroupRoot.getCrossTldKey;
|
||||
import static google.registry.model.ofy.ObjectifyService.allocateId;
|
||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.CacheLoader.InvalidCacheLoadException;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.hash.BloomFilter;
|
||||
import com.google.common.util.concurrent.UncheckedExecutionException;
|
||||
import com.googlecode.objectify.Key;
|
||||
import com.googlecode.objectify.annotation.Entity;
|
||||
import com.googlecode.objectify.annotation.Id;
|
||||
@@ -46,18 +35,14 @@ import google.registry.model.annotations.ReportedOn;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.schema.replay.DatastoreOnlyEntity;
|
||||
import google.registry.schema.replay.NonReplicatedEntity;
|
||||
import google.registry.schema.tld.PremiumListDao;
|
||||
import google.registry.util.NonFinalForTesting;
|
||||
import google.registry.schema.tld.PremiumListSqlDao;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.persistence.CollectionTable;
|
||||
import javax.persistence.Column;
|
||||
@@ -72,7 +57,6 @@ import javax.persistence.Transient;
|
||||
import org.hibernate.LazyInitializationException;
|
||||
import org.joda.money.CurrencyUnit;
|
||||
import org.joda.money.Money;
|
||||
import org.joda.time.Duration;
|
||||
|
||||
/**
|
||||
* A premium list entity that is used to check domain label prices.
|
||||
@@ -171,124 +155,11 @@ public final class PremiumList extends BaseDomainLabelList<Money, PremiumList.Pr
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* In-memory cache for premium lists.
|
||||
*
|
||||
* <p>This is cached for a shorter duration because we need to periodically reload this entity to
|
||||
* check if a new revision has been published, and if so, then use that.
|
||||
*/
|
||||
@NonFinalForTesting
|
||||
static LoadingCache<String, PremiumList> cachePremiumLists =
|
||||
createCachePremiumLists(getDomainLabelListCacheDuration());
|
||||
|
||||
@VisibleForTesting
|
||||
public static void setPremiumListCacheForTest(Optional<Duration> expiry) {
|
||||
Duration effectiveExpiry = expiry.orElse(getDomainLabelListCacheDuration());
|
||||
cachePremiumLists = createCachePremiumLists(effectiveExpiry);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
static LoadingCache<String, PremiumList> createCachePremiumLists(Duration cachePersistDuration) {
|
||||
return CacheBuilder.newBuilder()
|
||||
.expireAfterWrite(java.time.Duration.ofMillis(cachePersistDuration.getMillis()))
|
||||
.build(
|
||||
new CacheLoader<String, PremiumList>() {
|
||||
@Override
|
||||
public PremiumList load(final String name) {
|
||||
return tm().doTransactionless(() -> loadPremiumList(name));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static PremiumList loadPremiumList(String name) {
|
||||
return tm().isOfy()
|
||||
? ofy().load().type(PremiumList.class).parent(getCrossTldKey()).id(name).now()
|
||||
: PremiumListDao.getLatestRevision(name).orElseThrow(NoSuchElementException::new);
|
||||
}
|
||||
|
||||
/**
|
||||
* In-memory cache for {@link PremiumListRevision}s, used for retrieving Bloom filters quickly.
|
||||
*
|
||||
* <p>This is cached for a long duration (essentially indefinitely) because a given {@link
|
||||
* PremiumListRevision} is immutable and cannot ever be changed once created, so its cache need
|
||||
* not ever expire.
|
||||
*/
|
||||
static final LoadingCache<Key<PremiumListRevision>, PremiumListRevision>
|
||||
cachePremiumListRevisions =
|
||||
CacheBuilder.newBuilder()
|
||||
.expireAfterWrite(
|
||||
java.time.Duration.ofMillis(getSingletonCachePersistDuration().getMillis()))
|
||||
.build(
|
||||
new CacheLoader<Key<PremiumListRevision>, PremiumListRevision>() {
|
||||
@Override
|
||||
public PremiumListRevision load(final Key<PremiumListRevision> revisionKey) {
|
||||
return tm().doTransactionless(() -> ofy().load().key(revisionKey).now());
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* In-memory cache for {@link PremiumListEntry}s for a given label and {@link PremiumListRevision}
|
||||
*
|
||||
* <p>Because the PremiumList itself makes up part of the PremiumListRevision's key, this is
|
||||
* specific to a given premium list. Premium list entries might not be present, as indicated by
|
||||
* the Optional wrapper, and we want to cache that as well.
|
||||
*
|
||||
* <p>This is cached for a long duration (essentially indefinitely) because a given {@link
|
||||
* PremiumListRevision} and its child {@link PremiumListEntry}s are immutable and cannot ever be
|
||||
* changed once created, so the cache need not ever expire.
|
||||
*
|
||||
* <p>A maximum size is set here on the cache because it can potentially grow too big to fit in
|
||||
* memory if there are a large number of distinct premium list entries being queried (both those
|
||||
* that exist, as well as those that might exist according to the Bloom filter, must be cached).
|
||||
* The entries judged least likely to be accessed again will be evicted first.
|
||||
*/
|
||||
@NonFinalForTesting
|
||||
static LoadingCache<Key<PremiumListEntry>, Optional<PremiumListEntry>> cachePremiumListEntries =
|
||||
createCachePremiumListEntries(getSingletonCachePersistDuration());
|
||||
|
||||
@VisibleForTesting
|
||||
public static void setPremiumListEntriesCacheForTest(Optional<Duration> expiry) {
|
||||
Duration effectiveExpiry = expiry.orElse(getSingletonCachePersistDuration());
|
||||
cachePremiumListEntries = createCachePremiumListEntries(effectiveExpiry);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
static LoadingCache<Key<PremiumListEntry>, Optional<PremiumListEntry>>
|
||||
createCachePremiumListEntries(Duration cachePersistDuration) {
|
||||
return CacheBuilder.newBuilder()
|
||||
.expireAfterWrite(java.time.Duration.ofMillis(cachePersistDuration.getMillis()))
|
||||
.maximumSize(getStaticPremiumListMaxCachedEntries())
|
||||
.build(
|
||||
new CacheLoader<Key<PremiumListEntry>, Optional<PremiumListEntry>>() {
|
||||
@Override
|
||||
public Optional<PremiumListEntry> load(final Key<PremiumListEntry> entryKey) {
|
||||
return tm().doTransactionless(
|
||||
() -> Optional.ofNullable(ofy().load().key(entryKey).now()));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
public Key<PremiumListRevision> getRevisionKey() {
|
||||
return revisionKey;
|
||||
}
|
||||
|
||||
/** Returns the PremiumList with the specified name, from cache. */
|
||||
public static Optional<PremiumList> getCached(String name) {
|
||||
try {
|
||||
return Optional.of(cachePremiumLists.get(name));
|
||||
} catch (InvalidCacheLoadException e) {
|
||||
return Optional.empty();
|
||||
} catch (ExecutionException e) {
|
||||
throw new UncheckedExecutionException("Could not retrieve premium list named " + name, e);
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns the PremiumList with the specified name, uncached. */
|
||||
public static Optional<PremiumList> getUncached(String name) {
|
||||
return Optional.ofNullable(loadPremiumList(name));
|
||||
}
|
||||
|
||||
/** Returns the {@link CurrencyUnit} used for this list. */
|
||||
public CurrencyUnit getCurrency() {
|
||||
return currency;
|
||||
@@ -300,7 +171,7 @@ public final class PremiumList extends BaseDomainLabelList<Money, PremiumList.Pr
|
||||
* <p>Note that this is lazily loaded and thus will throw a {@link LazyInitializationException} if
|
||||
* used outside the transaction in which the given entity was loaded. You generally should not be
|
||||
* using this anyway as it's inefficient to load all of the PremiumEntry rows if you don't need
|
||||
* them. To check prices, use {@link PremiumListDao#getPremiumPrice} instead.
|
||||
* them. To check prices, use {@link PremiumListSqlDao#getPremiumPrice} instead.
|
||||
*/
|
||||
@Nullable
|
||||
public ImmutableMap<String, BigDecimal> getLabelsToPrices() {
|
||||
|
||||
@@ -0,0 +1,365 @@
|
||||
// Copyright 2021 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.model.registry.label;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static com.google.common.collect.ImmutableSet.toImmutableSet;
|
||||
import static com.google.common.collect.Iterables.partition;
|
||||
import static google.registry.config.RegistryConfig.getDomainLabelListCacheDuration;
|
||||
import static google.registry.config.RegistryConfig.getSingletonCachePersistDuration;
|
||||
import static google.registry.config.RegistryConfig.getStaticPremiumListMaxCachedEntries;
|
||||
import static google.registry.model.common.EntityGroupRoot.getCrossTldKey;
|
||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
||||
import static google.registry.model.registry.label.DomainLabelMetrics.PremiumListCheckOutcome.BLOOM_FILTER_NEGATIVE;
|
||||
import static google.registry.model.registry.label.DomainLabelMetrics.PremiumListCheckOutcome.CACHED_NEGATIVE;
|
||||
import static google.registry.model.registry.label.DomainLabelMetrics.PremiumListCheckOutcome.CACHED_POSITIVE;
|
||||
import static google.registry.model.registry.label.DomainLabelMetrics.PremiumListCheckOutcome.UNCACHED_NEGATIVE;
|
||||
import static google.registry.model.registry.label.DomainLabelMetrics.PremiumListCheckOutcome.UNCACHED_POSITIVE;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.ofyTm;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
||||
import static org.joda.time.DateTimeZone.UTC;
|
||||
|
||||
import com.google.auto.value.AutoValue;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.CacheLoader.InvalidCacheLoadException;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Streams;
|
||||
import com.googlecode.objectify.Key;
|
||||
import google.registry.model.registry.label.DomainLabelMetrics.PremiumListCheckOutcome;
|
||||
import google.registry.model.registry.label.PremiumList.PremiumListEntry;
|
||||
import google.registry.model.registry.label.PremiumList.PremiumListRevision;
|
||||
import google.registry.persistence.VKey;
|
||||
import google.registry.util.NonFinalForTesting;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import org.joda.money.Money;
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.Duration;
|
||||
|
||||
/**
|
||||
* DAO for {@link PremiumList} objects stored in Datastore.
|
||||
*
|
||||
* <p>This class handles both the mapping from string to Datastore-level PremiumList objects as well
|
||||
* as the mapping from PremiumList objects to the contents of those premium lists in the Datastore
|
||||
* world. Specifically, this deals with retrieving the most recent revision for a given list and
|
||||
* retrieving (or writing/deleting) all entries associated with that particular revision. The {@link
|
||||
* PremiumList} object itself, in the Datastore world, does not store the premium pricing data.
|
||||
*/
|
||||
public class PremiumListDatastoreDao {
|
||||
|
||||
/** The number of premium list entry entities that are created and deleted per batch. */
|
||||
private static final int TRANSACTION_BATCH_SIZE = 200;
|
||||
|
||||
/**
|
||||
* In-memory cache for premium lists.
|
||||
*
|
||||
* <p>This is cached for a shorter duration because we need to periodically reload this entity to
|
||||
* check if a new revision has been published, and if so, then use that.
|
||||
*
|
||||
* <p>We also cache the absence of premium lists with a given name to avoid unnecessary pointless
|
||||
* lookups. Note that this cache is only applicable to PremiumList objects stored in Datastore.
|
||||
*/
|
||||
@NonFinalForTesting
|
||||
static LoadingCache<String, Optional<PremiumList>> premiumListCache =
|
||||
createPremiumListCache(getDomainLabelListCacheDuration());
|
||||
|
||||
@VisibleForTesting
|
||||
public static void setPremiumListCacheForTest(Optional<Duration> expiry) {
|
||||
Duration effectiveExpiry = expiry.orElse(getSingletonCachePersistDuration());
|
||||
premiumListCache = createPremiumListCache(effectiveExpiry);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
public static LoadingCache<String, Optional<PremiumList>> createPremiumListCache(
|
||||
Duration cachePersistDuration) {
|
||||
return CacheBuilder.newBuilder()
|
||||
.expireAfterWrite(java.time.Duration.ofMillis(cachePersistDuration.getMillis()))
|
||||
.build(
|
||||
new CacheLoader<String, Optional<PremiumList>>() {
|
||||
@Override
|
||||
public Optional<PremiumList> load(final String name) {
|
||||
return tm().doTransactionless(() -> getLatestRevisionUncached(name));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* In-memory cache for {@link PremiumListRevision}s, used for retrieving Bloom filters quickly.
|
||||
*
|
||||
* <p>This is cached for a long duration (essentially indefinitely) because a given {@link
|
||||
* PremiumListRevision} is immutable and cannot ever be changed once created, so its cache need
|
||||
* not ever expire.
|
||||
*/
|
||||
static final LoadingCache<Key<PremiumListRevision>, PremiumListRevision>
|
||||
premiumListRevisionsCache =
|
||||
CacheBuilder.newBuilder()
|
||||
.expireAfterWrite(
|
||||
java.time.Duration.ofMillis(getSingletonCachePersistDuration().getMillis()))
|
||||
.build(
|
||||
new CacheLoader<Key<PremiumListRevision>, PremiumListRevision>() {
|
||||
@Override
|
||||
public PremiumListRevision load(final Key<PremiumListRevision> revisionKey) {
|
||||
return ofyTm().doTransactionless(() -> ofy().load().key(revisionKey).now());
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* In-memory cache for {@link PremiumListEntry}s for a given label and {@link PremiumListRevision}
|
||||
*
|
||||
* <p>Because the PremiumList itself makes up part of the PremiumListRevision's key, this is
|
||||
* specific to a given premium list. Premium list entries might not be present, as indicated by
|
||||
* the Optional wrapper, and we want to cache that as well.
|
||||
*
|
||||
* <p>This is cached for a long duration (essentially indefinitely) because a given {@link
|
||||
* PremiumListRevision} and its child {@link PremiumListEntry}s are immutable and cannot ever be
|
||||
* changed once created, so the cache need not ever expire.
|
||||
*
|
||||
* <p>A maximum size is set here on the cache because it can potentially grow too big to fit in
|
||||
* memory if there are a large number of distinct premium list entries being queried (both those
|
||||
* that exist, as well as those that might exist according to the Bloom filter, must be cached).
|
||||
* The entries judged least likely to be accessed again will be evicted first.
|
||||
*/
|
||||
@NonFinalForTesting
|
||||
static LoadingCache<Key<PremiumListEntry>, Optional<PremiumListEntry>> premiumListEntriesCache =
|
||||
createPremiumListEntriesCache(getSingletonCachePersistDuration());
|
||||
|
||||
@VisibleForTesting
|
||||
public static void setPremiumListEntriesCacheForTest(Optional<Duration> expiry) {
|
||||
Duration effectiveExpiry = expiry.orElse(getSingletonCachePersistDuration());
|
||||
premiumListEntriesCache = createPremiumListEntriesCache(effectiveExpiry);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
static LoadingCache<Key<PremiumListEntry>, Optional<PremiumListEntry>>
|
||||
createPremiumListEntriesCache(Duration cachePersistDuration) {
|
||||
return CacheBuilder.newBuilder()
|
||||
.expireAfterWrite(java.time.Duration.ofMillis(cachePersistDuration.getMillis()))
|
||||
.maximumSize(getStaticPremiumListMaxCachedEntries())
|
||||
.build(
|
||||
new CacheLoader<Key<PremiumListEntry>, Optional<PremiumListEntry>>() {
|
||||
@Override
|
||||
public Optional<PremiumListEntry> load(final Key<PremiumListEntry> entryKey) {
|
||||
return ofyTm()
|
||||
.doTransactionless(() -> Optional.ofNullable(ofy().load().key(entryKey).now()));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static Optional<PremiumList> getLatestRevision(String name) {
|
||||
return premiumListCache.getUnchecked(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the premium price for the specified list, label, and TLD, or absent if the label is not
|
||||
* premium.
|
||||
*/
|
||||
public static Optional<Money> getPremiumPrice(String premiumListName, String label, String tld) {
|
||||
DateTime startTime = DateTime.now(UTC);
|
||||
Optional<PremiumList> maybePremumList = getLatestRevision(premiumListName);
|
||||
if (!maybePremumList.isPresent()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
PremiumList premiumList = maybePremumList.get();
|
||||
// If we're dealing with a list from SQL, reload from Datastore if necessary
|
||||
if (premiumList.getRevisionKey() == null) {
|
||||
Optional<PremiumList> fromDatastore = getLatestRevision(premiumList.getName());
|
||||
if (fromDatastore.isPresent()) {
|
||||
premiumList = fromDatastore.get();
|
||||
} else {
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
PremiumListRevision revision;
|
||||
try {
|
||||
revision = premiumListRevisionsCache.get(premiumList.getRevisionKey());
|
||||
} catch (InvalidCacheLoadException | ExecutionException e) {
|
||||
throw new RuntimeException(
|
||||
"Could not load premium list revision " + premiumList.getRevisionKey(), e);
|
||||
}
|
||||
checkState(
|
||||
revision.getProbablePremiumLabels() != null,
|
||||
"Probable premium labels Bloom filter is null on revision '%s'",
|
||||
premiumList.getRevisionKey());
|
||||
|
||||
CheckResults checkResults = checkStatus(revision, label);
|
||||
DomainLabelMetrics.recordPremiumListCheckOutcome(
|
||||
tld,
|
||||
premiumList.getName(),
|
||||
checkResults.checkOutcome(),
|
||||
DateTime.now(UTC).getMillis() - startTime.getMillis());
|
||||
|
||||
return checkResults.premiumPrice();
|
||||
}
|
||||
|
||||
/**
|
||||
* Persists a new or updated PremiumList object and its descendant entities to Datastore.
|
||||
*
|
||||
* <p>The flow here is: save the new premium list entries parented on that revision entity,
|
||||
* save/update the PremiumList, and then delete the old premium list entries associated with the
|
||||
* old revision.
|
||||
*
|
||||
* <p>This is the only valid way to save these kinds of entities!
|
||||
*/
|
||||
public static PremiumList save(String name, List<String> inputData) {
|
||||
PremiumList premiumList = new PremiumList.Builder().setName(name).build();
|
||||
ImmutableMap<String, PremiumListEntry> premiumListEntries = premiumList.parse(inputData);
|
||||
final Optional<PremiumList> oldPremiumList = getLatestRevisionUncached(premiumList.getName());
|
||||
|
||||
// Create the new revision (with its Bloom filter) and parent the entries on it.
|
||||
final PremiumListRevision newRevision =
|
||||
PremiumListRevision.create(premiumList, premiumListEntries.keySet());
|
||||
final Key<PremiumListRevision> newRevisionKey = Key.create(newRevision);
|
||||
ImmutableSet<PremiumListEntry> parentedEntries =
|
||||
parentPremiumListEntriesOnRevision(premiumListEntries.values(), newRevisionKey);
|
||||
|
||||
// Save the new child entities in a series of transactions.
|
||||
for (final List<PremiumListEntry> batch : partition(parentedEntries, TRANSACTION_BATCH_SIZE)) {
|
||||
ofyTm().transactNew(() -> ofy().save().entities(batch));
|
||||
}
|
||||
|
||||
// Save the new PremiumList and revision itself.
|
||||
return ofyTm()
|
||||
.transactNew(
|
||||
() -> {
|
||||
DateTime now = ofyTm().getTransactionTime();
|
||||
// Assert that the premium list hasn't been changed since we started this process.
|
||||
Key<PremiumList> key =
|
||||
Key.create(getCrossTldKey(), PremiumList.class, premiumList.getName());
|
||||
Optional<PremiumList> existing =
|
||||
ofyTm().loadByKeyIfPresent(VKey.createOfy(PremiumList.class, key));
|
||||
checkOfyFieldsEqual(existing, oldPremiumList);
|
||||
PremiumList newList =
|
||||
premiumList
|
||||
.asBuilder()
|
||||
.setLastUpdateTime(now)
|
||||
.setCreationTime(
|
||||
oldPremiumList.isPresent() ? oldPremiumList.get().creationTime : now)
|
||||
.setRevision(newRevisionKey)
|
||||
.build();
|
||||
ofy().save().entities(newList, newRevision);
|
||||
premiumListCache.invalidate(premiumList.getName());
|
||||
return newList;
|
||||
});
|
||||
}
|
||||
|
||||
public static void delete(PremiumList premiumList) {
|
||||
ofyTm().transactNew(() -> ofy().delete().entity(premiumList));
|
||||
if (premiumList.getRevisionKey() == null) {
|
||||
return;
|
||||
}
|
||||
for (final List<Key<PremiumListEntry>> batch :
|
||||
partition(
|
||||
ofy().load().type(PremiumListEntry.class).ancestor(premiumList.revisionKey).keys(),
|
||||
TRANSACTION_BATCH_SIZE)) {
|
||||
ofyTm().transactNew(() -> ofy().delete().keys(batch));
|
||||
batch.forEach(premiumListEntriesCache::invalidate);
|
||||
}
|
||||
ofyTm().transactNew(() -> ofy().delete().key(premiumList.getRevisionKey()));
|
||||
premiumListCache.invalidate(premiumList.getName());
|
||||
premiumListRevisionsCache.invalidate(premiumList.getRevisionKey());
|
||||
}
|
||||
|
||||
/** Re-parents the given {@link PremiumListEntry}s on the given {@link PremiumListRevision}. */
|
||||
@VisibleForTesting
|
||||
public static ImmutableSet<PremiumListEntry> parentPremiumListEntriesOnRevision(
|
||||
Iterable<PremiumListEntry> entries, final Key<PremiumListRevision> revisionKey) {
|
||||
return Streams.stream(entries)
|
||||
.map((PremiumListEntry entry) -> entry.asBuilder().setParent(revisionKey).build())
|
||||
.collect(toImmutableSet());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all {@link PremiumListEntry PremiumListEntries} in the given {@code premiumList}.
|
||||
*
|
||||
* <p>This is an expensive operation and should only be used when the entire list is required.
|
||||
*/
|
||||
public static Iterable<PremiumListEntry> loadPremiumListEntriesUncached(PremiumList premiumList) {
|
||||
return ofy().load().type(PremiumListEntry.class).ancestor(premiumList.revisionKey).iterable();
|
||||
}
|
||||
|
||||
private static Optional<PremiumList> getLatestRevisionUncached(String name) {
|
||||
return Optional.ofNullable(
|
||||
ofy().load().key(Key.create(getCrossTldKey(), PremiumList.class, name)).now());
|
||||
}
|
||||
|
||||
private static void checkOfyFieldsEqual(
|
||||
Optional<PremiumList> oneOptional, Optional<PremiumList> twoOptional) {
|
||||
if (!oneOptional.isPresent()) {
|
||||
checkState(!twoOptional.isPresent(), "Premium list concurrently deleted");
|
||||
return;
|
||||
} else {
|
||||
checkState(twoOptional.isPresent(), "Premium list concurrently deleted");
|
||||
}
|
||||
PremiumList one = oneOptional.get();
|
||||
PremiumList two = twoOptional.get();
|
||||
checkState(
|
||||
Objects.equals(one.revisionKey, two.revisionKey),
|
||||
"Premium list revision key concurrently edited");
|
||||
checkState(Objects.equals(one.name, two.name), "Premium list name concurrently edited");
|
||||
checkState(Objects.equals(one.parent, two.parent), "Premium list parent concurrently edited");
|
||||
checkState(
|
||||
Objects.equals(one.creationTime, two.creationTime),
|
||||
"Premium list creation time concurrently edited");
|
||||
}
|
||||
|
||||
private static CheckResults checkStatus(PremiumListRevision premiumListRevision, String label) {
|
||||
if (!premiumListRevision.getProbablePremiumLabels().mightContain(label)) {
|
||||
return CheckResults.create(BLOOM_FILTER_NEGATIVE, Optional.empty());
|
||||
}
|
||||
|
||||
Key<PremiumListEntry> entryKey =
|
||||
Key.create(Key.create(premiumListRevision), PremiumListEntry.class, label);
|
||||
try {
|
||||
// getIfPresent() returns null if the key is not in the cache
|
||||
Optional<PremiumListEntry> entry = premiumListEntriesCache.getIfPresent(entryKey);
|
||||
if (entry != null) {
|
||||
if (entry.isPresent()) {
|
||||
return CheckResults.create(CACHED_POSITIVE, Optional.of(entry.get().getValue()));
|
||||
} else {
|
||||
return CheckResults.create(CACHED_NEGATIVE, Optional.empty());
|
||||
}
|
||||
}
|
||||
|
||||
entry = premiumListEntriesCache.get(entryKey);
|
||||
if (entry.isPresent()) {
|
||||
return CheckResults.create(UNCACHED_POSITIVE, Optional.of(entry.get().getValue()));
|
||||
} else {
|
||||
return CheckResults.create(UNCACHED_NEGATIVE, Optional.empty());
|
||||
}
|
||||
} catch (InvalidCacheLoadException | ExecutionException e) {
|
||||
throw new RuntimeException("Could not load premium list entry " + entryKey, e);
|
||||
}
|
||||
}
|
||||
|
||||
/** Value type class used by {@link #checkStatus} to return the results of a premiumness check. */
|
||||
@AutoValue
|
||||
abstract static class CheckResults {
|
||||
static CheckResults create(PremiumListCheckOutcome checkOutcome, Optional<Money> premiumPrice) {
|
||||
return new AutoValue_PremiumListDatastoreDao_CheckResults(checkOutcome, premiumPrice);
|
||||
}
|
||||
|
||||
abstract PremiumListCheckOutcome checkOutcome();
|
||||
|
||||
abstract Optional<Money> premiumPrice();
|
||||
}
|
||||
|
||||
private PremiumListDatastoreDao() {}
|
||||
}
|
||||
@@ -0,0 +1,199 @@
|
||||
// Copyright 2021 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.model.registry.label;
|
||||
|
||||
import static com.google.common.collect.ImmutableList.toImmutableList;
|
||||
import static google.registry.model.DatabaseMigrationUtils.suppressExceptionUnlessInTest;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
||||
|
||||
import com.google.common.collect.Streams;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.model.registry.label.PremiumList.PremiumListEntry;
|
||||
import google.registry.schema.tld.PremiumListSqlDao;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import org.joda.money.CurrencyUnit;
|
||||
import org.joda.money.Money;
|
||||
|
||||
/**
|
||||
* DAO for {@link PremiumList} objects that handles the branching paths for SQL and Datastore.
|
||||
*
|
||||
* <p>For write actions, this class will perform the action against the primary database then, after
|
||||
* that success or failure, against the secondary database. If the secondary database fails, an
|
||||
* error is logged (but not thrown).
|
||||
*
|
||||
* <p>For read actions, when retrieving a price, we will log if the primary and secondary databases
|
||||
* have different values (or if the retrieval from the second database fails).
|
||||
*
|
||||
* <p>TODO (gbrodman): Change the isOfy() calls to the runtime selection of DBs when available
|
||||
*/
|
||||
public class PremiumListDualDao {
|
||||
|
||||
/**
|
||||
* Retrieves from the appropriate DB and returns the most recent premium list with the given name,
|
||||
* or absent if no such list exists.
|
||||
*/
|
||||
public static Optional<PremiumList> getLatestRevision(String premiumListName) {
|
||||
// TODO(gbrodman): Use Sarah's DB scheduler instead of this isOfy check
|
||||
if (tm().isOfy()) {
|
||||
return PremiumListDatastoreDao.getLatestRevision(premiumListName);
|
||||
} else {
|
||||
return PremiumListSqlDao.getLatestRevision(premiumListName);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the premium price for the specified label and registry.
|
||||
*
|
||||
* <p>Returns absent if the label is not premium or there is no premium list for this registry.
|
||||
*
|
||||
* <p>Retrieves the price from both primary and secondary databases, and logs in the event of a
|
||||
* failure in the secondary (but does not throw an exception).
|
||||
*/
|
||||
public static Optional<Money> getPremiumPrice(String label, Registry registry) {
|
||||
if (registry.getPremiumList() == null) {
|
||||
return Optional.empty();
|
||||
}
|
||||
String premiumListName = registry.getPremiumList().getName();
|
||||
Optional<Money> primaryResult;
|
||||
// TODO(gbrodman): Use Sarah's DB scheduler instead of this isOfy check
|
||||
if (tm().isOfy()) {
|
||||
primaryResult =
|
||||
PremiumListDatastoreDao.getPremiumPrice(premiumListName, label, registry.getTldStr());
|
||||
} else {
|
||||
primaryResult = PremiumListSqlDao.getPremiumPrice(premiumListName, label);
|
||||
}
|
||||
// Also load the value from the secondary DB, compare the two results, and log if different.
|
||||
// TODO(gbrodman): Use Sarah's DB scheduler instead of this isOfy check
|
||||
if (tm().isOfy()) {
|
||||
suppressExceptionUnlessInTest(
|
||||
() -> {
|
||||
Optional<Money> secondaryResult =
|
||||
PremiumListSqlDao.getPremiumPrice(premiumListName, label);
|
||||
if (!primaryResult.equals(secondaryResult)) {
|
||||
throw new IllegalStateException(
|
||||
String.format(
|
||||
"Unequal prices for domain %s.%s from primary Datastore DB (%s) and "
|
||||
+ "secondary SQL db (%s).",
|
||||
label, registry.getTldStr(), primaryResult, secondaryResult));
|
||||
}
|
||||
},
|
||||
String.format(
|
||||
"Error loading price of domain %s.%s from Cloud SQL.", label, registry.getTldStr()));
|
||||
} else {
|
||||
suppressExceptionUnlessInTest(
|
||||
() -> {
|
||||
Optional<Money> secondaryResult =
|
||||
PremiumListDatastoreDao.getPremiumPrice(
|
||||
premiumListName, label, registry.getTldStr());
|
||||
if (!primaryResult.equals(secondaryResult)) {
|
||||
throw new IllegalStateException(
|
||||
String.format(
|
||||
"Unequal prices for domain %s.%s from primary SQL DB (%s) and secondary "
|
||||
+ "Datastore db (%s).",
|
||||
label, registry.getTldStr(), primaryResult, secondaryResult));
|
||||
}
|
||||
},
|
||||
String.format(
|
||||
"Error loading price of domain %s.%s from Datastore.", label, registry.getTldStr()));
|
||||
}
|
||||
return primaryResult;
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the given list data to both primary and secondary databases.
|
||||
*
|
||||
* <p>Logs but doesn't throw an exception in the event of a failure when writing to the secondary
|
||||
* database.
|
||||
*/
|
||||
public static PremiumList save(String name, List<String> inputData) {
|
||||
PremiumList result;
|
||||
// TODO(gbrodman): Use Sarah's DB scheduler instead of this isOfy check
|
||||
if (tm().isOfy()) {
|
||||
result = PremiumListDatastoreDao.save(name, inputData);
|
||||
suppressExceptionUnlessInTest(
|
||||
() -> PremiumListSqlDao.save(name, inputData), "Error when saving premium list to SQL.");
|
||||
} else {
|
||||
result = PremiumListSqlDao.save(name, inputData);
|
||||
suppressExceptionUnlessInTest(
|
||||
() -> PremiumListDatastoreDao.save(name, inputData),
|
||||
"Error when saving premium list to Datastore.");
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes the premium list.
|
||||
*
|
||||
* <p>Logs but doesn't throw an exception in the event of a failure when deleting from the
|
||||
* secondary database.
|
||||
*/
|
||||
public static void delete(PremiumList premiumList) {
|
||||
// TODO(gbrodman): Use Sarah's DB scheduler instead of this isOfy check
|
||||
if (tm().isOfy()) {
|
||||
PremiumListDatastoreDao.delete(premiumList);
|
||||
suppressExceptionUnlessInTest(
|
||||
() -> PremiumListSqlDao.delete(premiumList),
|
||||
"Error when deleting premium list from SQL.");
|
||||
} else {
|
||||
PremiumListSqlDao.delete(premiumList);
|
||||
suppressExceptionUnlessInTest(
|
||||
() -> PremiumListDatastoreDao.delete(premiumList),
|
||||
"Error when deleting premium list from Datastore.");
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns whether or not there exists a premium list with the given name. */
|
||||
public static boolean exists(String premiumListName) {
|
||||
// It may seem like overkill, but loading the list has ways been the way we check existence and
|
||||
// given that we usually load the list around the time we check existence, we'll hit the cache
|
||||
// TODO(gbrodman): Use Sarah's DB scheduler instead of this isOfy check
|
||||
if (tm().isOfy()) {
|
||||
return PremiumListDatastoreDao.getLatestRevision(premiumListName).isPresent();
|
||||
} else {
|
||||
return PremiumListSqlDao.getLatestRevision(premiumListName).isPresent();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all {@link PremiumListEntry PremiumListEntries} in the list with the given name.
|
||||
*
|
||||
* <p>This is an expensive operation and should only be used when the entire list is required.
|
||||
*/
|
||||
public static Iterable<PremiumListEntry> loadAllPremiumListEntries(String premiumListName) {
|
||||
PremiumList premiumList =
|
||||
getLatestRevision(premiumListName)
|
||||
.orElseThrow(
|
||||
() ->
|
||||
new IllegalArgumentException(
|
||||
String.format("No premium list with name %s.", premiumListName)));
|
||||
// TODO(gbrodman): Use Sarah's DB scheduler instead of this isOfy check
|
||||
if (tm().isOfy()) {
|
||||
return PremiumListDatastoreDao.loadPremiumListEntriesUncached(premiumList);
|
||||
} else {
|
||||
CurrencyUnit currencyUnit = premiumList.getCurrency();
|
||||
return Streams.stream(PremiumListSqlDao.loadPremiumListEntriesUncached(premiumList))
|
||||
.map(
|
||||
premiumEntry ->
|
||||
new PremiumListEntry.Builder()
|
||||
.setPrice(Money.of(currencyUnit, premiumEntry.getPrice()))
|
||||
.setLabel(premiumEntry.getDomainLabel())
|
||||
.build())
|
||||
.collect(toImmutableList());
|
||||
}
|
||||
}
|
||||
|
||||
private PremiumListDualDao() {}
|
||||
}
|
||||
@@ -1,255 +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.model.registry.label;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static com.google.common.collect.ImmutableSet.toImmutableSet;
|
||||
import static com.google.common.collect.Iterables.partition;
|
||||
import static google.registry.model.common.EntityGroupRoot.getCrossTldKey;
|
||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
||||
import static google.registry.model.registry.label.DomainLabelMetrics.PremiumListCheckOutcome.BLOOM_FILTER_NEGATIVE;
|
||||
import static google.registry.model.registry.label.DomainLabelMetrics.PremiumListCheckOutcome.CACHED_NEGATIVE;
|
||||
import static google.registry.model.registry.label.DomainLabelMetrics.PremiumListCheckOutcome.CACHED_POSITIVE;
|
||||
import static google.registry.model.registry.label.DomainLabelMetrics.PremiumListCheckOutcome.UNCACHED_NEGATIVE;
|
||||
import static google.registry.model.registry.label.DomainLabelMetrics.PremiumListCheckOutcome.UNCACHED_POSITIVE;
|
||||
import static google.registry.model.registry.label.PremiumList.cachePremiumListEntries;
|
||||
import static google.registry.model.registry.label.PremiumList.cachePremiumListRevisions;
|
||||
import static google.registry.model.registry.label.PremiumList.cachePremiumLists;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
||||
import static org.joda.time.DateTimeZone.UTC;
|
||||
|
||||
import com.google.auto.value.AutoValue;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.cache.CacheLoader.InvalidCacheLoadException;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Streams;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import com.googlecode.objectify.Key;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.model.registry.label.DomainLabelMetrics.PremiumListCheckOutcome;
|
||||
import google.registry.model.registry.label.PremiumList.PremiumListEntry;
|
||||
import google.registry.model.registry.label.PremiumList.PremiumListRevision;
|
||||
import google.registry.schema.tld.PremiumListDao;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import org.joda.money.Money;
|
||||
import org.joda.time.DateTime;
|
||||
|
||||
/** Static helper methods for working with {@link PremiumList}s. */
|
||||
public final class PremiumListUtils {
|
||||
|
||||
/** The number of premium list entry entities that are created and deleted per batch. */
|
||||
private static final int TRANSACTION_BATCH_SIZE = 200;
|
||||
|
||||
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
|
||||
|
||||
/** Value type class used by {@link #checkStatus} to return the results of a premiumness check. */
|
||||
@AutoValue
|
||||
abstract static class CheckResults {
|
||||
static CheckResults create(PremiumListCheckOutcome checkOutcome, Optional<Money> premiumPrice) {
|
||||
return new AutoValue_PremiumListUtils_CheckResults(checkOutcome, premiumPrice);
|
||||
}
|
||||
|
||||
abstract PremiumListCheckOutcome checkOutcome();
|
||||
abstract Optional<Money> premiumPrice();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the premium price for the specified label and registry, or absent if the label is not
|
||||
* premium.
|
||||
*/
|
||||
public static Optional<Money> getPremiumPrice(String label, Registry registry) {
|
||||
// If the registry has no configured premium list, then no labels are premium.
|
||||
if (registry.getPremiumList() == null) {
|
||||
return Optional.empty();
|
||||
}
|
||||
DateTime startTime = DateTime.now(UTC);
|
||||
String listName = registry.getPremiumList().getName();
|
||||
Optional<PremiumList> optionalPremiumList = PremiumList.getCached(listName);
|
||||
checkState(optionalPremiumList.isPresent(), "Could not load premium list '%s'", listName);
|
||||
PremiumList premiumList = optionalPremiumList.get();
|
||||
PremiumListRevision revision;
|
||||
try {
|
||||
revision = cachePremiumListRevisions.get(premiumList.getRevisionKey());
|
||||
} catch (InvalidCacheLoadException | ExecutionException e) {
|
||||
throw new RuntimeException(
|
||||
"Could not load premium list revision " + premiumList.getRevisionKey(), e);
|
||||
}
|
||||
checkState(
|
||||
revision.getProbablePremiumLabels() != null,
|
||||
"Probable premium labels Bloom filter is null on revision '%s'",
|
||||
premiumList.getRevisionKey());
|
||||
|
||||
CheckResults checkResults = checkStatus(revision, label);
|
||||
DomainLabelMetrics.recordPremiumListCheckOutcome(
|
||||
registry.getTldStr(),
|
||||
listName,
|
||||
checkResults.checkOutcome(),
|
||||
DateTime.now(UTC).getMillis() - startTime.getMillis());
|
||||
|
||||
// Also load the value from Cloud SQL, compare the two results, and log if different.
|
||||
try {
|
||||
Optional<Money> priceFromSql = PremiumListDao.getPremiumPrice(label, registry);
|
||||
if (!priceFromSql.equals(checkResults.premiumPrice())) {
|
||||
logger.atWarning().log(
|
||||
"Unequal prices for domain %s.%s from Datastore (%s) and Cloud SQL (%s).",
|
||||
label, registry.getTldStr(), checkResults.premiumPrice(), priceFromSql);
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
logger.atSevere().withCause(t).log(
|
||||
"Error loading price of domain %s.%s from Cloud SQL.", label, registry.getTldStr());
|
||||
}
|
||||
return checkResults.premiumPrice();
|
||||
}
|
||||
|
||||
private static CheckResults checkStatus(PremiumListRevision premiumListRevision, String label) {
|
||||
if (!premiumListRevision.getProbablePremiumLabels().mightContain(label)) {
|
||||
return CheckResults.create(BLOOM_FILTER_NEGATIVE, Optional.empty());
|
||||
}
|
||||
|
||||
Key<PremiumListEntry> entryKey =
|
||||
Key.create(Key.create(premiumListRevision), PremiumListEntry.class, label);
|
||||
try {
|
||||
// getIfPresent() returns null if the key is not in the cache
|
||||
Optional<PremiumListEntry> entry = cachePremiumListEntries.getIfPresent(entryKey);
|
||||
if (entry != null) {
|
||||
if (entry.isPresent()) {
|
||||
return CheckResults.create(CACHED_POSITIVE, Optional.of(entry.get().getValue()));
|
||||
} else {
|
||||
return CheckResults.create(CACHED_NEGATIVE, Optional.empty());
|
||||
}
|
||||
}
|
||||
|
||||
entry = cachePremiumListEntries.get(entryKey);
|
||||
if (entry.isPresent()) {
|
||||
return CheckResults.create(UNCACHED_POSITIVE, Optional.of(entry.get().getValue()));
|
||||
} else {
|
||||
return CheckResults.create(UNCACHED_NEGATIVE, Optional.empty());
|
||||
}
|
||||
} catch (InvalidCacheLoadException | ExecutionException e) {
|
||||
throw new RuntimeException("Could not load premium list entry " + entryKey, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Persists a new or updated PremiumList object and its descendant entities to Datastore.
|
||||
*
|
||||
* <p>The flow here is: save the new premium list entries parented on that revision entity,
|
||||
* save/update the PremiumList, and then delete the old premium list entries associated with the
|
||||
* old revision.
|
||||
*
|
||||
* <p>This is the only valid way to save these kinds of entities!
|
||||
*/
|
||||
public static PremiumList savePremiumListAndEntries(
|
||||
final PremiumList premiumList,
|
||||
ImmutableMap<String, PremiumListEntry> premiumListEntries) {
|
||||
final Optional<PremiumList> oldPremiumList = PremiumList.getUncached(premiumList.getName());
|
||||
|
||||
// Create the new revision (with its Bloom filter) and parent the entries on it.
|
||||
final PremiumListRevision newRevision =
|
||||
PremiumListRevision.create(premiumList, premiumListEntries.keySet());
|
||||
final Key<PremiumListRevision> newRevisionKey = Key.create(newRevision);
|
||||
ImmutableSet<PremiumListEntry> parentedEntries =
|
||||
parentPremiumListEntriesOnRevision(premiumListEntries.values(), newRevisionKey);
|
||||
|
||||
// Save the new child entities in a series of transactions.
|
||||
for (final List<PremiumListEntry> batch : partition(parentedEntries, TRANSACTION_BATCH_SIZE)) {
|
||||
tm().transactNew(() -> ofy().save().entities(batch));
|
||||
}
|
||||
|
||||
// Save the new PremiumList and revision itself.
|
||||
PremiumList updated = tm().transactNew(() -> {
|
||||
DateTime now = tm().getTransactionTime();
|
||||
// Assert that the premium list hasn't been changed since we started this process.
|
||||
PremiumList existing = ofy().load()
|
||||
.type(PremiumList.class)
|
||||
.parent(getCrossTldKey())
|
||||
.id(premiumList.getName())
|
||||
.now();
|
||||
checkState(
|
||||
Objects.equals(existing, oldPremiumList.orElse(null)),
|
||||
"PremiumList was concurrently edited");
|
||||
PremiumList newList = premiumList.asBuilder()
|
||||
.setLastUpdateTime(now)
|
||||
.setCreationTime(oldPremiumList.isPresent() ? oldPremiumList.get().creationTime : now)
|
||||
.setRevision(newRevisionKey)
|
||||
.build();
|
||||
ofy().save().entities(newList, newRevision);
|
||||
return newList;
|
||||
});
|
||||
|
||||
// Invalidate the cache on this premium list so the change will take effect instantly. This only
|
||||
// clears the cache on the same instance that the update was run on, which will typically be the
|
||||
// only tools instance.
|
||||
PremiumList.cachePremiumLists.invalidate(premiumList.getName());
|
||||
|
||||
// TODO(b/79888775): Enqueue the oldPremiumList for deletion after at least
|
||||
// RegistryConfig.getDomainLabelListCacheDuration() has elapsed.
|
||||
return updated;
|
||||
}
|
||||
|
||||
public static PremiumList savePremiumListAndEntries(
|
||||
PremiumList premiumList, Iterable<String> premiumListLines) {
|
||||
return savePremiumListAndEntries(premiumList, premiumList.parse(premiumListLines));
|
||||
}
|
||||
|
||||
/** Re-parents the given {@link PremiumListEntry}s on the given {@link PremiumListRevision}. */
|
||||
@VisibleForTesting
|
||||
public static ImmutableSet<PremiumListEntry> parentPremiumListEntriesOnRevision(
|
||||
Iterable<PremiumListEntry> entries, final Key<PremiumListRevision> revisionKey) {
|
||||
return Streams.stream(entries)
|
||||
.map((PremiumListEntry entry) -> entry.asBuilder().setParent(revisionKey).build())
|
||||
.collect(toImmutableSet());
|
||||
}
|
||||
|
||||
/** Deletes the PremiumList and all of its child entities. */
|
||||
public static void deletePremiumList(final PremiumList premiumList) {
|
||||
tm().transactNew(() -> ofy().delete().entity(premiumList));
|
||||
deleteRevisionAndEntriesOfPremiumList(premiumList);
|
||||
cachePremiumLists.invalidate(premiumList.getName());
|
||||
}
|
||||
|
||||
static void deleteRevisionAndEntriesOfPremiumList(final PremiumList premiumList) {
|
||||
if (premiumList.getRevisionKey() == null) {
|
||||
return;
|
||||
}
|
||||
for (final List<Key<PremiumListEntry>> batch :
|
||||
partition(
|
||||
ofy().load().type(PremiumListEntry.class).ancestor(premiumList.revisionKey).keys(),
|
||||
TRANSACTION_BATCH_SIZE)) {
|
||||
tm().transactNew(() -> ofy().delete().keys(batch));
|
||||
}
|
||||
tm().transactNew(() -> ofy().delete().key(premiumList.getRevisionKey()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all {@link PremiumListEntry PremiumListEntries} in the given {@code premiumList}.
|
||||
*
|
||||
* <p>This is an expensive operation and should only be used when the entire list is required.
|
||||
*/
|
||||
public static Iterable<PremiumListEntry> loadPremiumListEntries(PremiumList premiumList) {
|
||||
return ofy().load().type(PremiumListEntry.class).ancestor(premiumList.revisionKey).iterable();
|
||||
}
|
||||
|
||||
/** Returns whether a PremiumList of the given name exists, bypassing the cache. */
|
||||
public static boolean doesPremiumListExist(String name) {
|
||||
return ofy().load().key(Key.create(getCrossTldKey(), PremiumList.class, name)).now() != null;
|
||||
}
|
||||
|
||||
private PremiumListUtils() {}
|
||||
}
|
||||
@@ -15,7 +15,6 @@
|
||||
package google.registry.model.transfer;
|
||||
|
||||
import static com.google.common.collect.ImmutableList.toImmutableList;
|
||||
import static google.registry.model.ImmutableObject.DoNotCompare;
|
||||
import static google.registry.util.CollectionUtils.isNullOrEmpty;
|
||||
import static google.registry.util.CollectionUtils.nullToEmpty;
|
||||
import static google.registry.util.CollectionUtils.nullToEmptyImmutableCopy;
|
||||
@@ -95,6 +94,9 @@ public abstract class TransferData<
|
||||
// the transfer request flow, when the instance is loaded from Datastore, we cannot make this
|
||||
// distinction because they are just VKeys. Also, the only way we use serverApproveEntities is to
|
||||
// just delete all the entities referenced by the VKeys, so we don't need to make the distinction.
|
||||
//
|
||||
// In addition, there may be a third poll message for the autorenew poll message on domain
|
||||
// transfer if applicable.
|
||||
@Ignore
|
||||
@Column(name = "transfer_poll_message_id_1")
|
||||
Long pollMessageId1;
|
||||
@@ -103,6 +105,10 @@ public abstract class TransferData<
|
||||
@Column(name = "transfer_poll_message_id_2")
|
||||
Long pollMessageId2;
|
||||
|
||||
@Ignore
|
||||
@Column(name = "transfer_poll_message_id_3")
|
||||
Long pollMessageId3;
|
||||
|
||||
public abstract boolean isEmpty();
|
||||
|
||||
@Nullable
|
||||
@@ -177,6 +183,10 @@ public abstract class TransferData<
|
||||
Key<PollMessage> ofyKey = Key.create(historyEntryKey, PollMessage.class, pollMessageId2);
|
||||
entityKeysBuilder.add(PollMessage.createVKey(ofyKey));
|
||||
}
|
||||
if (pollMessageId3 != null) {
|
||||
Key<PollMessage> ofyKey = Key.create(historyEntryKey, PollMessage.class, pollMessageId3);
|
||||
entityKeysBuilder.add(PollMessage.createVKey(ofyKey));
|
||||
}
|
||||
serverApproveEntities = entityKeysBuilder.build();
|
||||
}
|
||||
|
||||
@@ -189,6 +199,7 @@ public abstract class TransferData<
|
||||
transferData.repoId = null;
|
||||
transferData.pollMessageId1 = null;
|
||||
transferData.pollMessageId2 = null;
|
||||
transferData.pollMessageId3 = null;
|
||||
return;
|
||||
}
|
||||
// Each element in serverApproveEntities should have the exact same Key<HistoryEntry> as its
|
||||
@@ -204,6 +215,9 @@ public abstract class TransferData<
|
||||
if (sortedPollMessageIds.size() >= 2) {
|
||||
transferData.pollMessageId2 = sortedPollMessageIds.get(1);
|
||||
}
|
||||
if (sortedPollMessageIds.size() >= 3) {
|
||||
transferData.pollMessageId3 = sortedPollMessageIds.get(2);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -124,6 +124,28 @@ public abstract class PersistenceModule {
|
||||
@Config("beamIsolationOverride")
|
||||
abstract TransactionIsolationLevel bindBeamIsolationOverride();
|
||||
|
||||
/**
|
||||
* Optionally overrides the maximum connection pool size for JPA.
|
||||
*
|
||||
* <p>If present, this binding overrides the {@code HIKARI_MAXIMUM_POOL_SIZE} value set in {@link
|
||||
* #provideDefaultDatabaseConfigs()}. The default value is tuned for the Registry server on
|
||||
* AppEngine. Other applications such as the Nomulus tool and the BEAM pipeline, should override
|
||||
* it.
|
||||
*/
|
||||
@BindsOptionalOf
|
||||
@Config("jpaMaxPoolSizeOverride")
|
||||
abstract Integer bindJpaMaxPoolSizeOverride();
|
||||
|
||||
/**
|
||||
* Optionally overrides the Cloud SQL database instance's connection name.
|
||||
*
|
||||
* <p>This allows connections to alternative database instances, e.g., the read-only replica or a
|
||||
* test database.
|
||||
*/
|
||||
@BindsOptionalOf
|
||||
@Config("instanceConnectionNameOverride")
|
||||
abstract String instanceConnectionNameOverride();
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
@BeamPipelineCloudSqlConfigs
|
||||
@@ -172,6 +194,36 @@ public abstract class PersistenceModule {
|
||||
return new JpaTransactionManagerImpl(create(overrides), clock);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
@BeamJpaTm
|
||||
static JpaTransactionManager provideBeamJpaTm(
|
||||
SqlCredentialStore credentialStore,
|
||||
@Config("instanceConnectionNameOverride")
|
||||
Optional<Provider<String>> instanceConnectionNameOverride,
|
||||
@Config("jpaMaxPoolSizeOverride") Optional<Integer> jpaMaxConnectionPoolSizeOverride,
|
||||
@Config("beamIsolationOverride")
|
||||
Optional<Provider<TransactionIsolationLevel>> isolationOverride,
|
||||
@PartialCloudSqlConfigs ImmutableMap<String, String> cloudSqlConfigs,
|
||||
Clock clock) {
|
||||
HashMap<String, String> overrides = Maps.newHashMap(cloudSqlConfigs);
|
||||
// TODO(b/175700623): make sql username configurable from config file.
|
||||
SqlCredential credential = credentialStore.getCredential(new RobotUser(RobotId.NOMULUS));
|
||||
overrides.put(Environment.USER, credential.login());
|
||||
overrides.put(Environment.PASS, credential.password());
|
||||
instanceConnectionNameOverride
|
||||
.map(Provider::get)
|
||||
.ifPresent(
|
||||
instanceConnectionName ->
|
||||
overrides.put(HIKARI_DS_CLOUD_SQL_INSTANCE, instanceConnectionName));
|
||||
jpaMaxConnectionPoolSizeOverride.ifPresent(
|
||||
maxPoolSize -> overrides.put(HIKARI_MAXIMUM_POOL_SIZE, String.valueOf(maxPoolSize)));
|
||||
isolationOverride
|
||||
.map(Provider::get)
|
||||
.ifPresent(isolation -> overrides.put(Environment.ISOLATION, isolation.name()));
|
||||
return new JpaTransactionManagerImpl(create(overrides), clock);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
@NomulusToolJpaTm
|
||||
@@ -336,6 +388,12 @@ public abstract class PersistenceModule {
|
||||
@Documented
|
||||
@interface AppEngineJpaTm {}
|
||||
|
||||
/** Dagger qualifier for {@link JpaTransactionManager} used inside BEAM pipelines. */
|
||||
// Note: @SocketFactoryJpaTm will be phased out in favor of this qualifier.
|
||||
@Qualifier
|
||||
@Documented
|
||||
public @interface BeamJpaTm {}
|
||||
|
||||
/** Dagger qualifier for {@link JpaTransactionManager} used for Nomulus tool. */
|
||||
@Qualifier
|
||||
@Documented
|
||||
|
||||
@@ -101,6 +101,16 @@ public class TransactionManagerFactory {
|
||||
jpaTm = Suppliers.memoize(jpaTmSupplier::get);
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes {@link #jpaTm()} return the {@link JpaTransactionManager} instance provided by {@code
|
||||
* jpaTmSupplier} from now on. This method should only be called by an implementor of {@link
|
||||
* org.apache.beam.sdk.harness.JvmInitializer}.
|
||||
*/
|
||||
public static void setJpaTmOnBeamWorker(Supplier<JpaTransactionManager> jpaTmSupplier) {
|
||||
checkNotNull(jpaTmSupplier, "jpaTmSupplier");
|
||||
jpaTm = Suppliers.memoize(jpaTmSupplier::get);
|
||||
}
|
||||
|
||||
/** Sets the return of {@link #tm()} to the given instance of {@link TransactionManager}. */
|
||||
@VisibleForTesting
|
||||
public static void setTm(TransactionManager newTm) {
|
||||
|
||||
@@ -14,7 +14,8 @@
|
||||
|
||||
package google.registry.rdap;
|
||||
|
||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
||||
import static google.registry.persistence.transaction.TransactionManagerUtil.transactIfJpaTm;
|
||||
import static google.registry.rdap.RdapUtils.getRegistrarByIanaIdentifier;
|
||||
import static google.registry.rdap.RdapUtils.getRegistrarByName;
|
||||
import static google.registry.request.Action.Method.GET;
|
||||
@@ -23,9 +24,9 @@ import static google.registry.request.Action.Method.HEAD;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.primitives.Longs;
|
||||
import com.google.re2j.Pattern;
|
||||
import com.googlecode.objectify.Key;
|
||||
import google.registry.model.contact.ContactResource;
|
||||
import google.registry.model.registrar.Registrar;
|
||||
import google.registry.persistence.VKey;
|
||||
import google.registry.rdap.RdapJsonFormatter.OutputDataType;
|
||||
import google.registry.rdap.RdapMetrics.EndpointType;
|
||||
import google.registry.rdap.RdapObjectClasses.RdapEntity;
|
||||
@@ -69,13 +70,14 @@ public class RdapEntityAction extends RdapActionBase {
|
||||
// RDAP Technical Implementation Guide 2.3.1 - MUST support contact entity lookup using the
|
||||
// handle
|
||||
if (ROID_PATTERN.matcher(pathSearchString).matches()) {
|
||||
Key<ContactResource> contactKey = Key.create(ContactResource.class, pathSearchString);
|
||||
ContactResource contactResource = ofy().load().key(contactKey).now();
|
||||
VKey<ContactResource> contactVKey = VKey.create(ContactResource.class, pathSearchString);
|
||||
Optional<ContactResource> contactResource =
|
||||
transactIfJpaTm(() -> tm().loadByKeyIfPresent(contactVKey));
|
||||
// As per Andy Newton on the regext mailing list, contacts by themselves have no role, since
|
||||
// they are global, and might have different roles for different domains.
|
||||
if (contactResource != null && isAuthorized(contactResource)) {
|
||||
if (contactResource.isPresent() && isAuthorized(contactResource.get())) {
|
||||
return rdapJsonFormatter.createRdapContactEntity(
|
||||
contactResource, ImmutableSet.of(), OutputDataType.FULL);
|
||||
contactResource.get(), ImmutableSet.of(), OutputDataType.FULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@ import static com.google.common.collect.ImmutableList.toImmutableList;
|
||||
import static com.google.common.collect.ImmutableSet.toImmutableSet;
|
||||
import static com.google.common.collect.ImmutableSetMultimap.toImmutableSetMultimap;
|
||||
import static google.registry.model.EppResourceUtils.isLinked;
|
||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
||||
import static google.registry.persistence.transaction.TransactionManagerUtil.transactIfJpaTm;
|
||||
import static google.registry.rdap.RdapIcannStandardInformation.CONTACT_REDACTED_VALUE;
|
||||
import static google.registry.util.CollectionUtils.union;
|
||||
|
||||
@@ -35,7 +35,6 @@ import com.google.common.collect.Streams;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import com.google.common.net.InetAddresses;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.googlecode.objectify.Key;
|
||||
import google.registry.config.RegistryConfig.Config;
|
||||
import google.registry.model.EppResource;
|
||||
import google.registry.model.contact.ContactAddress;
|
||||
@@ -77,7 +76,6 @@ import java.net.URI;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Stream;
|
||||
@@ -343,15 +341,11 @@ public class RdapJsonFormatter {
|
||||
// Kick off the database loads of the nameservers that we will need, so it can load
|
||||
// asynchronously while we load and process the contacts.
|
||||
ImmutableSet<HostResource> loadedHosts =
|
||||
ImmutableSet.copyOf(tm().loadByKeys(domainBase.getNameservers()).values());
|
||||
transactIfJpaTm(
|
||||
() -> ImmutableSet.copyOf(tm().loadByKeys(domainBase.getNameservers()).values()));
|
||||
// Load the registrant and other contacts and add them to the data.
|
||||
Map<Key<ContactResource>, ContactResource> loadedContacts =
|
||||
ofy()
|
||||
.load()
|
||||
.keys(
|
||||
domainBase.getReferencedContacts().stream()
|
||||
.map(VKey::getOfyKey)
|
||||
.collect(toImmutableSet()));
|
||||
ImmutableMap<VKey<? extends ContactResource>, ContactResource> loadedContacts =
|
||||
transactIfJpaTm(() -> tm().loadByKeysIfPresent(domainBase.getReferencedContacts()));
|
||||
// RDAP Response Profile 2.7.3, A domain MUST have the REGISTRANT, ADMIN, TECH roles and MAY
|
||||
// have others. We also add the BILLING.
|
||||
//
|
||||
@@ -359,16 +353,16 @@ public class RdapJsonFormatter {
|
||||
// fields we don't want to show (as opposed to not having contacts at all) because of GDPR etc.
|
||||
//
|
||||
// the GDPR redaction is handled in createRdapContactEntity
|
||||
ImmutableSetMultimap<Key<ContactResource>, Type> contactsToRoles =
|
||||
ImmutableSetMultimap<VKey<ContactResource>, Type> contactsToRoles =
|
||||
Streams.concat(
|
||||
domainBase.getContacts().stream(),
|
||||
Stream.of(DesignatedContact.create(Type.REGISTRANT, domainBase.getRegistrant())))
|
||||
.sorted(DESIGNATED_CONTACT_ORDERING)
|
||||
.collect(
|
||||
toImmutableSetMultimap(
|
||||
contact -> contact.getContactKey().getOfyKey(), DesignatedContact::getType));
|
||||
DesignatedContact::getContactKey, DesignatedContact::getType));
|
||||
|
||||
for (Key<ContactResource> contactKey : contactsToRoles.keySet()) {
|
||||
for (VKey<ContactResource> contactKey : contactsToRoles.keySet()) {
|
||||
Set<RdapEntity.Role> roles =
|
||||
contactsToRoles.get(contactKey).stream()
|
||||
.map(RdapJsonFormatter::convertContactTypeToRdapRole)
|
||||
@@ -430,10 +424,12 @@ public class RdapJsonFormatter {
|
||||
statuses.add(StatusValue.LINKED);
|
||||
}
|
||||
if (hostResource.isSubordinate()
|
||||
&& tm().loadByKey(hostResource.getSuperordinateDomain())
|
||||
.cloneProjectedAtTime(getRequestTime())
|
||||
.getStatusValues()
|
||||
.contains(StatusValue.PENDING_TRANSFER)) {
|
||||
&& transactIfJpaTm(
|
||||
() ->
|
||||
tm().loadByKey(hostResource.getSuperordinateDomain())
|
||||
.cloneProjectedAtTime(getRequestTime())
|
||||
.getStatusValues()
|
||||
.contains(StatusValue.PENDING_TRANSFER))) {
|
||||
statuses.add(StatusValue.PENDING_TRANSFER);
|
||||
}
|
||||
builder
|
||||
|
||||
@@ -392,22 +392,6 @@ public abstract class RdapSearchActionBase extends RdapActionBase {
|
||||
return setOtherQueryAttributes(query, deletedItemHandling, resultSetMaxSize);
|
||||
}
|
||||
|
||||
/** Handles searches by key using a simple string. */
|
||||
static <T extends EppResource> Query<T> queryItemsByKey(
|
||||
Class<T> clazz,
|
||||
String queryString,
|
||||
DeletedItemHandling deletedItemHandling,
|
||||
int resultSetMaxSize) {
|
||||
if (queryString.length() < RdapSearchPattern.MIN_INITIAL_STRING_LENGTH) {
|
||||
throw new UnprocessableEntityException(
|
||||
String.format(
|
||||
"Initial search string must be at least %d characters",
|
||||
RdapSearchPattern.MIN_INITIAL_STRING_LENGTH));
|
||||
}
|
||||
Query<T> query = ofy().load().type(clazz).filterKey("=", Key.create(clazz, queryString));
|
||||
return setOtherQueryAttributes(query, deletedItemHandling, resultSetMaxSize);
|
||||
}
|
||||
|
||||
static <T extends EppResource> Query<T> setOtherQueryAttributes(
|
||||
Query<T> query, DeletedItemHandling deletedItemHandling, int resultSetMaxSize) {
|
||||
if (deletedItemHandling != DeletedItemHandling.INCLUDE) {
|
||||
|
||||
@@ -16,7 +16,6 @@ package google.registry.rdap;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.base.Preconditions.checkState;
|
||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||
|
||||
@@ -34,7 +33,6 @@ import com.google.gson.Gson;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.googlecode.objectify.Key;
|
||||
import google.registry.keyring.api.KeyModule;
|
||||
import google.registry.model.registrar.Registrar;
|
||||
import google.registry.model.registry.Registries;
|
||||
@@ -197,37 +195,37 @@ public final class UpdateRegistrarRdapBaseUrlsAction implements Runnable {
|
||||
@Override
|
||||
public void run() {
|
||||
ImmutableSetMultimap<String, String> ianaToBaseUrls = getRdapBaseUrlsPerIanaId();
|
||||
|
||||
for (Key<Registrar> registrarKey : ofy().load().type(Registrar.class).keys()) {
|
||||
tm()
|
||||
.transact(
|
||||
() -> {
|
||||
Registrar registrar = ofy().load().key(registrarKey).now();
|
||||
// Has the registrar been deleted since we loaded the key? (unlikly, especially
|
||||
// given we don't delete registrars...)
|
||||
if (registrar == null) {
|
||||
return;
|
||||
}
|
||||
// Only update REAL registrars
|
||||
if (registrar.getType() != Registrar.Type.REAL) {
|
||||
return;
|
||||
}
|
||||
String ianaId = String.valueOf(registrar.getIanaIdentifier());
|
||||
ImmutableSet<String> baseUrls = ianaToBaseUrls.get(ianaId);
|
||||
// If this registrar already has these values, skip it
|
||||
if (registrar.getRdapBaseUrls().equals(baseUrls)) {
|
||||
logger.atInfo().log(
|
||||
"No change in RdapBaseUrls for registrar %s (ianaId %s)",
|
||||
registrar.getClientId(), ianaId);
|
||||
return;
|
||||
}
|
||||
logger.atInfo().log(
|
||||
"Updating RdapBaseUrls for registrar %s (ianaId %s) from %s to %s",
|
||||
registrar.getClientId(), ianaId, registrar.getRdapBaseUrls(), baseUrls);
|
||||
ofy()
|
||||
.save()
|
||||
.entity(registrar.asBuilder().setRdapBaseUrls(baseUrls).build());
|
||||
});
|
||||
}
|
||||
Registrar.loadAllKeysCached()
|
||||
.forEach(
|
||||
(key) ->
|
||||
tm().transact(
|
||||
() -> {
|
||||
Registrar registrar = tm().loadByKey(key);
|
||||
// Has the registrar been deleted since we loaded the key? (unlikely,
|
||||
// especially given we don't delete registrars...)
|
||||
if (registrar == null) {
|
||||
return;
|
||||
}
|
||||
// Only update REAL registrars
|
||||
if (registrar.getType() != Registrar.Type.REAL) {
|
||||
return;
|
||||
}
|
||||
String ianaId = String.valueOf(registrar.getIanaIdentifier());
|
||||
ImmutableSet<String> baseUrls = ianaToBaseUrls.get(ianaId);
|
||||
// If this registrar already has these values, skip it
|
||||
if (registrar.getRdapBaseUrls().equals(baseUrls)) {
|
||||
logger.atInfo().log(
|
||||
"No change in RdapBaseUrls for registrar %s (ianaId %s)",
|
||||
registrar.getClientId(), ianaId);
|
||||
return;
|
||||
}
|
||||
logger.atInfo().log(
|
||||
"Updating RdapBaseUrls for registrar %s (ianaId %s) from %s to %s",
|
||||
registrar.getClientId(),
|
||||
ianaId,
|
||||
registrar.getRdapBaseUrls(),
|
||||
baseUrls);
|
||||
tm().put(registrar.asBuilder().setRdapBaseUrls(baseUrls).build());
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,4 +50,19 @@ public class PremiumEntry extends ImmutableObject implements Serializable, SqlEn
|
||||
public Optional<DatastoreEntity> toDatastoreEntity() {
|
||||
return Optional.empty(); // PremiumList is dually-written
|
||||
}
|
||||
|
||||
public BigDecimal getPrice() {
|
||||
return price;
|
||||
}
|
||||
|
||||
public String getDomainLabel() {
|
||||
return domainLabel;
|
||||
}
|
||||
|
||||
public static PremiumEntry create(BigDecimal price, String domainLabel) {
|
||||
PremiumEntry result = new PremiumEntry();
|
||||
result.price = price;
|
||||
result.domainLabel = domainLabel;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
// Copyright 2019 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.schema.tld;
|
||||
|
||||
import static google.registry.config.RegistryConfig.getDomainLabelListCacheDuration;
|
||||
import static google.registry.config.RegistryConfig.getSingletonCachePersistDuration;
|
||||
import static google.registry.config.RegistryConfig.getStaticPremiumListMaxCachedEntries;
|
||||
import static google.registry.schema.tld.PremiumListDao.getPriceForLabel;
|
||||
|
||||
import com.google.auto.value.AutoValue;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.util.NonFinalForTesting;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Optional;
|
||||
import org.joda.time.Duration;
|
||||
|
||||
/** Caching utils for {@link PremiumList}s. */
|
||||
class PremiumListCache {
|
||||
|
||||
/**
|
||||
* In-memory cache for premium lists.
|
||||
*
|
||||
* <p>This is cached for a shorter duration because we need to periodically reload from the DB to
|
||||
* check if a new revision has been published, and if so, then use that.
|
||||
*/
|
||||
@NonFinalForTesting
|
||||
static LoadingCache<String, Optional<PremiumList>> cachePremiumLists =
|
||||
createCachePremiumLists(getDomainLabelListCacheDuration());
|
||||
|
||||
@VisibleForTesting
|
||||
static LoadingCache<String, Optional<PremiumList>> createCachePremiumLists(
|
||||
Duration cachePersistDuration) {
|
||||
return CacheBuilder.newBuilder()
|
||||
.expireAfterWrite(java.time.Duration.ofMillis(cachePersistDuration.getMillis()))
|
||||
.build(
|
||||
new CacheLoader<String, Optional<PremiumList>>() {
|
||||
@Override
|
||||
public Optional<PremiumList> load(String premiumListName) {
|
||||
return PremiumListDao.getLatestRevision(premiumListName);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* In-memory price cache for for a given premium list revision and domain label.
|
||||
*
|
||||
* <p>Note that premium list revision ids are globally unique, so this cache is specific to a
|
||||
* given premium list. Premium list entries might not be present, as indicated by the Optional
|
||||
* wrapper, and we want to cache that as well.
|
||||
*
|
||||
* <p>This is cached for a long duration (essentially indefinitely) because premium list revisions
|
||||
* are immutable and cannot ever be changed once created, so the cache need not ever expire.
|
||||
*
|
||||
* <p>A maximum size is set here on the cache because it can potentially grow too big to fit in
|
||||
* memory if there are a large number of distinct premium list entries being queried (both those
|
||||
* that exist, as well as those that might exist according to the Bloom filter, must be cached).
|
||||
* The entries judged least likely to be accessed again will be evicted first.
|
||||
*/
|
||||
@NonFinalForTesting
|
||||
static LoadingCache<RevisionIdAndLabel, Optional<BigDecimal>> cachePremiumEntries =
|
||||
createCachePremiumEntries(getSingletonCachePersistDuration());
|
||||
|
||||
@VisibleForTesting
|
||||
static LoadingCache<RevisionIdAndLabel, Optional<BigDecimal>> createCachePremiumEntries(
|
||||
Duration cachePersistDuration) {
|
||||
return CacheBuilder.newBuilder()
|
||||
.expireAfterWrite(java.time.Duration.ofMillis(cachePersistDuration.getMillis()))
|
||||
.maximumSize(getStaticPremiumListMaxCachedEntries())
|
||||
.build(
|
||||
new CacheLoader<RevisionIdAndLabel, Optional<BigDecimal>>() {
|
||||
@Override
|
||||
public Optional<BigDecimal> load(RevisionIdAndLabel revisionIdAndLabel) {
|
||||
return getPriceForLabel(revisionIdAndLabel);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@AutoValue
|
||||
abstract static class RevisionIdAndLabel {
|
||||
abstract long revisionId();
|
||||
|
||||
abstract String label();
|
||||
|
||||
static RevisionIdAndLabel create(long revisionId, String label) {
|
||||
return new AutoValue_PremiumListCache_RevisionIdAndLabel(revisionId, label);
|
||||
}
|
||||
}
|
||||
|
||||
private PremiumListCache() {}
|
||||
}
|
||||
@@ -1,175 +0,0 @@
|
||||
// Copyright 2019 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.schema.tld;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm;
|
||||
|
||||
import com.google.common.cache.CacheLoader.InvalidCacheLoadException;
|
||||
import com.google.common.util.concurrent.UncheckedExecutionException;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.schema.tld.PremiumListCache.RevisionIdAndLabel;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import org.joda.money.Money;
|
||||
|
||||
/** Data access object class for {@link PremiumList}. */
|
||||
public class PremiumListDao {
|
||||
|
||||
/**
|
||||
* Returns the premium price for the specified label and registry, or absent if the label is not
|
||||
* premium.
|
||||
*/
|
||||
public static Optional<Money> getPremiumPrice(String label, Registry registry) {
|
||||
// If the registry has no configured premium list, then no labels are premium.
|
||||
if (registry.getPremiumList() == null) {
|
||||
return Optional.empty();
|
||||
}
|
||||
String premiumListName = registry.getPremiumList().getName();
|
||||
PremiumList premiumList =
|
||||
getLatestRevisionCached(premiumListName)
|
||||
.orElseThrow(
|
||||
() ->
|
||||
new IllegalStateException(
|
||||
String.format("Could not load premium list '%s'", premiumListName)));
|
||||
return getPremiumPriceFromList(label, premiumList);
|
||||
}
|
||||
|
||||
/** Persist a new premium list to Cloud SQL. */
|
||||
public static void saveNew(PremiumList premiumList) {
|
||||
jpaTm()
|
||||
.transact(
|
||||
() -> {
|
||||
checkArgument(
|
||||
!checkExists(premiumList.getName()),
|
||||
"Premium list '%s' already exists",
|
||||
premiumList.getName());
|
||||
jpaTm().getEntityManager().persist(premiumList);
|
||||
});
|
||||
}
|
||||
|
||||
/** Persist a new revision of an existing premium list to Cloud SQL. */
|
||||
public static void update(PremiumList premiumList) {
|
||||
jpaTm()
|
||||
.transact(
|
||||
() -> {
|
||||
// This check is currently disabled because, during the Cloud SQL migration, we need
|
||||
// to be able to update premium lists in Datastore while simultaneously creating their
|
||||
// first revision in Cloud SQL (i.e. if they haven't been migrated over yet).
|
||||
// TODO(b/147246613): Reinstate this once all premium lists are migrated to Cloud SQL,
|
||||
// and re-enable the test update_throwsWhenListDoesntExist().
|
||||
// checkArgument(
|
||||
// checkExists(premiumList.getName()),
|
||||
// "Can't update non-existent premium list '%s'",
|
||||
// premiumList.getName());
|
||||
jpaTm().getEntityManager().persist(premiumList);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the most recent revision of the PremiumList with the specified name, if it exists.
|
||||
*
|
||||
* <p>Note that this does not load <code>PremiumList.labelsToPrices</code>! If you need to check
|
||||
* prices, use {@link #getPremiumPrice}.
|
||||
*/
|
||||
public static Optional<PremiumList> getLatestRevision(String premiumListName) {
|
||||
return jpaTm()
|
||||
.transact(
|
||||
() ->
|
||||
jpaTm()
|
||||
.getEntityManager()
|
||||
.createQuery(
|
||||
"SELECT pl FROM PremiumList pl WHERE pl.name = :name ORDER BY"
|
||||
+ " pl.revisionId DESC",
|
||||
PremiumList.class)
|
||||
.setParameter("name", premiumListName)
|
||||
.setMaxResults(1)
|
||||
.getResultStream()
|
||||
.findFirst());
|
||||
}
|
||||
|
||||
static Optional<BigDecimal> getPriceForLabel(RevisionIdAndLabel revisionIdAndLabel) {
|
||||
return jpaTm()
|
||||
.transact(
|
||||
() ->
|
||||
jpaTm()
|
||||
.getEntityManager()
|
||||
.createQuery(
|
||||
"SELECT pe.price FROM PremiumEntry pe WHERE pe.revisionId = :revisionId"
|
||||
+ " AND pe.domainLabel = :label",
|
||||
BigDecimal.class)
|
||||
.setParameter("revisionId", revisionIdAndLabel.revisionId())
|
||||
.setParameter("label", revisionIdAndLabel.label())
|
||||
.setMaxResults(1)
|
||||
.getResultStream()
|
||||
.findFirst());
|
||||
}
|
||||
|
||||
/** Returns the most recent revision of the PremiumList with the specified name, from cache. */
|
||||
static Optional<PremiumList> getLatestRevisionCached(String premiumListName) {
|
||||
try {
|
||||
return PremiumListCache.cachePremiumLists.get(premiumListName);
|
||||
} catch (ExecutionException e) {
|
||||
throw new UncheckedExecutionException(
|
||||
"Could not retrieve premium list named " + premiumListName, e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the premium list of the given name exists.
|
||||
*
|
||||
* <p>This means that at least one premium list revision must exist for the given name.
|
||||
*/
|
||||
static boolean checkExists(String premiumListName) {
|
||||
return jpaTm()
|
||||
.transact(
|
||||
() ->
|
||||
jpaTm()
|
||||
.getEntityManager()
|
||||
.createQuery("SELECT 1 FROM PremiumList WHERE name = :name", Integer.class)
|
||||
.setParameter("name", premiumListName)
|
||||
.setMaxResults(1)
|
||||
.getResultList()
|
||||
.size()
|
||||
> 0);
|
||||
}
|
||||
|
||||
private static Optional<Money> getPremiumPriceFromList(String label, PremiumList premiumList) {
|
||||
// Consult the bloom filter and immediately return if the label definitely isn't premium.
|
||||
if (!premiumList.getBloomFilter().mightContain(label)) {
|
||||
return Optional.empty();
|
||||
}
|
||||
RevisionIdAndLabel revisionIdAndLabel =
|
||||
RevisionIdAndLabel.create(premiumList.getRevisionId(), label);
|
||||
try {
|
||||
Optional<BigDecimal> price = PremiumListCache.cachePremiumEntries.get(revisionIdAndLabel);
|
||||
return price.map(
|
||||
p ->
|
||||
Money.of(
|
||||
premiumList.getCurrency(),
|
||||
p.setScale(premiumList.getCurrency().getDecimalPlaces())));
|
||||
} catch (InvalidCacheLoadException | ExecutionException e) {
|
||||
throw new RuntimeException(
|
||||
String.format(
|
||||
"Could not load premium entry %s for list %s",
|
||||
revisionIdAndLabel, premiumList.getName()),
|
||||
e);
|
||||
}
|
||||
}
|
||||
|
||||
private PremiumListDao() {}
|
||||
}
|
||||
@@ -0,0 +1,238 @@
|
||||
// Copyright 2019 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.schema.tld;
|
||||
|
||||
import static google.registry.config.RegistryConfig.getDomainLabelListCacheDuration;
|
||||
import static google.registry.config.RegistryConfig.getSingletonCachePersistDuration;
|
||||
import static google.registry.config.RegistryConfig.getStaticPremiumListMaxCachedEntries;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm;
|
||||
|
||||
import com.google.auto.value.AutoValue;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.CacheLoader.InvalidCacheLoadException;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.model.registry.label.PremiumList.PremiumListEntry;
|
||||
import google.registry.util.NonFinalForTesting;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import org.joda.money.Money;
|
||||
import org.joda.time.Duration;
|
||||
|
||||
/**
|
||||
* Data access object class for accessing {@link PremiumList} objects from Cloud SQL.
|
||||
*
|
||||
* <p>This class handles both the mapping from string to SQL-level PremiumList objects as well as
|
||||
* the mapping and retrieval of {@link PremiumEntry} objects that correspond to the particular
|
||||
* {@link PremiumList} object in SQL, and caching these entries so that future lookups can be
|
||||
* quicker.
|
||||
*/
|
||||
public class PremiumListSqlDao {
|
||||
|
||||
/**
|
||||
* In-memory cache for premium lists.
|
||||
*
|
||||
* <p>This is cached for a shorter duration because we need to periodically reload this entity to
|
||||
* check if a new revision has been published, and if so, then use that.
|
||||
*
|
||||
* <p>We also cache the absence of premium lists with a given name to avoid unnecessary pointless
|
||||
* lookups. Note that this cache is only applicable to PremiumList objects stored in SQL.
|
||||
*/
|
||||
@NonFinalForTesting
|
||||
static LoadingCache<String, Optional<PremiumList>> premiumListCache =
|
||||
createPremiumListCache(getDomainLabelListCacheDuration());
|
||||
|
||||
@VisibleForTesting
|
||||
public static void setPremiumListCacheForTest(Optional<Duration> expiry) {
|
||||
Duration effectiveExpiry = expiry.orElse(getDomainLabelListCacheDuration());
|
||||
premiumListCache = createPremiumListCache(effectiveExpiry);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
public static LoadingCache<String, Optional<PremiumList>> createPremiumListCache(
|
||||
Duration cachePersistDuration) {
|
||||
return CacheBuilder.newBuilder()
|
||||
.expireAfterWrite(java.time.Duration.ofMillis(cachePersistDuration.getMillis()))
|
||||
.build(
|
||||
new CacheLoader<String, Optional<PremiumList>>() {
|
||||
@Override
|
||||
public Optional<PremiumList> load(final String name) {
|
||||
return jpaTm().doTransactionless(() -> getLatestRevisionUncached(name));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* In-memory price cache for for a given premium list revision and domain label.
|
||||
*
|
||||
* <p>Note that premium list revision ids are globally unique, so this cache is specific to a
|
||||
* given premium list. Premium list entries might not be present, as indicated by the Optional
|
||||
* wrapper, and we want to cache that as well.
|
||||
*
|
||||
* <p>This is cached for a long duration (essentially indefinitely) because premium list revisions
|
||||
* are immutable and cannot ever be changed once created, so the cache need not ever expire.
|
||||
*
|
||||
* <p>A maximum size is set here on the cache because it can potentially grow too big to fit in
|
||||
* memory if there are a large number of distinct premium list entries being queried (both those
|
||||
* that exist, as well as those that might exist according to the Bloom filter, must be cached).
|
||||
* The entries judged least likely to be accessed again will be evicted first.
|
||||
*/
|
||||
@NonFinalForTesting
|
||||
static LoadingCache<RevisionIdAndLabel, Optional<BigDecimal>> premiumEntryCache =
|
||||
createPremiumEntryCache(getSingletonCachePersistDuration());
|
||||
|
||||
@VisibleForTesting
|
||||
static LoadingCache<RevisionIdAndLabel, Optional<BigDecimal>> createPremiumEntryCache(
|
||||
Duration cachePersistDuration) {
|
||||
return CacheBuilder.newBuilder()
|
||||
.expireAfterWrite(java.time.Duration.ofMillis(cachePersistDuration.getMillis()))
|
||||
.maximumSize(getStaticPremiumListMaxCachedEntries())
|
||||
.build(
|
||||
new CacheLoader<RevisionIdAndLabel, Optional<BigDecimal>>() {
|
||||
@Override
|
||||
public Optional<BigDecimal> load(RevisionIdAndLabel revisionIdAndLabel) {
|
||||
return getPriceForLabelUncached(revisionIdAndLabel);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the most recent revision of the PremiumList with the specified name, if it exists.
|
||||
*
|
||||
* <p>Note that this does not load <code>PremiumList.labelsToPrices</code>! If you need to check
|
||||
* prices, use {@link #getPremiumPrice}.
|
||||
*/
|
||||
public static Optional<PremiumList> getLatestRevision(String premiumListName) {
|
||||
return premiumListCache.getUnchecked(premiumListName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the premium price for the specified label and registry, or absent if the label is not
|
||||
* premium.
|
||||
*/
|
||||
public static Optional<Money> getPremiumPrice(String premiumListName, String label) {
|
||||
Optional<PremiumList> maybeLoadedList = getLatestRevision(premiumListName);
|
||||
if (!maybeLoadedList.isPresent()) {
|
||||
return Optional.empty();
|
||||
}
|
||||
PremiumList loadedList = maybeLoadedList.get();
|
||||
// Consult the bloom filter and immediately return if the label definitely isn't premium.
|
||||
if (!loadedList.getBloomFilter().mightContain(label)) {
|
||||
return Optional.empty();
|
||||
}
|
||||
RevisionIdAndLabel revisionIdAndLabel =
|
||||
RevisionIdAndLabel.create(loadedList.getRevisionId(), label);
|
||||
try {
|
||||
Optional<BigDecimal> price = premiumEntryCache.get(revisionIdAndLabel);
|
||||
return price.map(
|
||||
p ->
|
||||
Money.of(
|
||||
loadedList.getCurrency(),
|
||||
p.setScale(loadedList.getCurrency().getDecimalPlaces())));
|
||||
} catch (InvalidCacheLoadException | ExecutionException e) {
|
||||
throw new RuntimeException(
|
||||
String.format(
|
||||
"Could not load premium entry %s for list %s",
|
||||
revisionIdAndLabel, loadedList.getName()),
|
||||
e);
|
||||
}
|
||||
}
|
||||
|
||||
public static PremiumList save(String name, List<String> inputData) {
|
||||
return save(PremiumListUtils.parseToPremiumList(name, inputData));
|
||||
}
|
||||
|
||||
public static PremiumList save(PremiumList premiumList) {
|
||||
jpaTm().transact(() -> jpaTm().getEntityManager().persist(premiumList));
|
||||
premiumListCache.invalidate(premiumList.getName());
|
||||
return premiumList;
|
||||
}
|
||||
|
||||
public static void delete(PremiumList premiumList) {
|
||||
jpaTm().transact(() -> getLatestRevision(premiumList.getName()).ifPresent(jpaTm()::delete));
|
||||
premiumListCache.invalidate(premiumList.getName());
|
||||
}
|
||||
|
||||
private static Optional<PremiumList> getLatestRevisionUncached(String premiumListName) {
|
||||
return jpaTm()
|
||||
.transact(
|
||||
() ->
|
||||
jpaTm()
|
||||
.getEntityManager()
|
||||
.createQuery(
|
||||
"FROM PremiumList WHERE name = :name ORDER BY revisionId DESC",
|
||||
PremiumList.class)
|
||||
.setParameter("name", premiumListName)
|
||||
.setMaxResults(1)
|
||||
.getResultStream()
|
||||
.findFirst());
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all {@link PremiumListEntry PremiumListEntries} in the given {@code premiumList}.
|
||||
*
|
||||
* <p>This is an expensive operation and should only be used when the entire list is required.
|
||||
*/
|
||||
public static Iterable<PremiumEntry> loadPremiumListEntriesUncached(PremiumList premiumList) {
|
||||
return jpaTm()
|
||||
.transact(
|
||||
() ->
|
||||
jpaTm()
|
||||
.getEntityManager()
|
||||
.createQuery(
|
||||
"FROM PremiumEntry pe WHERE pe.revisionId = :revisionId",
|
||||
PremiumEntry.class)
|
||||
.setParameter("revisionId", premiumList.getRevisionId())
|
||||
.getResultList());
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the price for the given revisionId + label combination. Note that this does a database
|
||||
* retrieval so it should only be done in a cached context.
|
||||
*/
|
||||
static Optional<BigDecimal> getPriceForLabelUncached(RevisionIdAndLabel revisionIdAndLabel) {
|
||||
return jpaTm()
|
||||
.transact(
|
||||
() ->
|
||||
jpaTm()
|
||||
.getEntityManager()
|
||||
.createQuery(
|
||||
"SELECT pe.price FROM PremiumEntry pe WHERE pe.revisionId = :revisionId"
|
||||
+ " AND pe.domainLabel = :label",
|
||||
BigDecimal.class)
|
||||
.setParameter("revisionId", revisionIdAndLabel.revisionId())
|
||||
.setParameter("label", revisionIdAndLabel.label())
|
||||
.setMaxResults(1)
|
||||
.getResultStream()
|
||||
.findFirst());
|
||||
}
|
||||
|
||||
@AutoValue
|
||||
abstract static class RevisionIdAndLabel {
|
||||
abstract long revisionId();
|
||||
|
||||
abstract String label();
|
||||
|
||||
static RevisionIdAndLabel create(long revisionId, String label) {
|
||||
return new AutoValue_PremiumListSqlDao_RevisionIdAndLabel(revisionId, label);
|
||||
}
|
||||
}
|
||||
|
||||
private PremiumListSqlDao() {}
|
||||
}
|
||||
@@ -18,7 +18,6 @@ import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static com.google.common.collect.ImmutableSet.toImmutableSet;
|
||||
import static org.joda.time.DateTimeZone.UTC;
|
||||
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.ImmutableSortedSet;
|
||||
@@ -35,12 +34,9 @@ import org.joda.time.DateTime;
|
||||
/** Static utility methods for {@link PremiumList}. */
|
||||
public class PremiumListUtils {
|
||||
|
||||
public static PremiumList parseToPremiumList(String name, String inputData) {
|
||||
List<String> inputDataPreProcessed =
|
||||
Splitter.on('\n').omitEmptyStrings().splitToList(inputData);
|
||||
|
||||
public static PremiumList parseToPremiumList(String name, List<String> inputData) {
|
||||
ImmutableMap<String, PremiumListEntry> prices =
|
||||
new PremiumList.Builder().setName(name).build().parse(inputDataPreProcessed);
|
||||
new PremiumList.Builder().setName(name).build().parse(inputData);
|
||||
ImmutableSet<CurrencyUnit> currencies =
|
||||
prices.values().stream()
|
||||
.map(e -> e.getValue().getCurrencyUnit())
|
||||
|
||||
@@ -31,6 +31,7 @@ import google.registry.model.registry.Registry;
|
||||
import google.registry.model.registry.Registry.TldState;
|
||||
import google.registry.model.registry.Registry.TldType;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.model.registry.label.PremiumListDualDao;
|
||||
import google.registry.tools.params.OptionalStringParameter;
|
||||
import google.registry.tools.params.TransitionListParameter.BillingCostTransitions;
|
||||
import google.registry.tools.params.TransitionListParameter.TldStateTransitions;
|
||||
@@ -342,7 +343,8 @@ abstract class CreateOrUpdateTldCommand extends MutatingCommand {
|
||||
|
||||
if (premiumListName != null) {
|
||||
if (premiumListName.isPresent()) {
|
||||
Optional<PremiumList> premiumList = PremiumList.getUncached(premiumListName.get());
|
||||
Optional<PremiumList> premiumList =
|
||||
PremiumListDualDao.getLatestRevision(premiumListName.get());
|
||||
checkArgument(
|
||||
premiumList.isPresent(),
|
||||
String.format("The premium list '%s' doesn't exist", premiumListName.get()));
|
||||
|
||||
@@ -15,25 +15,23 @@
|
||||
package google.registry.tools;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static google.registry.model.registry.label.PremiumListUtils.deletePremiumList;
|
||||
import static google.registry.model.registry.label.PremiumListUtils.doesPremiumListExist;
|
||||
|
||||
import com.beust.jcommander.Parameter;
|
||||
import com.beust.jcommander.Parameters;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.model.registry.label.PremiumListDualDao;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
/**
|
||||
* Command to delete a {@link PremiumList} in Datastore. This command will fail if the premium
|
||||
* list is currently in use on a tld.
|
||||
* Command to delete a {@link PremiumList} in Datastore. This command will fail if the premium list
|
||||
* is currently in use on a tld.
|
||||
*/
|
||||
@Parameters(separators = " =", commandDescription = "Delete a PremiumList from Datastore.")
|
||||
final class DeletePremiumListCommand extends ConfirmingCommand implements CommandWithRemoteApi {
|
||||
|
||||
@Nullable
|
||||
PremiumList premiumList;
|
||||
@Nullable PremiumList premiumList;
|
||||
|
||||
@Parameter(
|
||||
names = {"-n", "--name"},
|
||||
@@ -44,10 +42,10 @@ final class DeletePremiumListCommand extends ConfirmingCommand implements Comman
|
||||
@Override
|
||||
protected void init() {
|
||||
checkArgument(
|
||||
doesPremiumListExist(name),
|
||||
PremiumListDualDao.exists(name),
|
||||
"Cannot delete the premium list %s because it doesn't exist.",
|
||||
name);
|
||||
premiumList = PremiumList.getUncached(name).get();
|
||||
premiumList = PremiumListDualDao.getLatestRevision(name).get();
|
||||
ImmutableSet<String> tldsUsedOn = premiumList.getReferencingTlds();
|
||||
checkArgument(
|
||||
tldsUsedOn.isEmpty(),
|
||||
@@ -62,7 +60,7 @@ final class DeletePremiumListCommand extends ConfirmingCommand implements Comman
|
||||
|
||||
@Override
|
||||
protected String execute() {
|
||||
deletePremiumList(premiumList);
|
||||
PremiumListDualDao.delete(premiumList);
|
||||
return String.format("Deleted premium list '%s'.\n", premiumList.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ public class BackfillRegistryLocksCommand extends ConfirmingCommand
|
||||
return domains.stream()
|
||||
.filter(d -> d.getDeletionTime().isAfter(now))
|
||||
.filter(d -> d.getStatusValues().containsAll(REGISTRY_LOCK_STATUSES))
|
||||
.filter(d -> RegistryLockDao.getMostRecentByRepoId(d.getRepoId()).isEmpty())
|
||||
.filter(d -> !RegistryLockDao.getMostRecentByRepoId(d.getRepoId()).isPresent())
|
||||
.collect(toImmutableList());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,25 +45,15 @@ public abstract class CreateOrUpdatePremiumListAction implements Runnable {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
saveToDatastore();
|
||||
save();
|
||||
} catch (IllegalArgumentException e) {
|
||||
logger.atInfo().withCause(e).log(
|
||||
"Usage error in attempting to save premium list from nomulus tool command");
|
||||
response.setPayload(ImmutableMap.of("error", e.toString(), "status", "error"));
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
logger.atSevere().withCause(e).log(
|
||||
"Unexpected error saving premium list to Datastore from nomulus tool command");
|
||||
response.setPayload(ImmutableMap.of("error", e.toString(), "status", "error"));
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
saveToCloudSql();
|
||||
} catch (Throwable e) {
|
||||
logger.atSevere().withCause(e).log(
|
||||
"Unexpected error saving premium list to Cloud SQL from nomulus tool command");
|
||||
response.setPayload(ImmutableMap.of("error", e.toString(), "status", "error"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,9 +68,6 @@ public abstract class CreateOrUpdatePremiumListAction implements Runnable {
|
||||
: (inputData.substring(0, MAX_LOGGING_PREMIUM_LIST_LENGTH) + "<truncated>")));
|
||||
}
|
||||
|
||||
/** Saves the premium list to Datastore. */
|
||||
protected abstract void saveToDatastore();
|
||||
|
||||
/** Saves the premium list to Cloud SQL. */
|
||||
protected abstract void saveToCloudSql();
|
||||
/** Saves the premium list to both Datastore and Cloud SQL. */
|
||||
protected abstract void save();
|
||||
}
|
||||
|
||||
@@ -16,19 +16,15 @@ package google.registry.tools.server;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static google.registry.model.registry.Registries.assertTldExists;
|
||||
import static google.registry.model.registry.label.PremiumListUtils.doesPremiumListExist;
|
||||
import static google.registry.model.registry.label.PremiumListUtils.savePremiumListAndEntries;
|
||||
import static google.registry.request.Action.Method.POST;
|
||||
import static google.registry.schema.tld.PremiumListUtils.parseToPremiumList;
|
||||
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.model.registry.label.PremiumListDualDao;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.Parameter;
|
||||
import google.registry.request.auth.Auth;
|
||||
import google.registry.schema.tld.PremiumListDao;
|
||||
import java.util.List;
|
||||
import javax.inject.Inject;
|
||||
|
||||
@@ -49,46 +45,24 @@ public class CreatePremiumListAction extends CreateOrUpdatePremiumListAction {
|
||||
public static final String PATH = "/_dr/admin/createPremiumList";
|
||||
|
||||
@Inject @Parameter(OVERRIDE_PARAM) boolean override;
|
||||
|
||||
@Inject CreatePremiumListAction() {}
|
||||
|
||||
@Override
|
||||
protected void saveToDatastore() {
|
||||
protected void save() {
|
||||
checkArgument(
|
||||
!doesPremiumListExist(name), "A premium list of this name already exists: %s.", name);
|
||||
!PremiumListDualDao.exists(name), "A premium list of this name already exists: %s.", name);
|
||||
if (!override) {
|
||||
assertTldExists(name);
|
||||
}
|
||||
|
||||
logger.atInfo().log("Saving premium list for TLD %s", name);
|
||||
logInputData();
|
||||
List<String> inputDataPreProcessed =
|
||||
Splitter.on('\n').omitEmptyStrings().splitToList(inputData);
|
||||
PremiumList premiumList = new PremiumList.Builder().setName(name).build();
|
||||
savePremiumListAndEntries(premiumList, inputDataPreProcessed);
|
||||
|
||||
PremiumListDualDao.save(name, inputDataPreProcessed);
|
||||
String message =
|
||||
String.format(
|
||||
"Saved premium list %s with %d entries",
|
||||
premiumList.getName(), inputDataPreProcessed.size());
|
||||
String.format("Saved premium list %s with %d entries", name, inputDataPreProcessed.size());
|
||||
logger.atInfo().log(message);
|
||||
response.setPayload(ImmutableMap.of("status", "success", "message", message));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveToCloudSql() {
|
||||
if (!override) {
|
||||
assertTldExists(name);
|
||||
}
|
||||
logger.atInfo().log("Saving premium list to Cloud SQL for TLD %s", name);
|
||||
// TODO(mcilwain): Call logInputData() here once Datastore persistence is removed.
|
||||
|
||||
PremiumList premiumList = parseToPremiumList(name, inputData);
|
||||
PremiumListDao.saveNew(premiumList);
|
||||
|
||||
String message =
|
||||
String.format(
|
||||
"Saved premium list %s with %d entries", name, premiumList.getLabelsToPrices().size());
|
||||
logger.atInfo().log(message);
|
||||
// TODO(mcilwain): Call response.setPayload(...) here once Datastore persistence is removed.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,19 +15,16 @@
|
||||
package google.registry.tools.server;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static google.registry.model.registry.label.PremiumListUtils.savePremiumListAndEntries;
|
||||
import static google.registry.request.Action.Method.POST;
|
||||
import static google.registry.schema.tld.PremiumListUtils.parseToPremiumList;
|
||||
|
||||
import com.google.common.base.Splitter;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.flogger.FluentLogger;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.model.registry.label.PremiumListDualDao;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.request.auth.Auth;
|
||||
import google.registry.schema.tld.PremiumListDao;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import javax.inject.Inject;
|
||||
|
||||
/**
|
||||
@@ -48,10 +45,9 @@ public class UpdatePremiumListAction extends CreateOrUpdatePremiumListAction {
|
||||
@Inject UpdatePremiumListAction() {}
|
||||
|
||||
@Override
|
||||
protected void saveToDatastore() {
|
||||
Optional<PremiumList> existingPremiumList = PremiumList.getUncached(name);
|
||||
protected void save() {
|
||||
checkArgument(
|
||||
existingPremiumList.isPresent(),
|
||||
PremiumListDualDao.exists(name),
|
||||
"Could not update premium list %s because it doesn't exist.",
|
||||
name);
|
||||
|
||||
@@ -59,8 +55,7 @@ public class UpdatePremiumListAction extends CreateOrUpdatePremiumListAction {
|
||||
logInputData();
|
||||
List<String> inputDataPreProcessed =
|
||||
Splitter.on('\n').omitEmptyStrings().splitToList(inputData);
|
||||
PremiumList newPremiumList =
|
||||
savePremiumListAndEntries(existingPremiumList.get(), inputDataPreProcessed);
|
||||
PremiumList newPremiumList = PremiumListDualDao.save(name, inputDataPreProcessed);
|
||||
|
||||
String message =
|
||||
String.format(
|
||||
@@ -69,18 +64,4 @@ public class UpdatePremiumListAction extends CreateOrUpdatePremiumListAction {
|
||||
logger.atInfo().log(message);
|
||||
response.setPayload(ImmutableMap.of("status", "success", "message", message));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveToCloudSql() {
|
||||
logger.atInfo().log("Updating premium list '%s' in Cloud SQL.", name);
|
||||
// TODO(mcilwain): Add logInputData() call here once DB migration is complete.
|
||||
PremiumList premiumList = parseToPremiumList(name, inputData);
|
||||
PremiumListDao.update(premiumList);
|
||||
String message =
|
||||
String.format(
|
||||
"Updated premium list '%s' with %d entries.",
|
||||
premiumList.getName(), premiumList.getLabelsToPrices().size());
|
||||
logger.atInfo().log(message);
|
||||
// TODO(mcilwain): Call response.setPayload() here once DB migration is complete.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,6 +53,7 @@ import google.registry.model.ofy.CommitLogBucket;
|
||||
import google.registry.model.ofy.CommitLogManifest;
|
||||
import google.registry.model.ofy.CommitLogMutation;
|
||||
import google.registry.model.registrar.RegistrarContact;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.model.registry.label.ReservedList;
|
||||
import google.registry.model.server.Lock;
|
||||
import google.registry.model.tmch.ClaimsListShard;
|
||||
@@ -93,13 +94,14 @@ public class ReplayCommitLogsToSqlActionTest {
|
||||
.withClock(fakeClock)
|
||||
.withOfyTestEntities(TestObject.class)
|
||||
.withJpaUnitTestEntities(
|
||||
RegistrarContact.class,
|
||||
TestObject.class,
|
||||
SqlReplayCheckpoint.class,
|
||||
ContactResource.class,
|
||||
DelegationSignerData.class,
|
||||
DomainBase.class,
|
||||
GracePeriod.class,
|
||||
DelegationSignerData.class)
|
||||
PremiumList.class,
|
||||
RegistrarContact.class,
|
||||
SqlReplayCheckpoint.class,
|
||||
TestObject.class)
|
||||
.build();
|
||||
|
||||
/** Local GCS service. */
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
// Copyright 2020 The Nomulus Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package google.registry.beam.common;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.beam.common.RegistryPipelineOptions.validateRegistryPipelineOptions;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import google.registry.config.RegistryEnvironment;
|
||||
import google.registry.testing.SystemPropertyExtension;
|
||||
import org.apache.beam.sdk.options.PipelineOptionsFactory;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
|
||||
/** Unit tests for {@link RegistryPipelineOptions}. */
|
||||
class RegistryPipelineOptionsTest {
|
||||
|
||||
/**
|
||||
* Restores original RegistryEnvironment after calling {@link
|
||||
* RegistryPipelineOptions#validateRegistryPipelineOptions}.
|
||||
*/
|
||||
@RegisterExtension
|
||||
final SystemPropertyExtension systemPropertyExtension = new SystemPropertyExtension();
|
||||
|
||||
@BeforeEach
|
||||
void beforeEach() {
|
||||
// Saves the current RegistryEnvironment for restoration later.
|
||||
RegistryEnvironment.get().setup(systemPropertyExtension);
|
||||
}
|
||||
|
||||
@Test
|
||||
void environment_fromArgs() {
|
||||
assertThat(
|
||||
PipelineOptionsFactory.fromArgs("--registryEnvironment=ALPHA")
|
||||
.as(RegistryPipelineOptions.class)
|
||||
.getRegistryEnvironment())
|
||||
.isSameInstanceAs(RegistryEnvironment.ALPHA);
|
||||
}
|
||||
|
||||
@Test
|
||||
void environment_invalid() {
|
||||
assertThrows(
|
||||
IllegalArgumentException.class,
|
||||
() ->
|
||||
PipelineOptionsFactory.fromArgs("--registryEnvironment=alpha")
|
||||
.as(RegistryPipelineOptions.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void environment_undefined() {
|
||||
assertThat(
|
||||
PipelineOptionsFactory.create()
|
||||
.as(RegistryPipelineOptions.class)
|
||||
.getRegistryEnvironment())
|
||||
.isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void validateProject_projectsMatch() {
|
||||
RegistryPipelineOptions options =
|
||||
PipelineOptionsFactory.fromArgs(
|
||||
"--registryEnvironment=" + RegistryEnvironment.UNITTEST.name(),
|
||||
"--project=registry-project-id")
|
||||
.withValidation()
|
||||
.as(RegistryPipelineOptions.class);
|
||||
validateRegistryPipelineOptions(options);
|
||||
}
|
||||
|
||||
@Test
|
||||
void validateProject_projectsMismatch() {
|
||||
RegistryPipelineOptions options =
|
||||
PipelineOptionsFactory.fromArgs(
|
||||
"--registryEnvironment=" + RegistryEnvironment.UNITTEST.name(), "--project=")
|
||||
.withValidation()
|
||||
.as(RegistryPipelineOptions.class);
|
||||
assertThrows(IllegalArgumentException.class, () -> validateRegistryPipelineOptions(options));
|
||||
}
|
||||
|
||||
@Test
|
||||
void validateProject_missingProjectAdded() {
|
||||
RegistryPipelineOptions options =
|
||||
PipelineOptionsFactory.fromArgs(
|
||||
"--registryEnvironment=" + RegistryEnvironment.UNITTEST.name())
|
||||
.withValidation()
|
||||
.as(RegistryPipelineOptions.class);
|
||||
// If gcloud is installed and --project not set , project may be inferred.
|
||||
options.setProject(null);
|
||||
validateRegistryPipelineOptions(options);
|
||||
assertThat(options.getProject()).isEqualTo("registry-project-id");
|
||||
}
|
||||
|
||||
@Test
|
||||
void validateProject_noEnvironment() {
|
||||
RegistryPipelineOptions options =
|
||||
PipelineOptionsFactory.fromArgs("--project=some-project").as(RegistryPipelineOptions.class);
|
||||
validateRegistryPipelineOptions(options);
|
||||
assertThat(options.getProject()).isEqualTo("some-project");
|
||||
}
|
||||
}
|
||||
@@ -34,6 +34,9 @@ import google.registry.model.domain.DomainBase;
|
||||
import google.registry.model.ofy.Ofy;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.persistence.VKey;
|
||||
import google.registry.persistence.transaction.JpaTestRules;
|
||||
import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationTestExtension;
|
||||
import google.registry.testing.DatastoreEntityExtension;
|
||||
import google.registry.testing.FakeClock;
|
||||
import google.registry.testing.InjectExtension;
|
||||
import google.registry.tools.LevelDbLogReader;
|
||||
@@ -48,6 +51,7 @@ import org.apache.beam.sdk.values.KV;
|
||||
import org.joda.time.DateTime;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Order;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
import org.junit.jupiter.api.io.TempDir;
|
||||
@@ -58,6 +62,15 @@ public class BackupTestStoreTest {
|
||||
|
||||
@TempDir File tempDir;
|
||||
|
||||
@RegisterExtension
|
||||
final transient JpaIntegrationTestExtension jpaIntegrationTestExtension =
|
||||
new JpaTestRules.Builder().buildIntegrationTestRule();
|
||||
|
||||
@RegisterExtension
|
||||
@Order(value = 1)
|
||||
final transient DatastoreEntityExtension datastoreEntityExtension =
|
||||
new DatastoreEntityExtension();
|
||||
|
||||
@RegisterExtension InjectExtension injectRule = new InjectExtension();
|
||||
|
||||
private FakeClock fakeClock;
|
||||
|
||||
@@ -26,6 +26,9 @@ import google.registry.model.contact.ContactResource;
|
||||
import google.registry.model.domain.DomainBase;
|
||||
import google.registry.model.ofy.Ofy;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.persistence.transaction.JpaTestRules;
|
||||
import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationTestExtension;
|
||||
import google.registry.testing.DatastoreEntityExtension;
|
||||
import google.registry.testing.FakeClock;
|
||||
import google.registry.testing.InjectExtension;
|
||||
import java.io.File;
|
||||
@@ -44,6 +47,7 @@ import org.apache.beam.sdk.values.PCollection;
|
||||
import org.joda.time.DateTime;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Order;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
import org.junit.jupiter.api.io.TempDir;
|
||||
@@ -52,6 +56,7 @@ import org.junit.jupiter.api.io.TempDir;
|
||||
class CommitLogTransformsTest implements Serializable {
|
||||
|
||||
private static final DateTime START_TIME = DateTime.parse("2000-01-01T00:00:00.0Z");
|
||||
private final FakeClock fakeClock = new FakeClock(START_TIME);
|
||||
|
||||
@SuppressWarnings("WeakerAccess")
|
||||
@TempDir
|
||||
@@ -59,11 +64,19 @@ class CommitLogTransformsTest implements Serializable {
|
||||
|
||||
@RegisterExtension final transient InjectExtension injectRule = new InjectExtension();
|
||||
|
||||
@RegisterExtension
|
||||
final transient JpaIntegrationTestExtension jpaIntegrationTestExtension =
|
||||
new JpaTestRules.Builder().withClock(fakeClock).buildIntegrationTestRule();
|
||||
|
||||
@RegisterExtension
|
||||
@Order(value = 1)
|
||||
final transient DatastoreEntityExtension datastoreEntityExtension =
|
||||
new DatastoreEntityExtension();
|
||||
|
||||
@RegisterExtension
|
||||
final transient TestPipelineExtension testPipeline =
|
||||
TestPipelineExtension.create().enableAbandonedNodeEnforcement(true);
|
||||
|
||||
private FakeClock fakeClock;
|
||||
private transient BackupTestStore store;
|
||||
private File commitLogsDir;
|
||||
private File firstCommitLogFile;
|
||||
@@ -75,7 +88,6 @@ class CommitLogTransformsTest implements Serializable {
|
||||
|
||||
@BeforeEach
|
||||
void beforeEach() throws Exception {
|
||||
fakeClock = new FakeClock(START_TIME);
|
||||
store = new BackupTestStore(fakeClock);
|
||||
injectRule.setStaticField(Ofy.class, "clock", fakeClock);
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ public class DomainBaseUtilTest {
|
||||
|
||||
@RegisterExtension
|
||||
AppEngineExtension appEngineRule =
|
||||
AppEngineExtension.builder().withDatastore().withClock(fakeClock).build();
|
||||
AppEngineExtension.builder().withDatastoreAndCloudSql().withClock(fakeClock).build();
|
||||
|
||||
@RegisterExtension InjectExtension injectRule = new InjectExtension();
|
||||
|
||||
|
||||
@@ -27,6 +27,9 @@ import google.registry.model.contact.ContactResource;
|
||||
import google.registry.model.domain.DomainBase;
|
||||
import google.registry.model.ofy.Ofy;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.persistence.transaction.JpaTestRules;
|
||||
import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationTestExtension;
|
||||
import google.registry.testing.DatastoreEntityExtension;
|
||||
import google.registry.testing.FakeClock;
|
||||
import google.registry.testing.InjectExtension;
|
||||
import java.io.File;
|
||||
@@ -44,6 +47,7 @@ import org.apache.beam.sdk.values.PCollection;
|
||||
import org.joda.time.DateTime;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Order;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
import org.junit.jupiter.api.io.TempDir;
|
||||
@@ -53,7 +57,7 @@ import org.junit.jupiter.api.io.TempDir;
|
||||
*
|
||||
* <p>This class implements {@link Serializable} so that test {@link DoFn} classes may be inlined.
|
||||
*/
|
||||
class ExportloadingTransformsTest implements Serializable {
|
||||
class ExportLoadingTransformsTest implements Serializable {
|
||||
|
||||
private static final DateTime START_TIME = DateTime.parse("2000-01-01T00:00:00.0Z");
|
||||
|
||||
@@ -68,6 +72,15 @@ class ExportloadingTransformsTest implements Serializable {
|
||||
|
||||
@RegisterExtension final transient InjectExtension injectRule = new InjectExtension();
|
||||
|
||||
@RegisterExtension
|
||||
final transient JpaIntegrationTestExtension jpaIntegrationTestExtension =
|
||||
new JpaTestRules.Builder().buildIntegrationTestRule();
|
||||
|
||||
@RegisterExtension
|
||||
@Order(value = 1)
|
||||
final transient DatastoreEntityExtension datastoreEntityExtension =
|
||||
new DatastoreEntityExtension();
|
||||
|
||||
@RegisterExtension
|
||||
final transient TestPipelineExtension testPipeline =
|
||||
TestPipelineExtension.create().enableAbandonedNodeEnforcement(true);
|
||||
@@ -29,6 +29,9 @@ import google.registry.model.domain.DomainBase;
|
||||
import google.registry.model.eppcommon.AuthInfo.PasswordAuth;
|
||||
import google.registry.model.ofy.Ofy;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.persistence.transaction.JpaTestRules;
|
||||
import google.registry.persistence.transaction.JpaTestRules.JpaIntegrationTestExtension;
|
||||
import google.registry.testing.DatastoreEntityExtension;
|
||||
import google.registry.testing.FakeClock;
|
||||
import google.registry.testing.InjectExtension;
|
||||
import java.io.File;
|
||||
@@ -38,6 +41,7 @@ import org.apache.beam.sdk.values.KV;
|
||||
import org.apache.beam.sdk.values.PCollectionTuple;
|
||||
import org.joda.time.DateTime;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Order;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
import org.junit.jupiter.api.io.TempDir;
|
||||
@@ -84,6 +88,15 @@ class LoadDatastoreSnapshotTest {
|
||||
|
||||
@RegisterExtension final transient InjectExtension injectRule = new InjectExtension();
|
||||
|
||||
@RegisterExtension
|
||||
final transient JpaIntegrationTestExtension jpaIntegrationTestExtension =
|
||||
new JpaTestRules.Builder().buildIntegrationTestRule();
|
||||
|
||||
@RegisterExtension
|
||||
@Order(value = 1)
|
||||
final transient DatastoreEntityExtension datastoreEntityExtension =
|
||||
new DatastoreEntityExtension();
|
||||
|
||||
@RegisterExtension
|
||||
final transient TestPipelineExtension testPipeline =
|
||||
TestPipelineExtension.create().enableAbandonedNodeEnforcement(true);
|
||||
|
||||
@@ -17,8 +17,6 @@ package google.registry.export;
|
||||
import static com.google.common.net.MediaType.PLAIN_TEXT_UTF_8;
|
||||
import static google.registry.export.ExportPremiumTermsAction.EXPORT_MIME_TYPE;
|
||||
import static google.registry.export.ExportPremiumTermsAction.PREMIUM_TERMS_FILENAME;
|
||||
import static google.registry.model.registry.label.PremiumListUtils.deletePremiumList;
|
||||
import static google.registry.model.registry.label.PremiumListUtils.savePremiumListAndEntries;
|
||||
import static google.registry.testing.DatabaseHelper.createTld;
|
||||
import static google.registry.testing.DatabaseHelper.deleteTld;
|
||||
import static google.registry.testing.DatabaseHelper.persistResource;
|
||||
@@ -39,6 +37,7 @@ import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.net.MediaType;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.model.registry.label.PremiumListDualDao;
|
||||
import google.registry.request.Response;
|
||||
import google.registry.storage.drive.DriveConnection;
|
||||
import google.registry.testing.AppEngineExtension;
|
||||
@@ -76,8 +75,7 @@ public class ExportPremiumTermsActionTest {
|
||||
@BeforeEach
|
||||
void beforeEach() throws Exception {
|
||||
createTld("tld");
|
||||
PremiumList pl = new PremiumList.Builder().setName("pl-name").build();
|
||||
savePremiumListAndEntries(pl, PREMIUM_NAMES);
|
||||
PremiumList pl = PremiumListDualDao.save("pl-name", PREMIUM_NAMES);
|
||||
persistResource(
|
||||
Registry.get("tld").asBuilder().setPremiumList(pl).setDriveFolderId("folder_id").build());
|
||||
when(driveConnection.createOrUpdateFile(
|
||||
@@ -106,26 +104,6 @@ public class ExportPremiumTermsActionTest {
|
||||
verifyNoMoreInteractions(response);
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_exportPremiumTerms_success_emptyPremiumList() throws IOException {
|
||||
PremiumList pl = new PremiumList.Builder().setName("pl-name").build();
|
||||
savePremiumListAndEntries(pl, ImmutableList.of());
|
||||
runAction("tld");
|
||||
|
||||
verify(driveConnection)
|
||||
.createOrUpdateFile(
|
||||
PREMIUM_TERMS_FILENAME,
|
||||
EXPORT_MIME_TYPE,
|
||||
"folder_id",
|
||||
DISCLAIMER_WITH_NEWLINE.getBytes(UTF_8));
|
||||
verifyNoMoreInteractions(driveConnection);
|
||||
|
||||
verify(response).setStatus(SC_OK);
|
||||
verify(response).setPayload("file_id");
|
||||
verify(response).setContentType(PLAIN_TEXT_UTF_8);
|
||||
verifyNoMoreInteractions(response);
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_exportPremiumTerms_doNothing_listNotConfigured() {
|
||||
persistResource(Registry.get("tld").asBuilder().setPremiumList(null).build());
|
||||
@@ -165,7 +143,7 @@ public class ExportPremiumTermsActionTest {
|
||||
|
||||
@Test
|
||||
void test_exportPremiumTerms_failure_noPremiumList() {
|
||||
deletePremiumList(new PremiumList.Builder().setName("pl-name").build());
|
||||
PremiumListDualDao.delete(new PremiumList.Builder().setName("pl-name").build());
|
||||
assertThrows(RuntimeException.class, () -> runAction("tld"));
|
||||
|
||||
verifyNoInteractions(driveConnection);
|
||||
|
||||
@@ -41,14 +41,21 @@ import google.registry.model.transfer.TransferData;
|
||||
import google.registry.model.transfer.TransferResponse;
|
||||
import google.registry.model.transfer.TransferStatus;
|
||||
import google.registry.testing.DualDatabaseTest;
|
||||
import google.registry.testing.ReplayExtension;
|
||||
import google.registry.testing.TestOfyAndSql;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Order;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
|
||||
/** Unit tests for {@link ContactTransferApproveFlow}. */
|
||||
@DualDatabaseTest
|
||||
class ContactTransferApproveFlowTest
|
||||
extends ContactTransferFlowTestCase<ContactTransferApproveFlow, ContactResource> {
|
||||
|
||||
@Order(value = Order.DEFAULT - 2)
|
||||
@RegisterExtension
|
||||
final ReplayExtension replayExtension = ReplayExtension.createWithCompare(clock);
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
setEppInput("contact_transfer_approve.xml");
|
||||
|
||||
@@ -36,7 +36,6 @@ import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collector;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@@ -244,7 +243,7 @@ public final class ImmutableObjectSubject extends Subject {
|
||||
|
||||
// We just need to check if there were any objects in "actual" that were not in "expected"
|
||||
// (where "found" is a proxy for "expected").
|
||||
} else if (actual.stream().anyMatch(Predicate.not(found::contains))) {
|
||||
} else if (!found.containsAll(actual)) {
|
||||
return ComparisonResult.createFailure();
|
||||
}
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@ import google.registry.model.EntityTestCase;
|
||||
import google.registry.model.registry.Registry.RegistryNotFoundException;
|
||||
import google.registry.model.registry.Registry.TldState;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.model.registry.label.PremiumListDualDao;
|
||||
import google.registry.model.registry.label.ReservedList;
|
||||
import google.registry.testing.DualDatabaseTest;
|
||||
import google.registry.testing.TestOfyAndSql;
|
||||
@@ -204,7 +205,7 @@ public class RegistryTest extends EntityTestCase {
|
||||
Registry registry = Registry.get("tld").asBuilder().setPremiumList(pl2).build();
|
||||
Key<PremiumList> plKey = registry.getPremiumList();
|
||||
assertThat(plKey).isNotNull();
|
||||
PremiumList stored = PremiumList.getUncached(plKey.getName()).get();
|
||||
PremiumList stored = PremiumListDualDao.getLatestRevision(plKey.getName()).get();
|
||||
assertThat(stored.getName()).isEqualTo("tld2");
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
package google.registry.model.registry.label;
|
||||
|
||||
import static com.google.common.collect.ImmutableMap.toImmutableMap;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static com.google.common.truth.Truth8.assertThat;
|
||||
import static com.google.monitoring.metrics.contrib.DistributionMetricSubject.assertThat;
|
||||
@@ -26,37 +27,33 @@ import static google.registry.model.registry.label.DomainLabelMetrics.PremiumLis
|
||||
import static google.registry.model.registry.label.DomainLabelMetrics.PremiumListCheckOutcome.UNCACHED_POSITIVE;
|
||||
import static google.registry.model.registry.label.DomainLabelMetrics.premiumListChecks;
|
||||
import static google.registry.model.registry.label.DomainLabelMetrics.premiumListProcessingTime;
|
||||
import static google.registry.model.registry.label.PremiumListUtils.deletePremiumList;
|
||||
import static google.registry.model.registry.label.PremiumListUtils.doesPremiumListExist;
|
||||
import static google.registry.model.registry.label.PremiumListUtils.getPremiumPrice;
|
||||
import static google.registry.model.registry.label.PremiumListUtils.savePremiumListAndEntries;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
||||
import static google.registry.persistence.transaction.TransactionManagerUtil.transactIfJpaTm;
|
||||
import static google.registry.testing.DatabaseHelper.createTld;
|
||||
import static google.registry.testing.DatabaseHelper.loadPremiumListEntries;
|
||||
import static google.registry.testing.DatabaseHelper.persistPremiumList;
|
||||
import static google.registry.testing.DatabaseHelper.persistResource;
|
||||
import static org.joda.time.Duration.standardDays;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Streams;
|
||||
import com.googlecode.objectify.Key;
|
||||
import google.registry.dns.writer.VoidDnsWriter;
|
||||
import google.registry.model.pricing.StaticPremiumListPricingEngine;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.model.registry.label.PremiumList.PremiumListEntry;
|
||||
import google.registry.model.registry.label.PremiumList.PremiumListRevision;
|
||||
import google.registry.testing.AppEngineExtension;
|
||||
import google.registry.testing.TestCacheExtension;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import org.joda.money.Money;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
|
||||
/** Unit tests for {@link PremiumListUtils}. */
|
||||
public class PremiumListUtilsTest {
|
||||
/** Unit tests for {@link PremiumListDatastoreDao}. */
|
||||
public class PremiumListDatastoreDaoTest {
|
||||
|
||||
@RegisterExtension
|
||||
public final AppEngineExtension appEngine =
|
||||
@@ -70,11 +67,13 @@ public class PremiumListUtilsTest {
|
||||
.withPremiumListEntriesCache(standardDays(1))
|
||||
.build();
|
||||
|
||||
private PremiumList pl;
|
||||
|
||||
@BeforeEach
|
||||
void before() {
|
||||
// createTld() overwrites the premium list, so call it before persisting pl.
|
||||
createTld("tld");
|
||||
PremiumList pl =
|
||||
pl =
|
||||
persistPremiumList(
|
||||
"tld",
|
||||
"lol,USD 999 # yup",
|
||||
@@ -98,66 +97,39 @@ public class PremiumListUtilsTest {
|
||||
.hasNoOtherValues();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetPremiumPrice_returnsNoPriceWhenNoPremiumListConfigured() {
|
||||
createTld("ghost");
|
||||
persistResource(
|
||||
new Registry.Builder()
|
||||
.setTldStr("ghost")
|
||||
.setPremiumPricingEngine(StaticPremiumListPricingEngine.NAME)
|
||||
.setDnsWriters(ImmutableSet.of(VoidDnsWriter.NAME))
|
||||
.build());
|
||||
assertThat(Registry.get("ghost").getPremiumList()).isNull();
|
||||
assertThat(getPremiumPrice("blah", Registry.get("ghost"))).isEmpty();
|
||||
assertThat(premiumListChecks).hasNoOtherValues();
|
||||
assertThat(premiumListProcessingTime).hasNoOtherValues();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetPremiumPrice_throwsExceptionWhenNonExistentPremiumListConfigured() {
|
||||
deletePremiumList(PremiumList.getUncached("tld").get());
|
||||
IllegalStateException thrown =
|
||||
assertThrows(
|
||||
IllegalStateException.class, () -> getPremiumPrice("blah", Registry.get("tld")));
|
||||
assertThat(thrown).hasMessageThat().contains("Could not load premium list 'tld'");
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSave_largeNumberOfEntries_succeeds() {
|
||||
PremiumList premiumList = persistHumongousPremiumList("tld", 2500);
|
||||
assertThat(loadPremiumListEntries(premiumList)).hasSize(2500);
|
||||
assertThat(getPremiumPrice("7", Registry.get("tld"))).hasValue(Money.parse("USD 100"));
|
||||
assertThat(PremiumListDatastoreDao.getPremiumPrice("tld", "7", "tld"))
|
||||
.hasValue(Money.parse("USD 100"));
|
||||
assertMetricOutcomeCount(1, UNCACHED_POSITIVE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSave_updateTime_isUpdatedOnEverySave() {
|
||||
PremiumList pl =
|
||||
savePremiumListAndEntries(
|
||||
new PremiumList.Builder().setName("tld3").build(), ImmutableList.of("slime,USD 10"));
|
||||
PremiumList newPl =
|
||||
savePremiumListAndEntries(
|
||||
new PremiumList.Builder().setName(pl.getName()).build(),
|
||||
ImmutableList.of("mutants,USD 20"));
|
||||
PremiumList pl = PremiumListDatastoreDao.save("tld3", ImmutableList.of("slime,USD 10"));
|
||||
PremiumList newPl = PremiumListDatastoreDao.save("tld3", ImmutableList.of("mutants,USD 20"));
|
||||
assertThat(newPl.getLastUpdateTime()).isGreaterThan(pl.getLastUpdateTime());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSave_creationTime_onlyUpdatedOnFirstCreation() {
|
||||
PremiumList pl = persistPremiumList("tld3", "sludge,JPY 1000");
|
||||
PremiumList newPl = savePremiumListAndEntries(pl, ImmutableList.of("sleighbells,CHF 2000"));
|
||||
PremiumList newPl =
|
||||
PremiumListDatastoreDao.save("tld3", ImmutableList.of("sleighbells,CHF 2000"));
|
||||
assertThat(newPl.creationTime).isEqualTo(pl.creationTime);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testExists() {
|
||||
assertThat(doesPremiumListExist("tld")).isTrue();
|
||||
assertThat(doesPremiumListExist("nonExistentPremiumList")).isFalse();
|
||||
assertThat(PremiumListDatastoreDao.getLatestRevision("tld")).isPresent();
|
||||
assertThat(PremiumListDatastoreDao.getLatestRevision("nonExistentPremiumList")).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetPremiumPrice_comesFromBloomFilter() throws Exception {
|
||||
PremiumList pl = PremiumList.getCached("tld").get();
|
||||
PremiumList pl = PremiumListDatastoreDao.getLatestRevision("tld").get();
|
||||
PremiumListEntry entry =
|
||||
persistResource(
|
||||
new PremiumListEntry.Builder()
|
||||
@@ -167,10 +139,10 @@ public class PremiumListUtilsTest {
|
||||
.build());
|
||||
// "missingno" shouldn't be in the Bloom filter, thus it should return not premium without
|
||||
// attempting to load the entity that is actually present.
|
||||
assertThat(getPremiumPrice("missingno", Registry.get("tld"))).isEmpty();
|
||||
assertThat(PremiumListDatastoreDao.getPremiumPrice("tld", "missingno", "tld")).isEmpty();
|
||||
// However, if we manually query the cache to force an entity load, it should be found.
|
||||
assertThat(
|
||||
PremiumList.cachePremiumListEntries.get(
|
||||
PremiumListDatastoreDao.premiumListEntriesCache.get(
|
||||
Key.create(pl.getRevisionKey(), PremiumListEntry.class, "missingno")))
|
||||
.hasValue(entry);
|
||||
assertMetricOutcomeCount(1, BLOOM_FILTER_NEGATIVE);
|
||||
@@ -178,8 +150,10 @@ public class PremiumListUtilsTest {
|
||||
|
||||
@Test
|
||||
void testGetPremiumPrice_cachedSecondTime() {
|
||||
assertThat(getPremiumPrice("rich", Registry.get("tld"))).hasValue(Money.parse("USD 1999"));
|
||||
assertThat(getPremiumPrice("rich", Registry.get("tld"))).hasValue(Money.parse("USD 1999"));
|
||||
assertThat(PremiumListDatastoreDao.getPremiumPrice("tld", "rich", "tld"))
|
||||
.hasValue(Money.parse("USD 1999"));
|
||||
assertThat(PremiumListDatastoreDao.getPremiumPrice("tld", "rich", "tld"))
|
||||
.hasValue(Money.parse("USD 1999"));
|
||||
assertThat(premiumListChecks)
|
||||
.hasValueForLabels(1, "tld", "tld", UNCACHED_POSITIVE.toString())
|
||||
.and()
|
||||
@@ -197,20 +171,15 @@ public class PremiumListUtilsTest {
|
||||
@Test
|
||||
void testGetPremiumPrice_bloomFilterFalsePositive() {
|
||||
// Remove one of the premium list entries from behind the Bloom filter's back.
|
||||
tm()
|
||||
.transactNew(
|
||||
tm().transactNew(
|
||||
() ->
|
||||
ofy()
|
||||
.delete()
|
||||
.keys(
|
||||
Key.create(
|
||||
PremiumList.getCached("tld").get().getRevisionKey(),
|
||||
PremiumListEntry.class,
|
||||
"rich")));
|
||||
.keys(Key.create(pl.getRevisionKey(), PremiumListEntry.class, "rich")));
|
||||
ofy().clearSessionCache();
|
||||
|
||||
assertThat(getPremiumPrice("rich", Registry.get("tld"))).isEmpty();
|
||||
assertThat(getPremiumPrice("rich", Registry.get("tld"))).isEmpty();
|
||||
assertThat(PremiumListDatastoreDao.getPremiumPrice("tld", "rich", "tld")).isEmpty();
|
||||
assertThat(PremiumListDatastoreDao.getPremiumPrice("tld", "rich", "tld")).isEmpty();
|
||||
|
||||
assertThat(premiumListChecks)
|
||||
.hasValueForLabels(1, "tld", "tld", UNCACHED_NEGATIVE.toString())
|
||||
@@ -228,22 +197,26 @@ public class PremiumListUtilsTest {
|
||||
|
||||
@Test
|
||||
void testSave_removedPremiumListEntries_areNoLongerInDatastore() {
|
||||
Registry registry = Registry.get("tld");
|
||||
PremiumList pl = persistPremiumList("tld", "genius,USD 10", "dolt,JPY 1000");
|
||||
assertThat(getPremiumPrice("genius", registry)).hasValue(Money.parse("USD 10"));
|
||||
assertThat(getPremiumPrice("dolt", registry)).hasValue(Money.parse("JPY 1000"));
|
||||
assertThat(ofy()
|
||||
.load()
|
||||
.type(PremiumListEntry.class)
|
||||
.parent(pl.getRevisionKey())
|
||||
.id("dolt")
|
||||
.now()
|
||||
.price)
|
||||
assertThat(PremiumListDatastoreDao.getPremiumPrice("tld", "genius", "tld"))
|
||||
.hasValue(Money.parse("USD 10"));
|
||||
assertThat(PremiumListDatastoreDao.getPremiumPrice("tld", "dolt", "tld"))
|
||||
.hasValue(Money.parse("JPY 1000"));
|
||||
assertThat(
|
||||
ofy()
|
||||
.load()
|
||||
.type(PremiumListEntry.class)
|
||||
.parent(pl.getRevisionKey())
|
||||
.id("dolt")
|
||||
.now()
|
||||
.price)
|
||||
.isEqualTo(Money.parse("JPY 1000"));
|
||||
savePremiumListAndEntries(pl, ImmutableList.of("genius,USD 10", "savant,USD 90"));
|
||||
assertThat(getPremiumPrice("genius", registry)).hasValue(Money.parse("USD 10"));
|
||||
assertThat(getPremiumPrice("savant", registry)).hasValue(Money.parse("USD 90"));
|
||||
assertThat(getPremiumPrice("dolt", registry)).isEmpty();
|
||||
PremiumListDatastoreDao.save("tld", ImmutableList.of("genius,USD 10", "savant,USD 90"));
|
||||
assertThat(PremiumListDatastoreDao.getPremiumPrice("tld", "genius", "tld"))
|
||||
.hasValue(Money.parse("USD 10"));
|
||||
assertThat(PremiumListDatastoreDao.getPremiumPrice("tld", "savant", "tld"))
|
||||
.hasValue(Money.parse("USD 90"));
|
||||
assertThat(PremiumListDatastoreDao.getPremiumPrice("tld", "dolt", "tld")).isEmpty();
|
||||
// TODO(b/79888775): Assert that the old premium list is enqueued for later deletion.
|
||||
assertThat(premiumListChecks)
|
||||
.hasValueForLabels(4, "tld", "tld", UNCACHED_POSITIVE.toString())
|
||||
@@ -261,23 +234,22 @@ public class PremiumListUtilsTest {
|
||||
|
||||
@Test
|
||||
void testGetPremiumPrice_allLabelsAreNonPremium_whenNotInList() {
|
||||
assertThat(getPremiumPrice("blah", Registry.get("tld"))).isEmpty();
|
||||
assertThat(getPremiumPrice("slinge", Registry.get("tld"))).isEmpty();
|
||||
assertThat(PremiumListDatastoreDao.getPremiumPrice("tld", "blah", "tld")).isEmpty();
|
||||
assertThat(PremiumListDatastoreDao.getPremiumPrice("tld", "slinge", "tld")).isEmpty();
|
||||
assertMetricOutcomeCount(2, BLOOM_FILTER_NEGATIVE);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSave_simple() {
|
||||
PremiumList pl =
|
||||
savePremiumListAndEntries(
|
||||
new PremiumList.Builder().setName("tld2").build(),
|
||||
ImmutableList.of("lol , USD 999 # yupper rooni "));
|
||||
createTld("tld");
|
||||
PremiumListDatastoreDao.save("tld2", ImmutableList.of("lol , USD 999 # yupper rooni "));
|
||||
persistResource(Registry.get("tld").asBuilder().setPremiumList(pl).build());
|
||||
assertThat(getPremiumPrice("lol", Registry.get("tld"))).hasValue(Money.parse("USD 999"));
|
||||
assertThat(getPremiumPrice("lol ", Registry.get("tld"))).isEmpty();
|
||||
assertThat(PremiumListDatastoreDao.getPremiumPrice("tld2", "lol", "tld"))
|
||||
.hasValue(Money.parse("USD 999"));
|
||||
assertThat(PremiumListDatastoreDao.getPremiumPrice("tld2", "lol ", "tld")).isEmpty();
|
||||
ImmutableMap<String, PremiumListEntry> entries =
|
||||
loadPremiumListEntries(PremiumList.getUncached("tld2").get());
|
||||
Streams.stream(PremiumListDatastoreDao.loadPremiumListEntriesUncached(pl))
|
||||
.collect(toImmutableMap(PremiumListEntry::getLabel, Function.identity()));
|
||||
assertThat(entries.keySet()).containsExactly("lol");
|
||||
assertThat(entries).doesNotContainKey("lol ");
|
||||
PremiumListEntry entry = entries.get("lol");
|
||||
@@ -300,47 +272,47 @@ public class PremiumListUtilsTest {
|
||||
|
||||
@Test
|
||||
void test_saveAndUpdateEntriesTwice() {
|
||||
PremiumList pl =
|
||||
savePremiumListAndEntries(
|
||||
new PremiumList.Builder().setName("pl").build(), ImmutableList.of("test,USD 1"));
|
||||
ImmutableMap<String, PremiumListEntry> entries = loadPremiumListEntries(pl);
|
||||
PremiumList firstSave = PremiumListDatastoreDao.save("tld", ImmutableList.of("test,USD 1"));
|
||||
ImmutableMap<String, PremiumListEntry> entries =
|
||||
Streams.stream(PremiumListDatastoreDao.loadPremiumListEntriesUncached(firstSave))
|
||||
.collect(toImmutableMap(PremiumListEntry::getLabel, Function.identity()));
|
||||
assertThat(entries.keySet()).containsExactly("test");
|
||||
assertThat(loadPremiumListEntries(PremiumList.getUncached("pl").get())).isEqualTo(entries);
|
||||
// Save again with no changes, and clear the cache to force a re-load from Datastore.
|
||||
PremiumList resaved = savePremiumListAndEntries(pl, ImmutableList.of("test,USD 1"));
|
||||
PremiumList resaved = PremiumListDatastoreDao.save("tld", ImmutableList.of("test,USD 1"));
|
||||
ofy().clearSessionCache();
|
||||
Map<String, PremiumListEntry> entriesReloaded =
|
||||
loadPremiumListEntries(PremiumList.getUncached("pl").get());
|
||||
Streams.stream(PremiumListDatastoreDao.loadPremiumListEntriesUncached(resaved))
|
||||
.collect(toImmutableMap(PremiumListEntry::getLabel, Function.identity()));
|
||||
assertThat(entriesReloaded).hasSize(1);
|
||||
assertThat(entriesReloaded).containsKey("test");
|
||||
assertThat(entriesReloaded.get("test").parent).isEqualTo(resaved.getRevisionKey());
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_savePremiumListAndEntries_clearsCache() {
|
||||
assertThat(PremiumList.cachePremiumLists.getIfPresent("tld")).isNull();
|
||||
PremiumList pl = PremiumList.getCached("tld").get();
|
||||
assertThat(PremiumList.cachePremiumLists.getIfPresent("tld")).isEqualTo(pl);
|
||||
savePremiumListAndEntries(
|
||||
new PremiumList.Builder().setName("tld").build(), ImmutableList.of("test,USD 1"));
|
||||
assertThat(PremiumList.cachePremiumLists.getIfPresent("tld")).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDelete() {
|
||||
persistPremiumList("gtld1", "trombone,USD 10");
|
||||
assertThat(PremiumList.getUncached("gtld1")).isPresent();
|
||||
Key<PremiumListRevision> parent = PremiumList.getUncached("gtld1").get().getRevisionKey();
|
||||
deletePremiumList(PremiumList.getUncached("gtld1").get());
|
||||
assertThat(PremiumList.getUncached("gtld1")).isEmpty();
|
||||
Optional<PremiumList> gtld1 = PremiumListDatastoreDao.getLatestRevision("gtld1");
|
||||
assertThat(gtld1).isPresent();
|
||||
Key<PremiumListRevision> parent = gtld1.get().getRevisionKey();
|
||||
PremiumListDatastoreDao.delete(gtld1.get());
|
||||
assertThat(PremiumListDatastoreDao.getLatestRevision("gtld1")).isEmpty();
|
||||
assertThat(ofy().load().type(PremiumListEntry.class).ancestor(parent).list()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testDelete_largeNumberOfEntries_succeeds() {
|
||||
persistHumongousPremiumList("ginormous", 2500);
|
||||
deletePremiumList(PremiumList.getUncached("ginormous").get());
|
||||
assertThat(PremiumList.getUncached("ginormous")).isEmpty();
|
||||
PremiumList large = persistHumongousPremiumList("ginormous", 2500);
|
||||
PremiumListDatastoreDao.delete(large);
|
||||
assertThat(PremiumListDatastoreDao.getLatestRevision("ginormous")).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_savePremiumList_clearsCache() {
|
||||
assertThat(PremiumListDatastoreDao.premiumListCache.getIfPresent("tld")).isNull();
|
||||
PremiumList pl = PremiumListDatastoreDao.getLatestRevision("tld").get();
|
||||
assertThat(PremiumListDatastoreDao.premiumListCache.getIfPresent("tld").get()).isEqualTo(pl);
|
||||
transactIfJpaTm(() -> PremiumListDatastoreDao.save("tld", ImmutableList.of("test,USD 1")));
|
||||
assertThat(PremiumListDatastoreDao.premiumListCache.getIfPresent("tld")).isNull();
|
||||
}
|
||||
|
||||
/** Persists a premium list with a specified number of nonsense entries. */
|
||||
@@ -0,0 +1,139 @@
|
||||
// Copyright 2021 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.model.registry.label;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.testing.DatabaseHelper.createTld;
|
||||
import static google.registry.testing.DatabaseHelper.newRegistry;
|
||||
import static google.registry.testing.DatabaseHelper.persistResource;
|
||||
import static org.joda.time.Duration.standardDays;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.truth.Truth8;
|
||||
import google.registry.dns.writer.VoidDnsWriter;
|
||||
import google.registry.model.pricing.StaticPremiumListPricingEngine;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.schema.tld.PremiumListSqlDao;
|
||||
import google.registry.testing.AppEngineExtension;
|
||||
import google.registry.testing.DualDatabaseTest;
|
||||
import google.registry.testing.TestCacheExtension;
|
||||
import google.registry.testing.TestOfyAndSql;
|
||||
import google.registry.testing.TestOfyOnly;
|
||||
import google.registry.testing.TestSqlOnly;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
|
||||
/** Unit tests for {@link PremiumListDualDao}. */
|
||||
@DualDatabaseTest
|
||||
public class PremiumListDualDaoTest {
|
||||
|
||||
@RegisterExtension
|
||||
public final AppEngineExtension appEngine =
|
||||
AppEngineExtension.builder().withDatastoreAndCloudSql().build();
|
||||
|
||||
// Set long persist times on caches so they can be tested (cache times default to 0 in tests).
|
||||
@RegisterExtension
|
||||
public final TestCacheExtension testCacheExtension =
|
||||
new TestCacheExtension.Builder()
|
||||
.withPremiumListsCache(standardDays(1))
|
||||
.withPremiumListEntriesCache(standardDays(1))
|
||||
.build();
|
||||
|
||||
@BeforeEach
|
||||
void before() {
|
||||
createTld("tld");
|
||||
}
|
||||
|
||||
@TestOfyOnly
|
||||
void testGetPremiumPrice_secondaryLoadMissingSql() {
|
||||
PremiumListSqlDao.delete(PremiumListSqlDao.getLatestRevision("tld").get());
|
||||
assertThat(
|
||||
assertThrows(
|
||||
IllegalStateException.class,
|
||||
() -> PremiumListDualDao.getPremiumPrice("brass", Registry.get("tld"))))
|
||||
.hasMessageThat()
|
||||
.isEqualTo(
|
||||
"Unequal prices for domain brass.tld from primary Datastore DB "
|
||||
+ "(Optional[USD 20.00]) and secondary SQL db (Optional.empty).");
|
||||
}
|
||||
|
||||
@TestSqlOnly
|
||||
void testGetPremiumPrice_secondaryLoadMissingOfy() {
|
||||
PremiumList premiumList = PremiumListDatastoreDao.getLatestRevision("tld").get();
|
||||
PremiumListDatastoreDao.delete(premiumList);
|
||||
assertThat(
|
||||
assertThrows(
|
||||
IllegalStateException.class,
|
||||
() -> PremiumListDualDao.getPremiumPrice("brass", Registry.get("tld"))))
|
||||
.hasMessageThat()
|
||||
.isEqualTo(
|
||||
"Unequal prices for domain brass.tld from primary SQL DB (Optional[USD 20.00]) "
|
||||
+ "and secondary Datastore db (Optional.empty).");
|
||||
}
|
||||
|
||||
@TestOfyOnly
|
||||
void testGetPremiumPrice_secondaryDifferentSql() {
|
||||
PremiumListSqlDao.save("tld", ImmutableList.of("brass,USD 50"));
|
||||
assertThat(
|
||||
assertThrows(
|
||||
IllegalStateException.class,
|
||||
() -> PremiumListDualDao.getPremiumPrice("brass", Registry.get("tld"))))
|
||||
.hasMessageThat()
|
||||
.isEqualTo(
|
||||
"Unequal prices for domain brass.tld from primary Datastore DB "
|
||||
+ "(Optional[USD 20.00]) and secondary SQL db (Optional[USD 50.00]).");
|
||||
}
|
||||
|
||||
@TestSqlOnly
|
||||
void testGetPremiumPrice_secondaryDifferentOfy() {
|
||||
PremiumListDatastoreDao.save("tld", ImmutableList.of("brass,USD 50"));
|
||||
assertThat(
|
||||
assertThrows(
|
||||
IllegalStateException.class,
|
||||
() -> PremiumListDualDao.getPremiumPrice("brass", Registry.get("tld"))))
|
||||
.hasMessageThat()
|
||||
.isEqualTo(
|
||||
"Unequal prices for domain brass.tld from primary SQL DB "
|
||||
+ "(Optional[USD 20.00]) and secondary Datastore db (Optional[USD 50.00]).");
|
||||
}
|
||||
|
||||
@TestOfyAndSql
|
||||
void testGetPremiumPrice_returnsNoPriceWhenNoPremiumListConfigured() {
|
||||
createTld("ghost");
|
||||
persistResource(
|
||||
new Registry.Builder()
|
||||
.setTldStr("ghost")
|
||||
.setPremiumPricingEngine(StaticPremiumListPricingEngine.NAME)
|
||||
.setDnsWriters(ImmutableSet.of(VoidDnsWriter.NAME))
|
||||
.build());
|
||||
assertThat(Registry.get("ghost").getPremiumList()).isNull();
|
||||
Truth8.assertThat(PremiumListDualDao.getPremiumPrice("blah", Registry.get("ghost"))).isEmpty();
|
||||
}
|
||||
|
||||
@TestOfyAndSql
|
||||
void testGetPremiumPrice_emptyWhenPremiumListDeleted() {
|
||||
PremiumList toDelete = PremiumListDualDao.getLatestRevision("tld").get();
|
||||
PremiumListDualDao.delete(toDelete);
|
||||
Truth8.assertThat(PremiumListDualDao.getPremiumPrice("blah", Registry.get("tld"))).isEmpty();
|
||||
}
|
||||
|
||||
@TestOfyAndSql
|
||||
void getPremiumPrice_returnsNoneWhenNoPremiumListConfigured() {
|
||||
persistResource(newRegistry("foobar", "FOOBAR").asBuilder().setPremiumList(null).build());
|
||||
Truth8.assertThat(PremiumListDualDao.getPremiumPrice("rich", Registry.get("foobar"))).isEmpty();
|
||||
}
|
||||
}
|
||||
@@ -69,7 +69,7 @@ public class PremiumListTest {
|
||||
|
||||
@Test
|
||||
void testProbablePremiumLabels() {
|
||||
PremiumList pl = PremiumList.getUncached("tld").get();
|
||||
PremiumList pl = PremiumListDualDao.getLatestRevision("tld").get();
|
||||
PremiumListRevision revision = ofy().load().key(pl.getRevisionKey()).now();
|
||||
assertThat(revision.getProbablePremiumLabels().mightContain("notpremium")).isFalse();
|
||||
for (String label : ImmutableList.of("rich", "lol", "johnny-be-goode", "icann")) {
|
||||
@@ -85,7 +85,7 @@ public class PremiumListTest {
|
||||
assertThrows(
|
||||
IllegalStateException.class,
|
||||
() ->
|
||||
PremiumList.getUncached("tld")
|
||||
PremiumListDualDao.getLatestRevision("tld")
|
||||
.get()
|
||||
.parse(
|
||||
ImmutableList.of(
|
||||
|
||||
@@ -38,12 +38,14 @@ import google.registry.rdap.RdapMetrics.SearchType;
|
||||
import google.registry.rdap.RdapMetrics.WildcardType;
|
||||
import google.registry.rdap.RdapSearchResults.IncompletenessWarningType;
|
||||
import google.registry.request.Action;
|
||||
import google.registry.testing.DualDatabaseTest;
|
||||
import google.registry.testing.TestOfyAndSql;
|
||||
import java.util.Optional;
|
||||
import javax.annotation.Nullable;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/** Unit tests for {@link RdapEntityAction}. */
|
||||
@DualDatabaseTest
|
||||
class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
|
||||
|
||||
RdapEntityActionTest() {
|
||||
@@ -187,35 +189,35 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
|
||||
assertThat(response.getStatus()).isEqualTo(404);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testUnknownEntity_RoidPattern_notFound() {
|
||||
runNotFoundTest("_MISSING-ENTITY_");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testUnknownEntity_IanaPattern_notFound() {
|
||||
runNotFoundTest("123");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testUnknownEntity_notRoidNotIana_notFound() {
|
||||
// Since we allow search by registrar name, every string is a possible name
|
||||
runNotFoundTest("some,random,string");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testValidRegistrantContact_works() {
|
||||
login("evilregistrar");
|
||||
runSuccessfulHandleTest(registrant.getRepoId(), "rdap_associated_contact.json");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testValidRegistrantContact_found_asAdministrator() {
|
||||
loginAsAdmin();
|
||||
runSuccessfulHandleTest(registrant.getRepoId(), "rdap_associated_contact.json");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testValidRegistrantContact_found_notLoggedIn() {
|
||||
runSuccessfulHandleTest(
|
||||
registrant.getRepoId(),
|
||||
@@ -225,7 +227,7 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
|
||||
"rdap_associated_contact_no_personal_data.json");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testValidRegistrantContact_found_loggedInAsOtherRegistrar() {
|
||||
login("otherregistrar");
|
||||
runSuccessfulHandleTest(
|
||||
@@ -236,49 +238,49 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
|
||||
"rdap_associated_contact_no_personal_data.json");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testValidAdminContact_works() {
|
||||
login("evilregistrar");
|
||||
runSuccessfulHandleTest(adminContact.getRepoId(), "rdap_associated_contact.json");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testValidTechContact_works() {
|
||||
login("evilregistrar");
|
||||
runSuccessfulHandleTest(techContact.getRepoId(), "rdap_associated_contact.json");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testValidDisconnectedContact_works() {
|
||||
login("evilregistrar");
|
||||
runSuccessfulHandleTest(disconnectedContact.getRepoId(), "rdap_contact.json");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testDeletedContact_notFound() {
|
||||
runNotFoundTest(deletedContact.getRepoId());
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testDeletedContact_notFound_includeDeletedSetFalse() {
|
||||
action.includeDeletedParam = Optional.of(false);
|
||||
runNotFoundTest(deletedContact.getRepoId());
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testDeletedContact_notFound_notLoggedIn() {
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
runNotFoundTest(deletedContact.getRepoId());
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testDeletedContact_notFound_loggedInAsDifferentRegistrar() {
|
||||
login("idnregistrar");
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
runNotFoundTest(deletedContact.getRepoId());
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testDeletedContact_found_loggedInAsCorrectRegistrar() {
|
||||
login("evilregistrar");
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
@@ -290,7 +292,7 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
|
||||
"rdap_contact_deleted.json");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testDeletedContact_found_loggedInAsAdmin() {
|
||||
loginAsAdmin();
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
@@ -302,12 +304,12 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
|
||||
"rdap_contact_deleted.json");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrar_found() {
|
||||
runSuccessfulHandleTest("101", "Yes Virginia <script>", "rdap_registrar.json");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrarByName_found() {
|
||||
assertThat(generateActualJson("IDN%20Registrar"))
|
||||
.isEqualTo(
|
||||
@@ -316,28 +318,28 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrar102_works() {
|
||||
runSuccessfulHandleTest("102", "IDN Registrar", "rdap_registrar.json");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrar103_works() {
|
||||
runSuccessfulHandleTest("103", "Multilevel Registrar", "rdap_registrar.json");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrar104_notFound() {
|
||||
runNotFoundTest("104");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrar104_notFound_deletedFlagWhenNotLoggedIn() {
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
runNotFoundTest("104");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrar104_found_deletedFlagWhenLoggedIn() {
|
||||
login("deletedregistrar");
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
@@ -345,14 +347,14 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
|
||||
"104", "Yes Virginia <script>", "inactive", null, "rdap_registrar.json");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrar104_notFound_deletedFlagWhenLoggedInAsOther() {
|
||||
login("1tldregistrar");
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
runNotFoundTest("104");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrar104_found_deletedFlagWhenLoggedInAsAdmin() {
|
||||
loginAsAdmin();
|
||||
action.includeDeletedParam = Optional.of(true);
|
||||
@@ -360,12 +362,12 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
|
||||
"104", "Yes Virginia <script>", "inactive", null, "rdap_registrar.json");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrar105_doesNotExist() {
|
||||
runNotFoundTest("105");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testQueryParameter_ignored() {
|
||||
login("evilregistrar");
|
||||
assertThat(generateActualJson(techContact.getRepoId() + "?key=value")).isEqualTo(
|
||||
@@ -374,7 +376,7 @@ class RdapEntityActionTest extends RdapActionBaseTestCase<RdapEntityAction> {
|
||||
assertThat(response.getStatus()).isEqualTo(200);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testMetrics() {
|
||||
generateActualJson(registrant.getRepoId());
|
||||
verify(rdapMetrics)
|
||||
|
||||
@@ -47,14 +47,16 @@ import google.registry.rdap.RdapObjectClasses.RdapEntity;
|
||||
import google.registry.rdap.RdapObjectClasses.ReplyPayloadBase;
|
||||
import google.registry.rdap.RdapObjectClasses.TopLevelReplyObject;
|
||||
import google.registry.testing.AppEngineExtension;
|
||||
import google.registry.testing.DualDatabaseTest;
|
||||
import google.registry.testing.FakeClock;
|
||||
import google.registry.testing.InjectExtension;
|
||||
import google.registry.testing.TestOfyAndSql;
|
||||
import org.joda.time.DateTime;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
|
||||
/** Unit tests for {@link RdapJsonFormatter}. */
|
||||
@DualDatabaseTest
|
||||
class RdapJsonFormatterTest {
|
||||
|
||||
@RegisterExtension
|
||||
@@ -300,41 +302,41 @@ class RdapJsonFormatterTest {
|
||||
return new Gson().fromJson(loadFile(this.getClass(), expectedFileName), JsonObject.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrar() {
|
||||
assertThat(rdapJsonFormatter.createRdapRegistrarEntity(registrar, OutputDataType.FULL).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_registrar.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrar_summary() {
|
||||
assertThat(
|
||||
rdapJsonFormatter.createRdapRegistrarEntity(registrar, OutputDataType.SUMMARY).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_registrar_summary.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testHost_ipv4() {
|
||||
assertThat(
|
||||
rdapJsonFormatter.createRdapNameserver(hostResourceIpv4, OutputDataType.FULL).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_host_ipv4.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testHost_ipv6() {
|
||||
assertThat(
|
||||
rdapJsonFormatter.createRdapNameserver(hostResourceIpv6, OutputDataType.FULL).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_host_ipv6.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testHost_both() {
|
||||
assertThat(
|
||||
rdapJsonFormatter.createRdapNameserver(hostResourceBoth, OutputDataType.FULL).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_host_both.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testHost_both_summary() {
|
||||
assertThat(
|
||||
rdapJsonFormatter
|
||||
@@ -343,7 +345,7 @@ class RdapJsonFormatterTest {
|
||||
.isEqualTo(loadJson("rdapjson_host_both_summary.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testHost_noAddresses() {
|
||||
assertThat(
|
||||
rdapJsonFormatter
|
||||
@@ -352,7 +354,7 @@ class RdapJsonFormatterTest {
|
||||
.isEqualTo(loadJson("rdapjson_host_no_addresses.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testHost_notLinked() {
|
||||
assertThat(
|
||||
rdapJsonFormatter
|
||||
@@ -361,7 +363,7 @@ class RdapJsonFormatterTest {
|
||||
.isEqualTo(loadJson("rdapjson_host_not_linked.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testHost_superordinateHasPendingTransfer() {
|
||||
assertThat(
|
||||
rdapJsonFormatter
|
||||
@@ -370,7 +372,7 @@ class RdapJsonFormatterTest {
|
||||
.isEqualTo(loadJson("rdapjson_host_pending_transfer.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrant() {
|
||||
assertThat(
|
||||
rdapJsonFormatter
|
||||
@@ -382,7 +384,7 @@ class RdapJsonFormatterTest {
|
||||
.isEqualTo(loadJson("rdapjson_registrant.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrant_summary() {
|
||||
assertThat(
|
||||
rdapJsonFormatter
|
||||
@@ -394,7 +396,7 @@ class RdapJsonFormatterTest {
|
||||
.isEqualTo(loadJson("rdapjson_registrant_summary.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrant_loggedOut() {
|
||||
rdapJsonFormatter.rdapAuthorization = RdapAuthorization.PUBLIC_AUTHORIZATION;
|
||||
assertThat(
|
||||
@@ -407,7 +409,7 @@ class RdapJsonFormatterTest {
|
||||
.isEqualTo(loadJson("rdapjson_registrant_logged_out.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRegistrant_baseHasNoTrailingSlash() {
|
||||
// First, make sure we have a trailing slash at the end by default!
|
||||
// This test tries to change the default state, if the default doesn't have a /, then this test
|
||||
@@ -426,7 +428,7 @@ class RdapJsonFormatterTest {
|
||||
.isEqualTo(loadJson("rdapjson_registrant.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testAdmin() {
|
||||
assertThat(
|
||||
rdapJsonFormatter
|
||||
@@ -438,7 +440,7 @@ class RdapJsonFormatterTest {
|
||||
.isEqualTo(loadJson("rdapjson_admincontact.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testTech() {
|
||||
assertThat(
|
||||
rdapJsonFormatter
|
||||
@@ -448,7 +450,7 @@ class RdapJsonFormatterTest {
|
||||
.isEqualTo(loadJson("rdapjson_techcontact.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testRolelessContact() {
|
||||
assertThat(
|
||||
rdapJsonFormatter
|
||||
@@ -458,7 +460,7 @@ class RdapJsonFormatterTest {
|
||||
.isEqualTo(loadJson("rdapjson_rolelesscontact.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testUnlinkedContact() {
|
||||
assertThat(
|
||||
rdapJsonFormatter
|
||||
@@ -468,26 +470,26 @@ class RdapJsonFormatterTest {
|
||||
.isEqualTo(loadJson("rdapjson_unlinkedcontact.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testDomain_full() {
|
||||
assertThat(rdapJsonFormatter.createRdapDomain(domainBaseFull, OutputDataType.FULL).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_domain_full.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testDomain_summary() {
|
||||
assertThat(rdapJsonFormatter.createRdapDomain(domainBaseFull, OutputDataType.SUMMARY).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_domain_summary.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testDomain_logged_out() {
|
||||
rdapJsonFormatter.rdapAuthorization = RdapAuthorization.PUBLIC_AUTHORIZATION;
|
||||
assertThat(rdapJsonFormatter.createRdapDomain(domainBaseFull, OutputDataType.FULL).toJson())
|
||||
.isEqualTo(loadJson("rdapjson_domain_logged_out.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testDomain_noNameserversNoTransfersMultipleRoleContact() {
|
||||
assertThat(
|
||||
rdapJsonFormatter
|
||||
@@ -496,7 +498,7 @@ class RdapJsonFormatterTest {
|
||||
.isEqualTo(loadJson("rdapjson_domain_no_nameservers.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testError() {
|
||||
assertThat(
|
||||
RdapObjectClasses.ErrorResponse.create(
|
||||
@@ -505,7 +507,7 @@ class RdapJsonFormatterTest {
|
||||
.isEqualTo(loadJson("rdapjson_error.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testTopLevel() {
|
||||
assertThat(
|
||||
TopLevelReplyObject.create(
|
||||
@@ -517,7 +519,7 @@ class RdapJsonFormatterTest {
|
||||
.isEqualTo(loadJson("rdapjson_toplevel.json"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testTopLevel_domain() {
|
||||
assertThat(
|
||||
TopLevelReplyObject.create(
|
||||
|
||||
@@ -35,13 +35,15 @@ import google.registry.model.registrar.RegistrarAddress;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.model.registry.Registry.TldType;
|
||||
import google.registry.testing.AppEngineExtension;
|
||||
import google.registry.testing.DualDatabaseTest;
|
||||
import google.registry.testing.TestOfyAndSql;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
|
||||
/** Unit tests for {@link UpdateRegistrarRdapBaseUrlsAction}. */
|
||||
@DualDatabaseTest
|
||||
public final class UpdateRegistrarRdapBaseUrlsActionTest {
|
||||
|
||||
/**
|
||||
@@ -160,7 +162,7 @@ public final class UpdateRegistrarRdapBaseUrlsActionTest {
|
||||
.build());
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testUnknownIana_cleared() {
|
||||
// The IANA ID isn't in the JSON_LIST_REPLY
|
||||
persistRegistrar("someRegistrar", 4123L, Registrar.Type.REAL, "http://rdap.example/blah");
|
||||
@@ -172,7 +174,7 @@ public final class UpdateRegistrarRdapBaseUrlsActionTest {
|
||||
assertThat(loadRegistrar("someRegistrar").getRdapBaseUrls()).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testKnownIana_changed() {
|
||||
// The IANA ID is in the JSON_LIST_REPLY
|
||||
persistRegistrar("someRegistrar", 1448L, Registrar.Type.REAL, "http://rdap.example/blah");
|
||||
@@ -185,7 +187,7 @@ public final class UpdateRegistrarRdapBaseUrlsActionTest {
|
||||
.containsExactly("https://rdap.blacknight.com");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testKnownIana_notReal_noChange() {
|
||||
// The IANA ID is in the JSON_LIST_REPLY
|
||||
persistRegistrar("someRegistrar", 9999L, Registrar.Type.INTERNAL, "http://rdap.example/blah");
|
||||
@@ -198,7 +200,7 @@ public final class UpdateRegistrarRdapBaseUrlsActionTest {
|
||||
.containsExactly("http://rdap.example/blah");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testKnownIana_notReal_nullIANA_noChange() {
|
||||
persistRegistrar("someRegistrar", null, Registrar.Type.TEST, "http://rdap.example/blah");
|
||||
|
||||
@@ -210,7 +212,7 @@ public final class UpdateRegistrarRdapBaseUrlsActionTest {
|
||||
.containsExactly("http://rdap.example/blah");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testKnownIana_multipleValues() {
|
||||
// The IANA ID is in the JSON_LIST_REPLY
|
||||
persistRegistrar("registrar4000", 4000L, Registrar.Type.REAL, "http://rdap.example/blah");
|
||||
@@ -227,7 +229,7 @@ public final class UpdateRegistrarRdapBaseUrlsActionTest {
|
||||
.containsExactly("https://rdap.example.com");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testNoTlds() {
|
||||
deleteTld("tld");
|
||||
assertThat(assertThrows(IllegalArgumentException.class, action::run))
|
||||
@@ -235,7 +237,7 @@ public final class UpdateRegistrarRdapBaseUrlsActionTest {
|
||||
.isEqualTo("There must exist at least one REAL TLD.");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testOnlyTestTlds() {
|
||||
persistResource(Registry.get("tld").asBuilder().setTldType(TldType.TEST).build());
|
||||
assertThat(assertThrows(IllegalArgumentException.class, action::run))
|
||||
@@ -243,7 +245,7 @@ public final class UpdateRegistrarRdapBaseUrlsActionTest {
|
||||
.isEqualTo("There must exist at least one REAL TLD.");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testSecondTldSucceeds() {
|
||||
createTld("secondtld");
|
||||
httpTransport = new TestHttpTransport();
|
||||
@@ -261,7 +263,7 @@ public final class UpdateRegistrarRdapBaseUrlsActionTest {
|
||||
action.run();
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testBothFail() {
|
||||
createTld("secondtld");
|
||||
httpTransport = new TestHttpTransport();
|
||||
@@ -281,7 +283,7 @@ public final class UpdateRegistrarRdapBaseUrlsActionTest {
|
||||
.isEqualTo("Error contacting MosAPI server. Tried TLDs [secondtld, tld]");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestOfyAndSql
|
||||
void testFailureCause_ignoresLoginFailure() {
|
||||
// Login failures aren't particularly interesting so we should log them, but the final
|
||||
// throwable should be some other failure if one existed
|
||||
|
||||
@@ -42,7 +42,7 @@ import google.registry.schema.integration.SqlIntegrationTestSuite.BeforeSuiteTes
|
||||
import google.registry.schema.registrar.RegistrarDaoTest;
|
||||
import google.registry.schema.replay.SqlReplayCheckpointTest;
|
||||
import google.registry.schema.server.LockDaoTest;
|
||||
import google.registry.schema.tld.PremiumListDaoTest;
|
||||
import google.registry.schema.tld.PremiumListSqlDaoTest;
|
||||
import google.registry.testing.AppEngineExtension;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
@@ -92,7 +92,7 @@ import org.junit.runner.RunWith;
|
||||
KmsSecretRevisionSqlDaoTest.class,
|
||||
LockDaoTest.class,
|
||||
PollMessageTest.class,
|
||||
PremiumListDaoTest.class,
|
||||
PremiumListSqlDaoTest.class,
|
||||
RdeRevisionTest.class,
|
||||
RegistrarDaoTest.class,
|
||||
RegistryTest.class,
|
||||
|
||||
@@ -18,30 +18,30 @@ import static com.google.common.truth.Truth.assertThat;
|
||||
import static com.google.common.truth.Truth8.assertThat;
|
||||
import static google.registry.model.common.EntityGroupRoot.getCrossTldKey;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm;
|
||||
import static google.registry.testing.DatabaseHelper.createTld;
|
||||
import static google.registry.persistence.transaction.TransactionManagerUtil.transactIfJpaTm;
|
||||
import static google.registry.testing.DatabaseHelper.newRegistry;
|
||||
import static google.registry.testing.DatabaseHelper.persistResource;
|
||||
import static org.joda.money.CurrencyUnit.JPY;
|
||||
import static org.joda.money.CurrencyUnit.USD;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.joda.time.Duration.standardDays;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.googlecode.objectify.Key;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.testing.AppEngineExtension;
|
||||
import google.registry.testing.FakeClock;
|
||||
import google.registry.testing.TestCacheExtension;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Optional;
|
||||
import org.joda.money.CurrencyUnit;
|
||||
import org.joda.money.Money;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
||||
|
||||
/** Unit tests for {@link PremiumListDao}. */
|
||||
public class PremiumListDaoTest {
|
||||
/** Unit tests for {@link PremiumListSqlDao}. */
|
||||
public class PremiumListSqlDaoTest {
|
||||
|
||||
private final FakeClock fakeClock = new FakeClock();
|
||||
|
||||
@@ -53,6 +53,14 @@ public class PremiumListDaoTest {
|
||||
.withClock(fakeClock)
|
||||
.build();
|
||||
|
||||
// Set long persist times on caches so they can be tested (cache times default to 0 in tests).
|
||||
@RegisterExtension
|
||||
public final TestCacheExtension testCacheExtension =
|
||||
new TestCacheExtension.Builder()
|
||||
.withPremiumListsCache(standardDays(1))
|
||||
.withPremiumListEntriesCache(standardDays(1))
|
||||
.build();
|
||||
|
||||
private ImmutableMap<String, BigDecimal> testPrices;
|
||||
|
||||
private PremiumList testList;
|
||||
@@ -78,11 +86,12 @@ public class PremiumListDaoTest {
|
||||
|
||||
@Test
|
||||
void saveNew_worksSuccessfully() {
|
||||
PremiumListDao.saveNew(testList);
|
||||
PremiumListSqlDao.save(testList);
|
||||
jpaTm()
|
||||
.transact(
|
||||
() -> {
|
||||
Optional<PremiumList> persistedListOpt = PremiumListDao.getLatestRevision("testname");
|
||||
Optional<PremiumList> persistedListOpt =
|
||||
PremiumListSqlDao.getLatestRevision("testname");
|
||||
assertThat(persistedListOpt).isPresent();
|
||||
PremiumList persistedList = persistedListOpt.get();
|
||||
assertThat(persistedList.getLabelsToPrices()).containsExactlyEntriesIn(testPrices);
|
||||
@@ -92,17 +101,17 @@ public class PremiumListDaoTest {
|
||||
|
||||
@Test
|
||||
void update_worksSuccessfully() {
|
||||
PremiumListDao.saveNew(testList);
|
||||
Optional<PremiumList> persistedList = PremiumListDao.getLatestRevision("testname");
|
||||
PremiumListSqlDao.save(testList);
|
||||
Optional<PremiumList> persistedList = PremiumListSqlDao.getLatestRevision("testname");
|
||||
assertThat(persistedList).isPresent();
|
||||
long firstRevisionId = persistedList.get().getRevisionId();
|
||||
PremiumListDao.update(
|
||||
PremiumListSqlDao.save(
|
||||
new PremiumList.Builder()
|
||||
.setName("testname")
|
||||
.setCurrency(USD)
|
||||
.setLabelsToPrices(
|
||||
ImmutableMap.of(
|
||||
"update",
|
||||
"save",
|
||||
BigDecimal.valueOf(55343.12),
|
||||
"new",
|
||||
BigDecimal.valueOf(0.01),
|
||||
@@ -113,65 +122,46 @@ public class PremiumListDaoTest {
|
||||
jpaTm()
|
||||
.transact(
|
||||
() -> {
|
||||
Optional<PremiumList> updatedListOpt = PremiumListDao.getLatestRevision("testname");
|
||||
assertThat(updatedListOpt).isPresent();
|
||||
PremiumList updatedList = updatedListOpt.get();
|
||||
assertThat(updatedList.getLabelsToPrices())
|
||||
Optional<PremiumList> savedListOpt = PremiumListSqlDao.getLatestRevision("testname");
|
||||
assertThat(savedListOpt).isPresent();
|
||||
PremiumList savedList = savedListOpt.get();
|
||||
assertThat(savedList.getLabelsToPrices())
|
||||
.containsExactlyEntriesIn(
|
||||
ImmutableMap.of(
|
||||
"update",
|
||||
"save",
|
||||
BigDecimal.valueOf(55343.12),
|
||||
"new",
|
||||
BigDecimal.valueOf(0.01),
|
||||
"silver",
|
||||
BigDecimal.valueOf(30.03)));
|
||||
assertThat(updatedList.getCreationTime()).isEqualTo(fakeClock.nowUtc());
|
||||
assertThat(updatedList.getRevisionId()).isGreaterThan(firstRevisionId);
|
||||
assertThat(updatedList.getCreationTime()).isEqualTo(fakeClock.nowUtc());
|
||||
assertThat(savedList.getCreationTime()).isEqualTo(fakeClock.nowUtc());
|
||||
assertThat(savedList.getRevisionId()).isGreaterThan(firstRevisionId);
|
||||
assertThat(savedList.getCreationTime()).isEqualTo(fakeClock.nowUtc());
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void saveNew_throwsWhenPremiumListAlreadyExists() {
|
||||
PremiumListDao.saveNew(testList);
|
||||
IllegalArgumentException thrown =
|
||||
assertThrows(IllegalArgumentException.class, () -> PremiumListDao.saveNew(testList));
|
||||
assertThat(thrown).hasMessageThat().isEqualTo("Premium list 'testname' already exists");
|
||||
}
|
||||
|
||||
// TODO(b/147246613): Un-ignore this.
|
||||
@Test
|
||||
@Disabled
|
||||
void update_throwsWhenListDoesntExist() {
|
||||
IllegalArgumentException thrown =
|
||||
assertThrows(IllegalArgumentException.class, () -> PremiumListDao.update(testList));
|
||||
assertThat(thrown)
|
||||
.hasMessageThat()
|
||||
.isEqualTo("Can't update non-existent premium list 'testname'");
|
||||
}
|
||||
|
||||
@Test
|
||||
void checkExists_worksSuccessfully() {
|
||||
assertThat(PremiumListDao.checkExists("testname")).isFalse();
|
||||
PremiumListDao.saveNew(testList);
|
||||
assertThat(PremiumListDao.checkExists("testname")).isTrue();
|
||||
assertThat(PremiumListSqlDao.getLatestRevision("testname")).isEmpty();
|
||||
PremiumListSqlDao.save(testList);
|
||||
assertThat(PremiumListSqlDao.getLatestRevision("testname")).isPresent();
|
||||
}
|
||||
|
||||
@Test
|
||||
void getLatestRevision_returnsEmptyForNonexistentList() {
|
||||
assertThat(PremiumListDao.getLatestRevision("nonexistentlist")).isEmpty();
|
||||
assertThat(PremiumListSqlDao.getLatestRevision("nonexistentlist")).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void getLatestRevision_worksSuccessfully() {
|
||||
PremiumListDao.saveNew(
|
||||
PremiumListSqlDao.save(
|
||||
new PremiumList.Builder()
|
||||
.setName("list1")
|
||||
.setCurrency(JPY)
|
||||
.setLabelsToPrices(ImmutableMap.of("wrong", BigDecimal.valueOf(1000.50)))
|
||||
.setCreationTime(fakeClock.nowUtc())
|
||||
.build());
|
||||
PremiumListDao.update(
|
||||
PremiumListSqlDao.save(
|
||||
new PremiumList.Builder()
|
||||
.setName("list1")
|
||||
.setCurrency(JPY)
|
||||
@@ -181,7 +171,7 @@ public class PremiumListDaoTest {
|
||||
jpaTm()
|
||||
.transact(
|
||||
() -> {
|
||||
Optional<PremiumList> persistedList = PremiumListDao.getLatestRevision("list1");
|
||||
Optional<PremiumList> persistedList = PremiumListSqlDao.getLatestRevision("list1");
|
||||
assertThat(persistedList).isPresent();
|
||||
assertThat(persistedList.get().getName()).isEqualTo("list1");
|
||||
assertThat(persistedList.get().getCurrency()).isEqualTo(JPY);
|
||||
@@ -190,12 +180,6 @@ public class PremiumListDaoTest {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void getPremiumPrice_returnsNoneWhenNoPremiumListConfigured() {
|
||||
persistResource(newRegistry("foobar", "FOOBAR").asBuilder().setPremiumList(null).build());
|
||||
assertThat(PremiumListDao.getPremiumPrice("rich", Registry.get("foobar"))).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void getPremiumPrice_worksSuccessfully() {
|
||||
persistResource(
|
||||
@@ -207,28 +191,18 @@ public class PremiumListDaoTest {
|
||||
google.registry.model.registry.label.PremiumList.class,
|
||||
"premlist"))
|
||||
.build());
|
||||
PremiumListDao.saveNew(
|
||||
PremiumListSqlDao.save(
|
||||
new PremiumList.Builder()
|
||||
.setName("premlist")
|
||||
.setCurrency(USD)
|
||||
.setLabelsToPrices(testPrices)
|
||||
.setCreationTime(fakeClock.nowUtc())
|
||||
.build());
|
||||
assertThat(PremiumListDao.getPremiumPrice("silver", Registry.get("foobar")))
|
||||
assertThat(PremiumListSqlDao.getPremiumPrice("premlist", "silver"))
|
||||
.hasValue(Money.of(USD, 10.23));
|
||||
assertThat(PremiumListDao.getPremiumPrice("gold", Registry.get("foobar")))
|
||||
assertThat(PremiumListSqlDao.getPremiumPrice("premlist", "gold"))
|
||||
.hasValue(Money.of(USD, 1305.47));
|
||||
assertThat(PremiumListDao.getPremiumPrice("zirconium", Registry.get("foobar"))).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGetPremiumPrice_throwsWhenPremiumListCantBeLoaded() {
|
||||
createTld("tld");
|
||||
IllegalStateException thrown =
|
||||
assertThrows(
|
||||
IllegalStateException.class,
|
||||
() -> PremiumListDao.getPremiumPrice("foobar", Registry.get("tld")));
|
||||
assertThat(thrown).hasMessageThat().isEqualTo("Could not load premium list 'tld'");
|
||||
assertThat(PremiumListSqlDao.getPremiumPrice("premlist", "zirconium")).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -242,7 +216,7 @@ public class PremiumListDaoTest {
|
||||
google.registry.model.registry.label.PremiumList.class,
|
||||
"premlist"))
|
||||
.build());
|
||||
PremiumListDao.saveNew(
|
||||
PremiumListSqlDao.save(
|
||||
new PremiumList.Builder()
|
||||
.setName("premlist")
|
||||
.setCurrency(JPY)
|
||||
@@ -256,14 +230,22 @@ public class PremiumListDaoTest {
|
||||
BigDecimal.valueOf(15000)))
|
||||
.setCreationTime(fakeClock.nowUtc())
|
||||
.build());
|
||||
assertThat(PremiumListDao.getPremiumPrice("silver", Registry.get("foobar")))
|
||||
.hasValue(moneyOf(JPY, 10));
|
||||
assertThat(PremiumListDao.getPremiumPrice("gold", Registry.get("foobar")))
|
||||
.hasValue(moneyOf(JPY, 1000));
|
||||
assertThat(PremiumListDao.getPremiumPrice("palladium", Registry.get("foobar")))
|
||||
assertThat(PremiumListSqlDao.getPremiumPrice("premlist", "silver")).hasValue(moneyOf(JPY, 10));
|
||||
assertThat(PremiumListSqlDao.getPremiumPrice("premlist", "gold")).hasValue(moneyOf(JPY, 1000));
|
||||
assertThat(PremiumListSqlDao.getPremiumPrice("premlist", "palladium"))
|
||||
.hasValue(moneyOf(JPY, 15000));
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_savePremiumList_clearsCache() {
|
||||
assertThat(PremiumListSqlDao.premiumListCache.getIfPresent("testname")).isNull();
|
||||
PremiumListSqlDao.save(testList);
|
||||
PremiumList pl = PremiumListSqlDao.getLatestRevision("testname").get();
|
||||
assertThat(PremiumListSqlDao.premiumListCache.getIfPresent("testname").get()).isEqualTo(pl);
|
||||
transactIfJpaTm(() -> PremiumListSqlDao.save("testname", ImmutableList.of("test,USD 1")));
|
||||
assertThat(PremiumListSqlDao.premiumListCache.getIfPresent("testname")).isNull();
|
||||
}
|
||||
|
||||
private static Money moneyOf(CurrencyUnit unit, double amount) {
|
||||
return Money.of(unit, BigDecimal.valueOf(amount).setScale(unit.getDecimalPlaces()));
|
||||
}
|
||||
@@ -18,6 +18,7 @@ import static com.google.common.truth.Truth.assertThat;
|
||||
import static google.registry.schema.tld.PremiumListUtils.parseToPremiumList;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.testing.AppEngineExtension;
|
||||
import java.math.BigDecimal;
|
||||
@@ -34,7 +35,8 @@ class PremiumListUtilsTest {
|
||||
@Test
|
||||
void parseInputToPremiumList_works() {
|
||||
PremiumList premiumList =
|
||||
parseToPremiumList("testlist", "foo,USD 99.50\n" + "bar,USD 30\n" + "baz,USD 10\n");
|
||||
parseToPremiumList(
|
||||
"testlist", ImmutableList.of("foo,USD 99.50", "bar,USD 30", "baz,USD 10"));
|
||||
assertThat(premiumList.getName()).isEqualTo("testlist");
|
||||
assertThat(premiumList.getLabelsToPrices())
|
||||
.containsExactly("foo", twoDigits(99.50), "bar", twoDigits(30), "baz", twoDigits(10));
|
||||
@@ -47,7 +49,7 @@ class PremiumListUtilsTest {
|
||||
IllegalArgumentException.class,
|
||||
() ->
|
||||
parseToPremiumList(
|
||||
"testlist", "foo,USD 99.50\n" + "bar,USD 30\n" + "baz,JPY 990\n"));
|
||||
"testlist", ImmutableList.of("foo,USD 99.50", "bar,USD 30", "baz,JPY 990")));
|
||||
assertThat(thrown)
|
||||
.hasMessageThat()
|
||||
.isEqualTo("The Cloud SQL schema requires exactly one currency, but got: [JPY, USD]");
|
||||
|
||||
@@ -32,7 +32,9 @@ import static google.registry.model.ImmutableObjectSubject.immutableObjectCorres
|
||||
import static google.registry.model.ResourceTransferUtils.createTransferResponse;
|
||||
import static google.registry.model.ofy.ObjectifyService.ofy;
|
||||
import static google.registry.model.registry.Registry.TldState.GENERAL_AVAILABILITY;
|
||||
import static google.registry.model.registry.label.PremiumListUtils.parentPremiumListEntriesOnRevision;
|
||||
import static google.registry.model.registry.label.PremiumListDatastoreDao.parentPremiumListEntriesOnRevision;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.jpaTm;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.ofyTm;
|
||||
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
|
||||
import static google.registry.persistence.transaction.TransactionManagerUtil.ofyTmOrDoNothing;
|
||||
import static google.registry.persistence.transaction.TransactionManagerUtil.transactIfJpaTm;
|
||||
@@ -57,6 +59,7 @@ import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.ImmutableSortedMap;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Streams;
|
||||
import com.google.common.net.InetAddresses;
|
||||
import com.googlecode.objectify.Key;
|
||||
import com.googlecode.objectify.cmd.Saver;
|
||||
@@ -100,6 +103,7 @@ import google.registry.model.registry.Registry.TldType;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.model.registry.label.PremiumList.PremiumListEntry;
|
||||
import google.registry.model.registry.label.PremiumList.PremiumListRevision;
|
||||
import google.registry.model.registry.label.PremiumListDualDao;
|
||||
import google.registry.model.registry.label.ReservedList;
|
||||
import google.registry.model.reporting.HistoryEntry;
|
||||
import google.registry.model.transfer.ContactTransferData;
|
||||
@@ -108,11 +112,11 @@ import google.registry.model.transfer.TransferData;
|
||||
import google.registry.model.transfer.TransferStatus;
|
||||
import google.registry.persistence.VKey;
|
||||
import google.registry.tmch.LordnTaskUtils;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.Function;
|
||||
import javax.annotation.Nullable;
|
||||
import org.joda.money.CurrencyUnit;
|
||||
import org.joda.money.Money;
|
||||
@@ -387,25 +391,23 @@ public class DatabaseHelper {
|
||||
.build();
|
||||
PremiumListRevision revision = PremiumListRevision.create(premiumList, entries.keySet());
|
||||
|
||||
if (tm().isOfy()) {
|
||||
ImmutableList<Object> premiumLists =
|
||||
ImmutableList.of(
|
||||
premiumList.asBuilder().setRevision(Key.create(revision)).build(), revision);
|
||||
ImmutableSet<PremiumListEntry> entriesOnRevision =
|
||||
parentPremiumListEntriesOnRevision(entries.values(), Key.create(revision));
|
||||
if (alwaysSaveWithBackup) {
|
||||
tm().transact(
|
||||
() -> {
|
||||
tm().putAll(premiumLists);
|
||||
tm().putAll(entriesOnRevision);
|
||||
});
|
||||
} else {
|
||||
tm().putAllWithoutBackup(premiumLists);
|
||||
tm().putAllWithoutBackup(entriesOnRevision);
|
||||
}
|
||||
ImmutableList<Object> premiumListOfyObjects =
|
||||
ImmutableList.of(
|
||||
premiumList.asBuilder().setRevision(Key.create(revision)).build(), revision);
|
||||
ImmutableSet<PremiumListEntry> entriesOnRevision =
|
||||
parentPremiumListEntriesOnRevision(entries.values(), Key.create(revision));
|
||||
if (alwaysSaveWithBackup) {
|
||||
ofyTm()
|
||||
.transact(
|
||||
() -> {
|
||||
ofyTm().putAll(premiumListOfyObjects);
|
||||
ofyTm().putAll(entriesOnRevision);
|
||||
});
|
||||
} else {
|
||||
tm().transact(() -> tm().insert(premiumList));
|
||||
ofyTm().putAllWithoutBackup(premiumListOfyObjects);
|
||||
ofyTm().putAllWithoutBackup(entriesOnRevision);
|
||||
}
|
||||
jpaTm().transact(() -> jpaTm().insert(premiumList));
|
||||
maybeAdvanceClock();
|
||||
// The above premiumList is in the session cache and it is different from the corresponding
|
||||
// entity stored in Datastore because it has some @Ignore fields set dedicated for SQL. This
|
||||
@@ -807,7 +809,7 @@ public class DatabaseHelper {
|
||||
|
||||
/** Assert that the expected billing events are exactly the ones found in the fake Datastore. */
|
||||
public static void assertBillingEvents(BillingEvent... expected) {
|
||||
assertBillingEventsEqual(getBillingEvents(), Arrays.asList(expected));
|
||||
assertBillingEventsEqual(getBillingEvents(), asList(expected));
|
||||
}
|
||||
|
||||
/** Assert that the expected billing events set is exactly the one found in the fake Datastore. */
|
||||
@@ -820,7 +822,7 @@ public class DatabaseHelper {
|
||||
*/
|
||||
public static void assertBillingEventsForResource(
|
||||
EppResource resource, BillingEvent... expected) {
|
||||
assertBillingEventsEqual(getBillingEvents(resource), Arrays.asList(expected));
|
||||
assertBillingEventsEqual(getBillingEvents(resource), asList(expected));
|
||||
}
|
||||
|
||||
/** Assert that there are no billing events. */
|
||||
@@ -851,15 +853,15 @@ public class DatabaseHelper {
|
||||
}
|
||||
|
||||
public static void assertPollMessages(String clientId, PollMessage... expected) {
|
||||
assertPollMessagesEqual(getPollMessages(clientId), Arrays.asList(expected));
|
||||
assertPollMessagesEqual(getPollMessages(clientId), asList(expected));
|
||||
}
|
||||
|
||||
public static void assertPollMessages(PollMessage... expected) {
|
||||
assertPollMessagesEqual(getPollMessages(), Arrays.asList(expected));
|
||||
assertPollMessagesEqual(getPollMessages(), asList(expected));
|
||||
}
|
||||
|
||||
public static void assertPollMessagesForResource(DomainContent domain, PollMessage... expected) {
|
||||
assertPollMessagesEqual(getPollMessages(domain), Arrays.asList(expected));
|
||||
assertPollMessagesEqual(getPollMessages(domain), asList(expected));
|
||||
}
|
||||
|
||||
public static ImmutableList<PollMessage> getPollMessages() {
|
||||
@@ -1232,19 +1234,8 @@ public class DatabaseHelper {
|
||||
/** Returns the entire map of {@link PremiumListEntry}s for the given {@link PremiumList}. */
|
||||
public static ImmutableMap<String, PremiumListEntry> loadPremiumListEntries(
|
||||
PremiumList premiumList) {
|
||||
try {
|
||||
ImmutableMap.Builder<String, PremiumListEntry> entriesMap = new ImmutableMap.Builder<>();
|
||||
if (premiumList.getRevisionKey() != null) {
|
||||
for (PremiumListEntry entry :
|
||||
ofy().load().type(PremiumListEntry.class).ancestor(premiumList.getRevisionKey())) {
|
||||
entriesMap.put(entry.getLabel(), entry);
|
||||
}
|
||||
}
|
||||
return entriesMap.build();
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(
|
||||
"Could not retrieve entries for premium list " + premiumList.getName(), e);
|
||||
}
|
||||
return Streams.stream(PremiumListDualDao.loadAllPremiumListEntries(premiumList.getName()))
|
||||
.collect(toImmutableMap(PremiumListEntry::getLabel, Function.identity()));
|
||||
}
|
||||
|
||||
/** Loads and returns the registrar with the given client ID, or throws IAE if not present. */
|
||||
|
||||
@@ -18,7 +18,8 @@ import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Maps;
|
||||
import google.registry.model.EppResource;
|
||||
import google.registry.model.index.ForeignKeyIndex;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.model.registry.label.PremiumListDatastoreDao;
|
||||
import google.registry.schema.tld.PremiumListSqlDao;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import org.joda.time.Duration;
|
||||
@@ -70,15 +71,18 @@ public class TestCacheExtension implements BeforeEachCallback, AfterEachCallback
|
||||
|
||||
public Builder withPremiumListsCache(Duration expiry) {
|
||||
cacheHandlerMap.put(
|
||||
"PremiumList.cachePremiumLists",
|
||||
new TestCacheHandler(PremiumList::setPremiumListCacheForTest, expiry));
|
||||
"PremiumListSqlDao.premiumListCache",
|
||||
new TestCacheHandler(PremiumListSqlDao::setPremiumListCacheForTest, expiry));
|
||||
cacheHandlerMap.put(
|
||||
"PremiumListDatastoreDao.premiumListCache",
|
||||
new TestCacheHandler(PremiumListDatastoreDao::setPremiumListCacheForTest, expiry));
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder withPremiumListEntriesCache(Duration expiry) {
|
||||
cacheHandlerMap.put(
|
||||
"PremiumList.cachePremiumListEntries",
|
||||
new TestCacheHandler(PremiumList::setPremiumListEntriesCacheForTest, expiry));
|
||||
new TestCacheHandler(PremiumListDatastoreDao::setPremiumListEntriesCacheForTest, expiry));
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import com.beust.jcommander.ParameterException;
|
||||
import google.registry.model.registry.Registry;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
import google.registry.model.registry.label.PremiumListDualDao;
|
||||
import google.registry.testing.DeterministicStringGenerator;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -101,7 +101,7 @@ class CreateDomainCommandTest extends EppToolCommandTestCase<CreateDomainCommand
|
||||
persistResource(
|
||||
Registry.get("baar")
|
||||
.asBuilder()
|
||||
.setPremiumList(PremiumList.getUncached("baar").get())
|
||||
.setPremiumList(PremiumListDualDao.getLatestRevision("baar").get())
|
||||
.build());
|
||||
runCommandForced(
|
||||
"--client=NewRegistrar",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user