Split XJC code into separate eppbindings subproject (#3244)

The generated XML / XJC code pretty much never changes but because
everything is lumped together in one compile task, we had to recompile
this every time anything else in core/ changes. It's technically
possible to use a separate source set for the XJC code while having it
remain in core/, but splitting it into a separate subproject gives
better separation and makes the caching / dependency graph clearer.

Pretty much all, except for the caching configuration, of the new
xjc/build.gradle is taken from the previous core/build.gradle.
This commit is contained in:
gbrodman
2026-10-13 17:57:07 +00:00
committed by GitHub
parent d1e895c46b
commit c9aba86833
116 changed files with 510 additions and 368 deletions
+5 -90
View File
@@ -21,9 +21,6 @@ plugins {
id 'maven-publish'
}
// Path to code generated by ad hoc tasks in this project. A separate path is
// used for easy inspection.
def generatedDir = "${project.buildDir}/generated/sources/custom/java/main"
def resourcesDir = "${project.buildDir}/resources/main"
def screenshotsDir = "${project.buildDir}/screenshots"
def screenshotsForGoldensDir = "${project.buildDir}/screenshots_for_goldens"
@@ -56,14 +53,6 @@ def dockerIncompatibleTestPatterns = [
def fragileTestPatterns = dockerIncompatibleTestPatterns
sourceSets {
main {
java {
srcDirs += generatedDir
}
resources {
exclude '**/*.xjb'
}
}
nonprod {
java {
compileClasspath += main.output
@@ -75,9 +64,6 @@ sourceSets {
compileClasspath += nonprod.output
runtimeClasspath += nonprod.output
}
resources {
exclude '**/*.xjb', '**/*.xsd'
}
}
}
@@ -86,7 +72,6 @@ processTestResources {
}
configurations {
jaxb
devtool
nonprodImplementation.extendsFrom implementation
@@ -232,15 +217,16 @@ dependencies {
implementation deps['us.fatehi:schemacrawler-postgresql']
implementation deps['xerces:xmlParserAPIs']
implementation deps['org.ogce:xpp3']
// Known issue: nebula-lint misses inherited dependency.
implementation project(':common')
testImplementation project(':testing')
implementation project(':util')
implementation project(':networking')
// Import NomulusPostreSql from ':db' for implementation but exclude dependencies.
implementation project(path: ':db', configuration: 'implementationApi')
nonprodRuntimeOnly project(':db')
testRuntimeOnly project(':db')
implementation project(':eppbindings')
implementation project(':networking')
// Known issue: nebula-lint misses inherited dependency.
testImplementation project(':testing')
implementation project(':util')
annotationProcessor deps['com.google.auto.service:auto-service']
annotationProcessor deps['com.google.auto.value:auto-value']
@@ -285,82 +271,11 @@ dependencies {
// dependencies to avoid overriding them accidentally.
implementation deps['com.google.oauth-client:google-oauth-client-java6']
// Dependencies needed for jaxb compilation.
jaxb deps['jakarta.xml.bind:jakarta.xml.bind-api']
jaxb deps['org.glassfish.jaxb:jaxb-runtime']
jaxb deps['org.glassfish.jaxb:jaxb-xjc']
// Flyway classes needed to generate the golden file.
implementation deps['org.flywaydb:flyway-core']
implementation deps['org.flywaydb:flyway-database-postgresql']
}
task jaxbToJava {
def xsdFilesDir = "${javaDir}/google/registry/xml/xsd"
def bindingsFile = "${javaDir}/google/registry/xjc/bindings.xjb"
def pkgInfoTemplate = "${javaDir}/google/registry/xjc/package-info.java.in"
def pkgInfoMap = "${javaDir}/google/registry/xjc/package-info.map"
def outputDir = "${generatedDir}/google/registry/xjc"
inputs.dir xsdFilesDir
inputs.files bindingsFile, pkgInfoTemplate, pkgInfoMap
outputs.dir outputDir
doLast {
file(generatedDir).mkdirs()
// Temp dir to hold schema and bindings files. Files must be in the same
// directory because the bindings (.xjb) file does not declare relative
// paths to schema (.xsd) files.
def xjcTempSourceDir = file("${temporaryDir}/xjc")
xjcTempSourceDir.mkdirs()
ant.copy(
todir: "${xjcTempSourceDir}",
overwrite: true) {
fileSet(
dir: xsdFilesDir,
includes: '**.xsd')
}
ant.copy(
todir: "${xjcTempSourceDir}",
overwrite: true,
file: bindingsFile)
ant.taskdef(
name: 'xjc',
classname: 'com.sun.tools.xjc.XJCTask',
classpath: configurations.jaxb.asPath)
ant.xjc(
destdir: "${generatedDir}",
binding: "${xjcTempSourceDir}/bindings.xjb",
removeOldOutput: 'yes', extension: 'true') {
fileTree(
dir: new File("$xjcTempSourceDir"),
include: ['**/*.xsd'])
.addToAntBuilder(ant, 'schema', FileCollection.AntType.FileSet)
// -npa: do not generate package-info.java files. They will be generated
// below.
arg(line: '-npa -quiet -extension')
}
new File(pkgInfoMap).eachLine { line ->
def (packageName, namespace) = line.split()
ant.copy(
tofile: "${outputDir}/${packageName}/package-info.java",
overwrite: true,
file: "${pkgInfoTemplate}") {
filterSet() {
filter(token: 'PACKAGE', value: packageName)
filter(token: 'NAMESPACE', value: namespace)
}
}
}
execInBash(
"find . -name *.java -exec sed -i -e '/" + /\* <p>$/ + "/d' {} +",
generatedDir)
}
}
compileJava.dependsOn jaxbToJava
task findGoldenImages(type: JavaExec) {
classpath = sourceSets.test.runtimeClasspath
mainClass = 'google.registry.webdriver.GoldenImageFinder'
+104 -122
View File
@@ -34,45 +34,44 @@ com.google.api-client:google-api-client-servlet:2.7.0=deploy_jar,nonprodRuntimeC
com.google.api-client:google-api-client-servlet:2.9.1=compileClasspath,nonprodCompileClasspath,testCompileClasspath
com.google.api-client:google-api-client:2.9.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.api-client:google-api-client:2.9.1=compileClasspath,nonprodCompileClasspath,testCompileClasspath
com.google.api.grpc:gapic-google-cloud-storage-v2:2.70.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.api.grpc:gapic-google-cloud-storage-v2:2.72.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.api.grpc:gapic-google-cloud-storage-v2:2.75.0=testCompileClasspath
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:3.30.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:3.30.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:3.30.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-bigtable-v2:2.80.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.152.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.119.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.119.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.119.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1:3.32.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta1:3.32.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-bigquerystorage-v1beta2:3.32.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-bigtable-v2:2.82.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-pubsub-v1:1.154.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-spanner-admin-database-v1:6.121.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-spanner-admin-instance-v1:6.121.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-spanner-v1:6.121.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-storage-control-v2:2.49.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-storage-v2:2.70.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-storage-v2:2.72.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-cloud-storage-v2:2.75.0=testCompileClasspath
com.google.api.grpc:grpc-google-common-protos:2.73.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:3.30.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha:3.30.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:3.30.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:3.30.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta:3.30.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.80.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.80.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:grpc-google-common-protos:2.75.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1:3.32.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1alpha:3.32.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta1:3.32.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta2:3.32.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-bigquerystorage-v1beta:3.32.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-bigtable-admin-v2:2.82.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-bigtable-v2:2.82.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-compute-v1:1.109.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-datastore-v1:3.2.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-firestore-v1:3.44.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-logging-v2:3.35.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-monitoring-v3:3.95.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.152.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-secretmanager-v1:2.51.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-secretmanager-v1:2.99.0=compileClasspath,nonprodCompileClasspath,testCompileClasspath
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:2.99.0=compileClasspath,nonprodCompileClasspath,testCompileClasspath
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta2:2.51.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta2:2.99.0=compileClasspath,nonprodCompileClasspath,testCompileClasspath
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.119.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.119.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-spanner-v1:6.119.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-datastore-v1:3.4.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-firestore-v1:3.46.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-kms-v1:2.99.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-logging-v2:3.37.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-monitoring-v3:3.97.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-pubsub-v1:1.154.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-secretmanager-v1:2.96.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta1:2.96.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-secretmanager-v1beta2:2.96.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-spanner-admin-database-v1:6.121.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-spanner-admin-instance-v1:6.121.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-spanner-v1:6.121.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-sql-v1:0.1.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-sql-v1beta4:0.1.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-storage-control-v2:2.49.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-storage-v2:2.70.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath
com.google.api.grpc:proto-google-cloud-storage-v2:2.72.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath
com.google.api.grpc:proto-google-cloud-storage-v2:2.75.0=testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-tasks-v2:2.51.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-tasks-v2:2.99.0=compileClasspath,nonprodCompileClasspath,testCompileClasspath
@@ -81,14 +80,14 @@ com.google.api.grpc:proto-google-cloud-tasks-v2beta2:2.99.0=compileClasspath,non
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:0.141.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-cloud-tasks-v2beta3:2.99.0=compileClasspath,nonprodCompileClasspath,testCompileClasspath
com.google.api.grpc:proto-google-common-protos:2.78.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api.grpc:proto-google-iam-v1:1.69.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath
com.google.api.grpc:proto-google-iam-v1:1.70.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath
com.google.api.grpc:proto-google-iam-v1:1.73.0=compileClasspath,nonprodCompileClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api:api-common:2.70.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api:gax-grpc:2.87.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api:gax-httpjson:2.87.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.api:gax:2.87.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.apis:google-api-services-admin-directory:directory_v1-rev20260914-2.0.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.apis:google-api-services-bigquery:v2-rev20260612-2.0.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.apis:google-api-services-bigquery:v2-rev20260731-2.0.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.apis:google-api-services-cloudkms:v1-rev20260917-2.0.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.apis:google-api-services-cloudresourcemanager:v1-rev20250606-2.0.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.apis:google-api-services-dataflow:v1b3-rev20260825-2.0.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
@@ -101,7 +100,7 @@ com.google.apis:google-api-services-iam:v2-rev20250502-2.0.0=compileClasspath,de
com.google.apis:google-api-services-iamcredentials:v1-rev20211203-2.0.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.apis:google-api-services-monitoring:v3-rev20260129-2.0.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.apis:google-api-services-pubsub:v1-rev20220904-2.0.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.apis:google-api-services-sheets:v4-rev20260921-2.0.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.apis:google-api-services-sheets:v4-rev20260930-2.0.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.apis:google-api-services-sqladmin:v1beta4-rev20260722-2.0.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.apis:google-api-services-storage:v1-rev20260524-2.0.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.auth:google-auth-library-credentials:1.54.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
@@ -116,43 +115,43 @@ com.google.auto:auto-common:1.2.2=annotationProcessor,nonprodAnnotationProcessor
com.google.cloud.bigdataoss:gcsio:3.1.16=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud.bigdataoss:util:3.1.16=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud.bigtable:bigtable-client-core-config:1.28.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud.datastore:datastore-v1-proto-client:3.2.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud.opentelemetry:detector-resources-support:0.33.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud.datastore:datastore-v1-proto-client:3.4.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud.opentelemetry:detector-resources-support:0.33.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.cloud.opentelemetry:exporter-metrics:0.33.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud.opentelemetry:shared-resourcemapping:0.33.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.cloud.sql:jdbc-socket-factory-core:1.30.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud.sql:postgres-socket-factory:1.30.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.cloud.sql:schemas:1.30.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-bigquerystorage:3.30.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-bigtable:2.80.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-bigquerystorage:3.32.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-bigtable:2.82.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-compute:1.109.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-core-grpc:2.72.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath
com.google.cloud:google-cloud-core-grpc:2.74.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath
com.google.cloud:google-cloud-core-grpc:2.77.0=testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-core-http:2.72.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-core-http:2.74.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-core-http:2.77.0=testCompileClasspath
com.google.cloud:google-cloud-core:2.72.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath
com.google.cloud:google-cloud-core:2.74.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath
com.google.cloud:google-cloud-core:2.77.0=testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-firestore:3.44.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-logging:3.35.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-monitoring:3.95.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-firestore:3.46.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-kms:2.99.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-logging:3.37.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-monitoring:3.97.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-nio:0.127.24=testRuntimeClasspath
com.google.cloud:google-cloud-nio:0.139.0=testCompileClasspath
com.google.cloud:google-cloud-pubsub:1.152.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-secretmanager:2.51.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-secretmanager:2.99.0=compileClasspath,nonprodCompileClasspath,testCompileClasspath
com.google.cloud:google-cloud-spanner:6.119.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-pubsub:1.154.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-secretmanager:2.96.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-spanner:6.121.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-sql:0.1.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-storage-control:2.49.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-storage:2.70.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-storage:2.72.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-storage:2.75.0=testCompileClasspath
com.google.cloud:google-cloud-tasks:2.51.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.cloud:google-cloud-tasks:2.99.0=compileClasspath,nonprodCompileClasspath,testCompileClasspath
com.google.cloud:grpc-gcp:1.12.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:grpc-gcp:1.14.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:libraries-bom:26.48.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.44.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.cloud:proto-google-cloud-firestore-bundle-v1:3.46.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.code.findbugs:jsr305:3.0.2=annotationProcessor,checkstyle,compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath
com.google.code.gson:gson:2.14.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.crypto.tink:tink:1.16.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.crypto.tink:tink:1.19.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.dagger:dagger-compiler:2.60.1=annotationProcessor,testAnnotationProcessor
com.google.dagger:dagger-spi:2.60.1=annotationProcessor,testAnnotationProcessor
com.google.dagger:dagger:2.60.1=annotationProcessor,compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath
@@ -177,14 +176,11 @@ com.google.guava:guava:33.6.0-jre=annotationProcessor,compileClasspath,deploy_ja
com.google.guava:guava:33.7.1-jre=testRuntimeClasspath
com.google.guava:guava:33.7.2-jre=testCompileClasspath
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava=annotationProcessor,checkstyle,compileClasspath,deploy_jar,nonprodAnnotationProcessor,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath
com.google.http-client:google-http-client-apache-v2:2.1.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.http-client:google-http-client-apache-v2:2.2.0=testCompileClasspath
com.google.http-client:google-http-client-appengine:2.1.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.http-client:google-http-client-appengine:2.2.0=testCompileClasspath
com.google.http-client:google-http-client-apache-v2:2.2.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.http-client:google-http-client-appengine:2.2.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.http-client:google-http-client-gson:2.2.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.http-client:google-http-client-jackson2:2.1.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.google.http-client:google-http-client-jackson2:2.2.0=testCompileClasspath
com.google.http-client:google-http-client-protobuf:2.1.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.http-client:google-http-client-jackson2:2.2.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.http-client:google-http-client-protobuf:2.2.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.http-client:google-http-client:2.2.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.google.j2objc:j2objc-annotations:3.0.0=checkstyle
com.google.j2objc:j2objc-annotations:3.1=annotationProcessor,compileClasspath,deploy_jar,nonprodAnnotationProcessor,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath
@@ -227,11 +223,7 @@ com.squareup:javapoet:1.13.0=annotationProcessor,compileClasspath,deploy_jar,non
com.squareup:kotlinpoet-jvm:1.15.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.squareup:kotlinpoet:1.11.0=annotationProcessor,testAnnotationProcessor
com.squareup:kotlinpoet:1.15.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
com.sun.istack:istack-commons-runtime:4.1.2=deploy_jar,jaxb,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.sun.istack:istack-commons-tools:4.1.2=jaxb
com.sun.xml.bind.external:relaxng-datatype:4.0.9=jaxb
com.sun.xml.bind.external:rngom:4.0.9=jaxb
com.sun.xml.dtd-parser:dtd-parser:1.5.1=jaxb
com.sun.istack:istack-commons-runtime:4.1.2=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.zaxxer:HikariCP:7.0.2=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
com.zaxxer:HikariCP:7.1.0=compileClasspath,nonprodCompileClasspath,testCompileClasspath
commons-beanutils:commons-beanutils:1.10.1=checkstyle
@@ -254,7 +246,7 @@ guru.nidi:graphviz-java:0.18.1=testRuntimeClasspath
info.picocli:picocli:4.7.7=checkstyle
io.apicurio:apicurio-registry-protobuf-schema-utilities:3.0.0.M2=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.envoyproxy.controlplane:api:1.0.49=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.github.classgraph:classgraph:4.8.162=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.github.classgraph:classgraph:4.8.192=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.github.eisop:dataflow-errorprone:3.41.0-eisop1=annotationProcessor,nonprodAnnotationProcessor,testAnnotationProcessor
io.github.java-diff-utils:java-diff-utils:4.12=annotationProcessor,nonprodAnnotationProcessor,testAnnotationProcessor
io.github.java-diff-utils:java-diff-utils:4.17=testRuntimeClasspath
@@ -262,46 +254,46 @@ io.github.ss-bhatt:testcontainers-valkey:1.0.0=testCompileClasspath,testRuntimeC
io.grpc:grpc-alts:1.83.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-api:1.83.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-auth:1.83.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-census:1.81.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-census:1.82.4=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-context:1.83.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-core:1.83.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-googleapis:1.83.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
io.grpc:grpc-grpclb:1.81.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath
io.grpc:grpc-grpclb:1.82.4=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath
io.grpc:grpc-grpclb:1.83.0=testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-inprocess:1.83.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-netty-shaded:1.83.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-netty:1.81.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-opentelemetry:1.81.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath
io.grpc:grpc-netty:1.82.4=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-opentelemetry:1.82.4=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath
io.grpc:grpc-opentelemetry:1.83.0=testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-protobuf-lite:1.83.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
io.grpc:grpc-protobuf:1.83.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-rls:1.81.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath
io.grpc:grpc-rls:1.82.4=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath
io.grpc:grpc-rls:1.83.0=testRuntimeClasspath
io.grpc:grpc-services:1.81.0=compileClasspath,nonprodCompileClasspath,testCompileClasspath
io.grpc:grpc-services:1.82.4=compileClasspath,nonprodCompileClasspath,testCompileClasspath
io.grpc:grpc-services:1.83.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
io.grpc:grpc-stub:1.83.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-testing:1.70.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.grpc:grpc-util:1.81.0=compileClasspath,nonprodCompileClasspath,testCompileClasspath
io.grpc:grpc-util:1.82.4=compileClasspath,nonprodCompileClasspath,testCompileClasspath
io.grpc:grpc-util:1.83.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
io.grpc:grpc-xds:1.81.0=compileClasspath,nonprodCompileClasspath,testCompileClasspath
io.grpc:grpc-xds:1.82.4=compileClasspath,nonprodCompileClasspath,testCompileClasspath
io.grpc:grpc-xds:1.83.0=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
io.netty:netty-buffer:4.2.18.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-codec-base:4.2.18.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-codec-compression:4.2.18.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-codec-http2:4.1.132.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-codec-http:4.2.18.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-codec-marshalling:4.2.18.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-codec-protobuf:4.2.18.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-codec-socks:4.1.132.Final=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
io.netty:netty-codec:4.2.18.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-common:4.2.18.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-handler-proxy:4.1.132.Final=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
io.netty:netty-handler:4.2.18.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-resolver:4.2.18.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-buffer:4.2.19.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-codec-base:4.2.19.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-codec-compression:4.2.19.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-codec-http2:4.1.133.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-codec-http:4.2.19.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-codec-marshalling:4.2.19.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-codec-protobuf:4.2.19.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-codec-socks:4.1.133.Final=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
io.netty:netty-codec:4.2.19.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-common:4.2.19.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-handler-proxy:4.1.133.Final=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
io.netty:netty-handler:4.2.19.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-resolver:4.2.19.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-tcnative-boringssl-static:2.0.52.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-tcnative-classes:2.0.52.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-transport-native-unix-common:4.2.18.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-transport:4.2.18.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-transport-native-unix-common:4.2.19.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.netty:netty-transport:4.2.19.Final=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.opencensus:opencensus-api:0.31.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.opencensus:opencensus-contrib-exemplar-util:0.31.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.opencensus:opencensus-contrib-grpc-metrics:0.31.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
@@ -312,8 +304,7 @@ io.opencensus:opencensus-exporter-metrics-util:0.31.1=compileClasspath,deploy_ja
io.opencensus:opencensus-exporter-stats-stackdriver:0.31.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.opencensus:opencensus-impl-core:0.31.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.opencensus:opencensus-impl:0.31.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.opentelemetry.contrib:opentelemetry-gcp-resources:1.37.0-alpha=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
io.opentelemetry.contrib:opentelemetry-gcp-resources:1.45.0-alpha=testCompileClasspath
io.opentelemetry.contrib:opentelemetry-gcp-resources:1.45.0-alpha=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.opentelemetry.instrumentation:opentelemetry-grpc-1.6:2.1.0-alpha=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-api-incubator:2.1.0-alpha=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:2.1.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
@@ -347,7 +338,6 @@ io.protostuff:protostuff-collectionschema:1.8.0=compileClasspath,deploy_jar,nonp
io.protostuff:protostuff-core:1.8.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
io.protostuff:protostuff-runtime:1.8.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
jakarta-regexp:jakarta-regexp:1.4=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
jakarta.activation:jakarta.activation-api:2.1.4=jaxb
jakarta.activation:jakarta.activation-api:2.2.0-M1=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
jakarta.activation:jakarta.activation-api:2.2.0-M2=compileClasspath,nonprodCompileClasspath,testCompileClasspath
jakarta.inject:jakarta.inject-api:2.0.1=annotationProcessor,compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath
@@ -357,7 +347,6 @@ jakarta.servlet:jakarta.servlet-api:6.0.0=testCompileClasspath,testRuntimeClassp
jakarta.servlet:jakarta.servlet-api:6.2.0-M2=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath
jakarta.transaction:jakarta.transaction-api:2.0.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
jakarta.xml.bind:jakarta.xml.bind-api:4.0.4=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
jakarta.xml.bind:jakarta.xml.bind-api:4.0.5=jaxb
jakarta.xml.bind:jakarta.xml.bind-api:4.1.0-M1=compileClasspath,nonprodCompileClasspath,testCompileClasspath
javax.annotation:javax.annotation-api:1.3.2=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
javax.inject:javax.inject:1=annotationProcessor,compileClasspath,deploy_jar,nonprodAnnotationProcessor,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testAnnotationProcessor,testCompileClasspath,testRuntimeClasspath
@@ -381,25 +370,25 @@ org.apache.arrow:arrow-format:17.0.0=compileClasspath,deploy_jar,nonprodCompileC
org.apache.arrow:arrow-memory-core:17.0.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.arrow:arrow-vector:17.0.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.avro:avro:1.12.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-model-fn-execution:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-model-job-management:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-model-pipeline:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-model-fn-execution:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-model-job-management:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-model-pipeline:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-runners-core-construction-java:2.54.0=testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-runners-core-java:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-runners-direct-java:2.76.0=testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-runners-java-fn-execution:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-core:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-expansion-service:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-extensions-arrow:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-extensions-avro:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-extensions-protobuf:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-runners-core-java:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-runners-direct-java:2.77.0=testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-runners-google-cloud-dataflow-java:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-runners-java-fn-execution:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-core:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-expansion-service:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-extensions-arrow:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-extensions-avro:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-extensions-protobuf:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-fn-execution:2.54.0=testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-harness:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-io-components:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-transform-service-launcher:2.76.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-harness:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-io-components:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-sdks-java-transform-service-launcher:2.77.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-vendor-grpc-1_60_1:0.1=testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-vendor-grpc-1_69_0:0.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.apache.beam:beam-vendor-guava-32_1_2-jre:0.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
@@ -450,7 +439,6 @@ org.codehaus.plexus:plexus-container-default:2.1.0=checkstyle
org.codehaus.plexus:plexus-utils:3.3.0=checkstyle
org.codehaus.woodstox:stax2-api:4.2.2=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.conscrypt:conscrypt-openjdk-uber:2.6.2=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.eclipse.angus:angus-activation:2.0.3=jaxb
org.eclipse.angus:angus-activation:2.1.0-M1=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
org.eclipse.angus:jakarta.mail:2.1.0-M1=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
org.eclipse.jetty.ee10:jetty-ee10-servlet:12.1.14=testCompileClasspath,testRuntimeClasspath
@@ -463,19 +451,13 @@ org.eclipse.jetty:jetty-server:12.1.14=testCompileClasspath,testRuntimeClasspath
org.eclipse.jetty:jetty-session:12.1.14=testCompileClasspath,testRuntimeClasspath
org.eclipse.jetty:jetty-util:12.1.14=testCompileClasspath,testRuntimeClasspath
org.eclipse.jetty:jetty-xml:12.1.14=testCompileClasspath,testRuntimeClasspath
org.flywaydb:flyway-core:13.9.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.flywaydb:flyway-database-cockroachdb:13.9.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.flywaydb:flyway-database-postgresql:13.9.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.flywaydb:flyway-core:13.10.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.flywaydb:flyway-database-cockroachdb:13.10.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.flywaydb:flyway-database-postgresql:13.10.0=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.freemarker:freemarker:2.3.35=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.glassfish.jaxb:codemodel:4.0.9=jaxb
org.glassfish.jaxb:jaxb-core:4.0.6=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
org.glassfish.jaxb:jaxb-core:4.0.9=jaxb
org.glassfish.jaxb:jaxb-runtime:4.0.6=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
org.glassfish.jaxb:jaxb-runtime:4.0.9=jaxb
org.glassfish.jaxb:jaxb-xjc:4.0.9=jaxb
org.glassfish.jaxb:txw2:4.0.6=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
org.glassfish.jaxb:txw2:4.0.9=jaxb
org.glassfish.jaxb:xsom:4.0.9=jaxb
org.hamcrest:hamcrest-core:1.3=nonprodCompileClasspath,nonprodRuntimeClasspath
org.hamcrest:hamcrest-core:3.0=testCompileClasspath,testRuntimeClasspath
org.hamcrest:hamcrest-library:3.0=testCompileClasspath,testRuntimeClasspath
@@ -511,7 +493,7 @@ org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.0.1=deploy_jar,nonprodRun
org.jetbrains.kotlinx:kotlinx-serialization-core:1.0.1=deploy_jar,nonprodRuntimeClasspath,runtimeClasspath,testRuntimeClasspath
org.jetbrains:annotations:13.0=annotationProcessor,compileClasspath,deploy_jar,runtimeClasspath,testAnnotationProcessor
org.jetbrains:annotations:17.0.0=nonprodCompileClasspath,nonprodRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jline:jline:4.4.6=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jline:jline:4.4.7=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.joda:joda-money:2.0.3=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.json:json:20260814=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jsoup:jsoup:1.23.2=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
@@ -545,7 +527,7 @@ org.ow2.asm:asm-util:9.10.1=compileClasspath,deploy_jar,nonprodCompileClasspath,
org.ow2.asm:asm:9.10.1=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.ow2.asm:asm:9.9=jacocoAnt
org.pcollections:pcollections:4.0.1=annotationProcessor,nonprodAnnotationProcessor,testAnnotationProcessor
org.postgresql:postgresql:42.7.13=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.postgresql:postgresql:42.7.14=compileClasspath,deploy_jar,nonprodCompileClasspath,nonprodRuntimeClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
org.reflections:reflections:0.10.2=checkstyle
org.rnorth.duct-tape:duct-tape:1.0.8=nonprodCompileClasspath,nonprodRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.seleniumhq.selenium:selenium-api:4.50.0=testCompileClasspath,testRuntimeClasspath
@@ -1,7 +0,0 @@
You may be wondering where all the source code is for XML classes
like XjcEpp.java, XjcRdeDeposit.java, etc. These files are magically
generated by JAXB from the XML schemas (.xsd) files.
Run the command `ant gensrc` and they should be available under:
build/gensrc/google/registry/xjc/
@@ -1,67 +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.xjc;
import google.registry.xml.XmlException;
import jakarta.xml.bind.JAXBElement;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlTransient;
import java.io.OutputStream;
import java.io.StringWriter;
import java.nio.charset.Charset;
import javax.xml.namespace.QName;
/** The superclass for XML classes generated by JAXB that provides marshalling and validation. */
@XmlTransient
public abstract class XjcObject {
/**
* Validates and streams {@code this} as formatted XML bytes with XML declaration.
*
* <p>This object must be annotated with {@link jakarta.xml.bind.annotation.XmlRootElement},
* otherwise you should call {@link #toString()}. This method will verify that your object
* strictly conforms to the schema defined in {@link XjcXmlTransformer}. Because the output is
* streamed, {@link XmlException} will most likely be thrown <i>after</i> output has been written.
*
* @param out byte-oriented output for writing XML. This method won't close it.
* @param encoding should almost always be set to {@code "UTF-8"}.
*/
public void marshal(OutputStream out, Charset encoding) throws XmlException {
XjcXmlTransformer.marshalStrict(this, out, encoding);
}
/**
* Turns object into a formatted XML string <i>by any means necessary</i>.
*
* <p>No validation is performed and the XML declaration is omitted. If the object can't be
* marshalled, a string describing the error is returned.
*
* @see #marshal
*/
@Override
public String toString() {
try {
StringWriter out = new StringWriter();
XjcXmlTransformer.marshalLenient(
getClass().isAnnotationPresent(XmlRootElement.class)
? this
: new JAXBElement<>(new QName(getClass().getSimpleName()), Object.class, this),
out);
return out.toString();
} catch (XmlException e) {
return String.format("<!-- Invalid XML: %s -->", e.toString());
}
}
}
@@ -1,92 +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.xjc;
import static google.registry.xml.ValidationMode.LENIENT;
import static google.registry.xml.ValidationMode.STRICT;
import com.google.common.collect.ImmutableMap;
import google.registry.xml.ValidationMode;
import google.registry.xml.XmlException;
import google.registry.xml.XmlTransformer;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Writer;
import java.nio.charset.Charset;
/** Static methods for marshalling to and from the generated classes. */
public class XjcXmlTransformer {
private static final XmlTransformer INSTANCE =
new XmlTransformer(
XjcXmlTransformer.class.getPackage(),
// Hardcoded XML schemas, ordered with respect to dependency.
new ImmutableMap.Builder<String, String>()
.put("eppcom", "eppcom.xsd")
.put("epp", "epp.xsd")
.put("host", "host.xsd")
.put("domain", "domain.xsd")
.put("rgp", "rgp.xsd")
.put("secdns", "secdns.xsd")
.put("mark", "mark.xsd")
.put("dsig", "dsig.xsd")
.put("smd", "smd.xsd")
.put("fee06", "fee06.xsd")
.put("fee11", "fee11.xsd")
.put("fee12", "fee12.xsd")
.put("fee_1_00", "fee-std-v1.xsd")
.put("launch", "launch.xsd")
.put("rde", "rde.xsd")
.put("rdeheader", "rde-header.xsd")
.put("rdereport", "rde-report.xsd")
.put("rdehost", "rde-host.xsd")
.put("rdeidn", "rde-idn.xsd")
.put("rdedomain", "rde-domain.xsd")
.put("rdeeppparams", "rde-eppparams.xsd")
.put("rdenndn", "rde-nndn.xsd")
.put("rdenotification", "rde-notification.xsd")
.put("rdepolicy", "rde-policy.xsd")
.put("rderegistrar", "rde-registrar.xsd")
.put("iirdea", "iirdea.xsd")
.build());
public static XmlTransformer get() {
return INSTANCE;
}
public static <T> T unmarshal(Class<T> clazz, InputStream stream) throws XmlException {
return INSTANCE.unmarshal(clazz, stream);
}
public static void marshalLenient(Object root, Writer writer) throws XmlException {
INSTANCE.marshal(root, writer, LENIENT);
}
public static void marshalLenient(Object root, OutputStream out, Charset charset)
throws XmlException {
INSTANCE.marshal(root, out, charset, LENIENT);
}
public static void marshalStrict(Object root, OutputStream out, Charset charset)
throws XmlException {
INSTANCE.marshal(root, out, charset, STRICT);
}
public static void marshal(
Object root, OutputStream out, Charset charset, ValidationMode validationMode)
throws XmlException {
INSTANCE.marshal(root, out, charset, validationMode);
}
}
@@ -1,384 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="https://jakarta.ee/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb
http://java.sun.com/xml/ns/jaxb/bindingschema_3_0.xsd"
extensionBindingPrefixes="xjc"
version="3.0">
<globalBindings generateElementClass="true">
<xjc:simple/>
<xjc:superClass name="google.registry.xjc.XjcObject"/>
<xjc:javaType name="java.time.Instant" xmlType="xsd:dateTime"
adapter="google.registry.xml.UtcInstantAdapter"/>
<xjc:javaType name="java.time.LocalDate" xmlType="xsd:date"
adapter="google.registry.xml.DateAdapter"/>
</globalBindings>
<bindings schemaLocation="epp.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.epp"/>
<nameXmlTransform>
<elementName prefix="XjcEpp"/>
<typeName prefix="XjcEpp"/>
</nameXmlTransform>
</schemaBindings>
<bindings node="//xsd:element[@name='epp']">
<class name="XjcEppElement"/>
</bindings>
<bindings node="//xsd:complexType[@name='eppType']">
<class name="XjcEpp"/>
</bindings>
<bindings node="//xsd:complexType[@name='responseType']">
<class name="XjcEppResponse"/>
</bindings>
</bindings>
<bindings schemaLocation="eppcom.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.eppcom"/>
<nameXmlTransform>
<elementName prefix="XjcEppcom"/>
<typeName prefix="XjcEppcom"/>
</nameXmlTransform>
</schemaBindings>
</bindings>
<bindings schemaLocation="domain.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.domain"/>
<nameXmlTransform>
<elementName prefix="XjcDomain"/>
<typeName prefix="XjcDomain"/>
</nameXmlTransform>
</schemaBindings>
</bindings>
<bindings schemaLocation="host.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.host"/>
<nameXmlTransform>
<elementName prefix="XjcHost"/>
<typeName prefix="XjcHost"/>
</nameXmlTransform>
</schemaBindings>
</bindings>
<bindings schemaLocation="rgp.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.rgp"/>
<nameXmlTransform>
<elementName prefix="XjcRgp"/>
<typeName prefix="XjcRgp"/>
</nameXmlTransform>
</schemaBindings>
<bindings node="//xsd:simpleType[@name='rgpOpType']">
<typesafeEnumClass name="OpType"/>
</bindings>
</bindings>
<bindings schemaLocation="mark.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.mark"/>
<nameXmlTransform>
<elementName prefix="XjcMark"/>
<typeName prefix="XjcMark"/>
</nameXmlTransform>
</schemaBindings>
</bindings>
<bindings schemaLocation="smd.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.smd"/>
<nameXmlTransform>
<elementName prefix="XjcSmd"/>
<typeName prefix="XjcSmd"/>
</nameXmlTransform>
</schemaBindings>
<!-- The 'signedMarkType' type has both an attribute and an element named
'id'. We must rename one of them for the generated class to compile.
-->
<bindings node="//xsd:complexType[@name='signedMarkType']">
<bindings node=".//xsd:attribute[@name='id']">
<property name="idAttribute"/>
</bindings>
</bindings>
<!-- Rename 'XjcSmdSignedMarkType' to 'XjcSmdSignedMark' -->
<bindings node="//xsd:complexType[@name='signedMarkType']">
<class name="XjcSmdSignedMark"/>
</bindings>
<!-- Rename wrapper 'XjcSmdSignedMark' to 'XjcSmdSignedMarkElement' -->
<bindings node="//xsd:element[@name='signedMark']">
<class name="XjcSmdSignedMarkElement"/>
</bindings>
<!-- Rename not needed for 'XjcSmdEncodedSignedMark' -->
<!-- Rename 'XjcSmdIssuerInfoType' to 'XjcSmdIssuerInfo' -->
<bindings node="//xsd:complexType[@name='issuerInfoType']">
<class name="XjcSmdIssuerInfo"/>
</bindings>
<!-- Rename 'XjcAbstractSmdSignedMarkType' to 'XjcAbstractSmdSignedMark' -->
<bindings node="//xsd:complexType[@name='abstractSignedMarkType']">
<class name="XjcSmdAbstractSignedMark"/>
</bindings>
<!-- Rename wrapper 'XjcSmdAbstractSignedMark' to 'XjcSmdAbstractSignedMarkElement' -->
<bindings node="//xsd:element[@name='abstractSignedMark']">
<class name="XjcSmdAbstractSignedMarkElement"/>
</bindings>
</bindings>
<bindings schemaLocation="dsig.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.dsig"/>
<nameXmlTransform>
<elementName prefix="XjcDsig"/>
<typeName prefix="XjcDsig"/>
</nameXmlTransform>
</schemaBindings>
</bindings>
<bindings schemaLocation="fee06.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.fee06"/>
<nameXmlTransform>
<elementName prefix="XjcFee06"/>
<typeName prefix="XjcFee06"/>
</nameXmlTransform>
</schemaBindings>
</bindings>
<bindings schemaLocation="fee11.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.fee11"/>
<nameXmlTransform>
<elementName prefix="XjcFee11"/>
<typeName prefix="XjcFee11"/>
</nameXmlTransform>
</schemaBindings>
</bindings>
<bindings schemaLocation="fee12.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.fee12"/>
<nameXmlTransform>
<elementName prefix="XjcFee12"/>
<typeName prefix="XjcFee12"/>
</nameXmlTransform>
</schemaBindings>
</bindings>
<bindings schemaLocation="fee-std-v1.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.fee_1_00"/>
<nameXmlTransform>
<elementName prefix="XjcFeeStdV1"/>
<typeName prefix="XjcFeeStdV1"/>
</nameXmlTransform>
</schemaBindings>
</bindings>
<bindings schemaLocation="launch.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.launch"/>
<nameXmlTransform>
<elementName prefix="XjcLaunch"/>
<typeName prefix="XjcLaunch"/>
</nameXmlTransform>
</schemaBindings>
</bindings>
<bindings schemaLocation="secdns.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.secdns"/>
<nameXmlTransform>
<elementName prefix="XjcSecdns"/>
<typeName prefix="XjcSecdns"/>
</nameXmlTransform>
</schemaBindings>
</bindings>
<bindings schemaLocation="rde.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.rde"/>
<nameXmlTransform>
<elementName prefix="XjcRde"/>
<typeName prefix="XjcRde"/>
</nameXmlTransform>
</schemaBindings>
<bindings node="//xsd:complexType[@name='rdeMenuType']">
<class name="XjcRdeMenuType"/>
</bindings>
</bindings>
<bindings schemaLocation="rde-domain.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.rdedomain"/>
<nameXmlTransform>
<elementName prefix="XjcRdeDomain"/>
<typeName prefix="XjcRdeDomain"/>
</nameXmlTransform>
</schemaBindings>
<bindings node="//xsd:complexType[@name='abstractContentType']">
<class name="XjcRdeDomain"/>
</bindings>
<bindings node="//xsd:element[@name='domain']">
<class name="XjcRdeDomainElement"/>
</bindings>
<bindings node="//xsd:element[@name='abstractDomain']">
<class name="XjcRdeDomainAbstract"/>
</bindings>
</bindings>
<bindings schemaLocation="rde-eppparams.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.rdeeppparams"/>
<nameXmlTransform>
<elementName prefix="XjcRdeEppParams"/>
<typeName prefix="XjcRdeEppParams"/>
</nameXmlTransform>
</schemaBindings>
<bindings node="//xsd:complexType[@name='abstractContentType']">
<class name="XjcRdeEppParams"/>
</bindings>
<bindings node="//xsd:element[@name='eppParams']">
<class name="XjcRdeEppParamsElement"/>
</bindings>
<bindings node="//xsd:element[@name='abstractEppParams']">
<class name="XjcRdeEppParamsAbstract"/>
</bindings>
</bindings>
<bindings schemaLocation="rde-header.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.rdeheader"/>
<nameXmlTransform>
<elementName prefix="XjcRdeHeader"/>
<typeName prefix="XjcRdeHeader"/>
</nameXmlTransform>
</schemaBindings>
<bindings node="//xsd:complexType[@name='contentType']">
<class name="XjcRdeHeader"/>
</bindings>
<bindings node="//xsd:element[@name='header']">
<class name="XjcRdeHeaderElement"/>
</bindings>
<bindings node="//xsd:complexType[@name='countType']">
<class name="XjcRdeHeaderCount"/>
</bindings>
</bindings>
<bindings schemaLocation="rde-host.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.rdehost"/>
<nameXmlTransform>
<elementName prefix="XjcRdeHost"/>
<typeName prefix="XjcRdeHost"/>
</nameXmlTransform>
</schemaBindings>
<bindings node="//xsd:complexType[@name='abstractContentType']">
<class name="XjcRdeHost"/>
</bindings>
<bindings node="//xsd:element[@name='host']">
<class name="XjcRdeHostElement"/>
</bindings>
</bindings>
<bindings schemaLocation="rde-idn.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.rdeidn"/>
<nameXmlTransform>
<elementName prefix="XjcRdeIdn"/>
<typeName prefix="XjcRdeIdn"/>
</nameXmlTransform>
</schemaBindings>
<bindings node="//xsd:complexType[@name='contentType']">
<class name="XjcRdeIdn"/>
</bindings>
<bindings node="//xsd:element[@name='idnTableRef']">
<class name="XjcRdeIdnElement"/>
</bindings>
</bindings>
<bindings schemaLocation="rde-nndn.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.rdenndn"/>
<nameXmlTransform>
<elementName prefix="XjcRdeNndn"/>
<typeName prefix="XjcRdeNndn"/>
</nameXmlTransform>
</schemaBindings>
<bindings node="//xsd:complexType[@name='abstractContentType']">
<class name="XjcRdeNndn"/>
</bindings>
<bindings node="//xsd:element[@name='NNDN']">
<class name="XjcRdeNndnElement"/>
</bindings>
<bindings node="//xsd:element[@name='abstractNNDN']">
<class name="XjcRdeNndnAbstract"/>
</bindings>
</bindings>
<bindings schemaLocation="rde-notification.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.rdenotification"/>
<nameXmlTransform>
<elementName prefix="XjcRdeNotification"/>
<typeName prefix="XjcRdeNotification"/>
</nameXmlTransform>
</schemaBindings>
<bindings node="//xsd:complexType[@name='notificationType']">
<class name="XjcRdeNotification"/>
</bindings>
<bindings node="//xsd:element[@name='notification']">
<class name="XjcRdeNotificationElement"/>
</bindings>
<bindings node="//xsd:simpleType[@name='nameType']">
<class name="XjcRdeNotificationName"/>
</bindings>
</bindings>
<bindings schemaLocation="rde-policy.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.rdepolicy"/>
<nameXmlTransform>
<elementName prefix="XjcRdePolicy"/>
<typeName prefix="XjcRdePolicy"/>
<anonymousTypeName prefix="XjcRdePolicy"/>
</nameXmlTransform>
</schemaBindings>
<bindings node="//xsd:element[@name='policy']">
<class name="XjcRdePolicyElement"/>
</bindings>
<bindings node="//xsd:complexType[@name='policyType']">
<class name="XjcRdePolicy"/>
</bindings>
</bindings>
<bindings schemaLocation="rde-registrar.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.rderegistrar"/>
<nameXmlTransform>
<elementName prefix="XjcRdeRegistrar"/>
<typeName prefix="XjcRdeRegistrar"/>
</nameXmlTransform>
</schemaBindings>
<bindings node="//xsd:complexType[@name='abstractContentType']">
<class name="XjcRdeRegistrar"/>
</bindings>
<bindings node="//xsd:element[@name='registrar']">
<class name="XjcRdeRegistrarElement"/>
</bindings>
<bindings node="//xsd:element[@name='abstractRegistrar']">
<class name="XjcRdeRegistrarAbstract"/>
</bindings>
</bindings>
<bindings schemaLocation="rde-report.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.rdereport"/>
<nameXmlTransform>
<elementName prefix="XjcRdeReport"/>
<typeName prefix="XjcRdeReport"/>
</nameXmlTransform>
</schemaBindings>
<bindings node="//xsd:element[@name='report']">
<class name="XjcRdeReport"/>
</bindings>
</bindings>
<bindings schemaLocation="iirdea.xsd" node="/xsd:schema">
<schemaBindings>
<package name="google.registry.xjc.iirdea"/>
<nameXmlTransform>
<elementName prefix="XjcIirdea"/>
<typeName prefix="XjcIirdea"/>
</nameXmlTransform>
</schemaBindings>
<bindings node="//xsd:complexType[@name='responseType']">
<class name="XjcIirdeaResponse"/>
</bindings>
<bindings node="//xsd:element[@name='response']">
<class name="XjcIirdeaResponseElement"/>
</bindings>
<bindings node="//xsd:complexType[@name='resultType']">
<class name="XjcIirdeaResult"/>
</bindings>
<bindings node="//xsd:simpleType[@name='codeType']">
<class name="XjcIirdeaCode"/>
</bindings>
</bindings>
</bindings>
@@ -1,16 +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.
@javax.annotation.ParametersAreNonnullByDefault
package google.registry.xjc;
@@ -1,90 +0,0 @@
@XmlSchema(
elementFormDefault = XmlNsForm.QUALIFIED,
namespace = "@NAMESPACE@",
xmlns = {
@jakarta.xml.bind.annotation.XmlNs(
prefix = "epp",
namespaceURI = "urn:ietf:params:xml:ns:epp-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "eppcom",
namespaceURI = "urn:ietf:params:xml:ns:eppcom-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "domain",
namespaceURI = "urn:ietf:params:xml:ns:domain-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "dsig",
namespaceURI = "http://www.w3.org/2000/09/xmldsig#"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "fee06",
namespaceURI = "urn:ietf:params:xml:ns:fee-0.6"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "fee11",
namespaceURI = "urn:ietf:params:xml:ns:fee-0.11"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "fee12",
namespaceURI = "urn:ietf:params:xml:ns:fee-0.12"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "fee_1_00",
namespaceURI = "urn:ietf:params:xml:ns:epp:fee-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "host",
namespaceURI = "urn:ietf:params:xml:ns:host-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "iirdea",
namespaceURI = "urn:ietf:params:xml:ns:iirdea-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "launch",
namespaceURI = "urn:ietf:params:xml:ns:launch-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "mark",
namespaceURI = "urn:ietf:params:xml:ns:mark-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "rde",
namespaceURI = "urn:ietf:params:xml:ns:rde-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "rdeDomain",
namespaceURI = "urn:ietf:params:xml:ns:rdeDomain-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "rdeEppParams",
namespaceURI = "urn:ietf:params:xml:ns:rdeEppParams-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "rdeHeader",
namespaceURI = "urn:ietf:params:xml:ns:rdeHeader-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "rdeHost",
namespaceURI = "urn:ietf:params:xml:ns:rdeHost-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "rdeIDN",
namespaceURI = "urn:ietf:params:xml:ns:rdeIDN-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "rdeNNDN",
namespaceURI = "urn:ietf:params:xml:ns:rdeNNDN-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "rdeNotification",
namespaceURI = "urn:ietf:params:xml:ns:rdeNotification-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "rdePolicy",
namespaceURI = "urn:ietf:params:xml:ns:rdePolicy-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "rdeRegistrar",
namespaceURI = "urn:ietf:params:xml:ns:rdeRegistrar-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "rdeReport",
namespaceURI = "urn:ietf:params:xml:ns:rdeReport-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "rgp",
namespaceURI = "urn:ietf:params:xml:ns:rgp-1.0"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "secDNS",
namespaceURI = "urn:ietf:params:xml:ns:secDNS-1.1"),
@jakarta.xml.bind.annotation.XmlNs(
prefix = "smd",
namespaceURI = "urn:ietf:params:xml:ns:signedMark-1.0"),
})
@XmlAccessorType(XmlAccessType.FIELD)
package google.registry.xjc.@PACKAGE@;
import jakarta.xml.bind.annotation.XmlAccessType;
import jakarta.xml.bind.annotation.XmlAccessorType;
import jakarta.xml.bind.annotation.XmlNsForm;
import jakarta.xml.bind.annotation.XmlSchema;
@@ -1,26 +0,0 @@
domain urn:ietf:params:xml:ns:domain-1.0
dsig http://www.w3.org/2000/09/xmldsig#
epp urn:ietf:params:xml:ns:epp-1.0
eppcom urn:ietf:params:xml:ns:eppcom-1.0
fee06 urn:ietf:params:xml:ns:fee-0.6
fee11 urn:ietf:params:xml:ns:fee-0.11
fee12 urn:ietf:params:xml:ns:fee-0.12
fee_1_00 urn:ietf:params:xml:ns:epp:fee-1.0
host urn:ietf:params:xml:ns:host-1.0
iirdea urn:ietf:params:xml:ns:iirdea-1.0
launch urn:ietf:params:xml:ns:launch-1.0
mark urn:ietf:params:xml:ns:mark-1.0
rde urn:ietf:params:xml:ns:rde-1.0
rdedomain urn:ietf:params:xml:ns:rdeDomain-1.0
rdeeppparams urn:ietf:params:xml:ns:rdeEppParams-1.0
rdeheader urn:ietf:params:xml:ns:rdeHeader-1.0
rdehost urn:ietf:params:xml:ns:rdeHost-1.0
rdeidn urn:ietf:params:xml:ns:rdeIDN-1.0
rdenndn urn:ietf:params:xml:ns:rdeNNDN-1.0
rdenotification urn:ietf:params:xml:ns:rdeNotification-1.0
rdepolicy urn:ietf:params:xml:ns:rdePolicy-1.0
rderegistrar urn:ietf:params:xml:ns:rdeRegistrar-1.0
rdereport urn:ietf:params:xml:ns:rdeReport-1.0
rgp urn:ietf:params:xml:ns:rgp-1.0
secdns urn:ietf:params:xml:ns:secDNS-1.1
smd urn:ietf:params:xml:ns:signedMark-1.0
@@ -1,72 +0,0 @@
// Copyright 2017 The Nomulus Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package google.registry.xml;
import static com.google.common.base.Strings.isNullOrEmpty;
import google.registry.util.DateTimeUtils;
import jakarta.xml.bind.annotation.adapters.XmlAdapter;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
/**
* Adapter to use java.time {@link LocalDate} when marshalling the XML Schema {@code date} type.
*
* <p>Dates are represented as midnight in UTC. The parser aims to be permissive in what it accepts.
* Timestamps are converted to UTC if a zone is specified and then the time section is truncated.
*/
public class DateAdapter extends XmlAdapter<String, LocalDate> {
private static final DateTimeFormatter MARSHAL_FORMAT = DateTimeFormatter.ISO_LOCAL_DATE;
private static final DateTimeFormatter UNMARSHAL_FORMAT =
DateTimeFormatter.ISO_DATE_TIME.withZone(ZoneOffset.UTC);
/**
* Parses an ISO timestamp string into a UTC {@link LocalDate} object, converting timezones and
* truncating time to midnight if necessary. If {@code timestamp} is empty or {@code null} then
* {@code null} is returned.
*/
@Nullable
@CheckForNull
@Override
public LocalDate unmarshal(@Nullable String timestamp) {
if (isNullOrEmpty(timestamp)) {
return null;
}
// If it's already just a date, parse it as such.
if (timestamp.length() == 10 && timestamp.chars().filter(c -> c == '-').count() == 2) {
return LocalDate.parse(timestamp);
}
// Otherwise, parse as a date-time and convert to UTC.
return DateTimeUtils.toLocalDate(OffsetDateTime.parse(timestamp, UNMARSHAL_FORMAT).toInstant());
}
/**
* Converts {@link LocalDate} to UTC and returns it as an RFC3339 string. If {@code timestamp} is
* {@code null} then an empty string is returned.
*/
@Override
public String marshal(@Nullable LocalDate date) {
if (date == null) {
return "";
}
return MARSHAL_FORMAT.format(date);
}
}
@@ -1,37 +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.xml;
import static com.google.common.base.Strings.isNullOrEmpty;
import jakarta.xml.bind.annotation.adapters.XmlAdapter;
import java.time.Period;
import javax.annotation.Nullable;
/** Adapter to use Joda {@link Period} when marshalling XML. */
public class PeriodAdapter extends XmlAdapter<String, Period> {
@Nullable
@Override
public Period unmarshal(@Nullable String periodString) {
return isNullOrEmpty(periodString) ? null : Period.parse(periodString);
}
@Nullable
@Override
public String marshal(@Nullable Period period) {
return period == null ? null : period.toString();
}
}
@@ -1,48 +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.xml;
import com.google.common.base.CharMatcher;
import jakarta.xml.bind.annotation.adapters.XmlAdapter;
import javax.annotation.Nullable;
/**
* {@link XmlAdapter} which trims all whitespace surrounding a String.
*
* <p>This is primarily useful for <code>@XmlValue</code>-annotated fields in JAXB objects, as XML
* values can commonly be formatted like so:
*
* <pre>{@code
* <ns:tag>
* XML value here.
* </ns:tag>
* }</pre>
*/
public class TrimWhitespaceAdapter extends XmlAdapter<String, String> {
private static final CharMatcher WHITESPACE = CharMatcher.anyOf(" \t\r\n");
@Override
@Nullable
public String unmarshal(@Nullable String value) {
return (value == null) ? null : WHITESPACE.trimFrom(value);
}
@Override
@Nullable
public String marshal(@Nullable String str) {
return str;
}
}
@@ -1,61 +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.xml;
import static com.google.common.base.Strings.isNullOrEmpty;
import static google.registry.util.DateTimeUtils.formatInstant;
import static google.registry.util.DateTimeUtils.parseInstant;
import jakarta.xml.bind.annotation.adapters.XmlAdapter;
import java.time.Instant;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
/**
* Adapter to use an {@link Instant} when marshalling XML timestamps.
*
* <p>These fields shall contain timestamps indicating the date and time in UTC as specified in
* RFC3339.
*
* @see <a href="http://tools.ietf.org/html/rfc3339">RFC3339</a>
*/
public class UtcInstantAdapter extends XmlAdapter<String, Instant> {
public static String getFormattedString(@Nullable Instant timestamp) {
return (timestamp == null) ? "" : formatInstant(timestamp);
}
/**
* Parses an ISO timestamp string into a UTC {@link Instant} object, converting timezones if
* necessary. If {@code timestamp} is empty or {@code null} then {@code null} is returned.
*/
@Override
@CheckForNull
public Instant unmarshal(@Nullable String timestamp) {
if (isNullOrEmpty(timestamp)) {
return null;
}
return parseInstant(timestamp);
}
/**
* Converts {@link Instant} to UTC and returns it as an RFC3339 string. If {@code timestamp} is
* {@code null} then an empty string is returned.
*/
@Override
public String marshal(@Nullable Instant timestamp) {
return getFormattedString(timestamp);
}
}
@@ -1,24 +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.xml;
/** Enum that determines whether xml should be validated against a schema while marshaling. */
public enum ValidationMode {
/** Validate. */
STRICT,
/** Don't validate. */
LENIENT
}
@@ -1,31 +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.xml;
/**
* An exception thrown by {@link XmlTransformer} when marshalling or unmarshalling fails.
*
* <p>Upstream errors such as {@link jakarta.xml.bind.JAXBException} will be wrapped by this class.
*/
public class XmlException extends Exception {
public XmlException(String message) {
super(message);
}
public XmlException(Throwable cause) {
super(cause);
}
}
@@ -1,95 +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.xml;
import static com.google.common.base.Throwables.throwIfInstanceOf;
import static com.google.common.base.Verify.verify;
import static google.registry.xml.ValidationMode.LENIENT;
import static google.registry.xml.ValidationMode.STRICT;
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.re2j.Pattern;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBElement;
import jakarta.xml.bind.JAXBException;
import jakarta.xml.bind.MarshalException;
import jakarta.xml.bind.Marshaller;
import java.io.ByteArrayOutputStream;
import javax.annotation.concurrent.NotThreadSafe;
import javax.xml.validation.Schema;
/** JAXB marshaller for building pieces of XML documents in a single thread. */
@NotThreadSafe
public final class XmlFragmentMarshaller {
private static final Pattern XMLNS_PATTERN = Pattern.compile(" xmlns:\\w+=\"[^\"]+\"");
private final ByteArrayOutputStream os = new ByteArrayOutputStream();
private final Marshaller marshaller;
private final Schema schema;
XmlFragmentMarshaller(JAXBContext jaxbContext, Schema schema) {
try {
marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_ENCODING, UTF_8.toString());
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
} catch (JAXBException e) {
throw new RuntimeException(e);
}
this.schema = schema;
}
/**
* Turns an individual JAXB element into an XML fragment string.
*
* @throws MarshalException if schema validation failed
*/
public String marshal(JAXBElement<?> element) throws MarshalException {
return marshal(element, STRICT);
}
/** Turns an individual JAXB element into an XML fragment string. */
public String marshalLenient(JAXBElement<?> element) {
try {
return marshal(element, LENIENT);
} catch (MarshalException e) {
throw new RuntimeException("MarshalException shouldn't be thrown in lenient mode", e);
}
}
/**
* Turns an individual JAXB element into an XML fragment string using the given validation mode.
*
* @throws MarshalException if schema validation failed
*/
public String marshal(JAXBElement<?> element, ValidationMode validationMode)
throws MarshalException {
os.reset();
marshaller.setSchema((validationMode == STRICT) ? schema : null);
try {
marshaller.marshal(element, os);
} catch (JAXBException e) {
throwIfInstanceOf(e, MarshalException.class);
throw new RuntimeException("Mysterious XML exception", e);
}
String fragment = new String(os.toByteArray(), UTF_8);
int endOfFirstLine = fragment.indexOf(">\n");
verify(endOfFirstLine > 0, "Bad XML fragment:\n%s", fragment);
String firstLine = fragment.substring(0, endOfFirstLine + 2);
String rest = fragment.substring(firstLine.length());
return XMLNS_PATTERN.matcher(firstLine).replaceAll("") + rest;
}
}
@@ -1,322 +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.xml;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Strings.nullToEmpty;
import static google.registry.xml.ValidationMode.STRICT;
import static java.nio.charset.StandardCharsets.UTF_8;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.io.Closer;
import com.google.common.io.Resources;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBException;
import jakarta.xml.bind.Marshaller;
import jakarta.xml.bind.UnmarshalException;
import jakarta.xml.bind.Unmarshaller;
import jakarta.xml.bind.helpers.DefaultValidationEventHandler;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.Writer;
import java.nio.charset.Charset;
import java.util.Collection;
import java.util.Map;
import javax.annotation.Nullable;
import javax.xml.XMLConstants;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
/** Static methods for marshaling, unmarshaling, and validating XML. */
public class XmlTransformer {
/** Default for {@link StreamSource#setSystemId(String)} so error reporting works. */
private static final String SYSTEM_ID = "<default system id>";
/** A transformer factory for the {@link #prettyPrint} method. */
private static final TransformerFactory transformerFactory = createTransformerFactory();
/** A {@link JAXBContext} (thread-safe) to use for marshaling and unmarshaling. */
private final JAXBContext jaxbContext;
/** A factory for setting flags to disable XXE attacks. */
private static final XMLInputFactory XML_INPUT_FACTORY = createXmlInputFactory();
/** A {@link Schema} to validate XML. */
private final Schema schema;
/**
* Create a new XmlTransformer that validates using the given schemas, but uses the given classes
* (rather than generated ones) for marshaling and unmarshaling.
*
* @param schemaFilenames schema files, used only for validating, and relative to this package.
* @param recognizedClasses the classes that can be used to marshal to and from
*/
public XmlTransformer(ImmutableList<String> schemaFilenames, Class<?>... recognizedClasses) {
try {
this.jaxbContext = JAXBContext.newInstance(recognizedClasses);
this.schema = loadXmlSchemas(schemaFilenames);
} catch (JAXBException e) {
throw new RuntimeException(e);
}
}
/**
* Create a new XmlTransformer that validates using the given schemas and marshals to and from
* classes generated off of those schemas.
*
* @param schemaNamesToFilenames map of schema names to filenames, immutable because ordering is
* significant and ImmutableMap preserves insertion order. The filenames are relative to
* this package.
*/
public XmlTransformer(Package pakkage, ImmutableMap<String, String> schemaNamesToFilenames) {
try {
this.jaxbContext = initJaxbContext(pakkage, schemaNamesToFilenames.keySet());
this.schema = loadXmlSchemas(ImmutableList.copyOf(schemaNamesToFilenames.values()));
} catch (JAXBException e) {
throw new RuntimeException(e);
}
}
public static XMLInputFactory createXmlInputFactory() {
XMLInputFactory xmlInputFactory = XMLInputFactory.newDefaultFactory();
// Coalesce adjacent data, so that all chars in a string will be grouped as one item.
xmlInputFactory.setProperty(XMLInputFactory.IS_COALESCING, true);
// Preserve Name Space information.
xmlInputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, true);
// Prevent XXE attacks.
xmlInputFactory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
xmlInputFactory.setProperty(XMLInputFactory.SUPPORT_DTD, false);
xmlInputFactory.setXMLResolver(
(publicID, systemID, baseURI, namespace) -> {
throw new XMLStreamException("Entity resolution disabled.");
});
return xmlInputFactory;
}
/**
* Validates XML text against {@link #schema} without marshalling.
*
* <p>You must specify the XML class you expect to receive as the root element. Validation is
* performed in accordance with the hard-coded XML schemas.
*
* @throws XmlException if XML input was invalid or root element doesn't match {@code expect}.
*/
public void validate(String xml) throws XmlException {
try {
schema.newValidator().validate(new StreamSource(new StringReader(xml)));
} catch (SAXException | IOException e) {
throw new XmlException(e);
}
}
/**
* Turns XML text into an object, validating against hard-coded xml {@link #schema}s.
*
* @param clazz the XML class you expect to receive as the root element
* @throws XmlException if failed to read from {@code bytes}, XML input is invalid, or root
* element doesn't match {@code expect}.
* @see com.google.common.io.Files#asByteSource
* @see com.google.common.io.Resources#asByteSource
* @see <a href="https://errorprone.info/bugpattern/TypeParameterUnusedInFormals">TypeParameterUnusedInFormals</a>
*/
public <T> T unmarshal(Class<T> clazz, InputStream stream) throws XmlException {
try (InputStream autoClosingStream = stream) {
return clazz.cast(getUnmarshaller().unmarshal(
XML_INPUT_FACTORY.createXMLStreamReader(new StreamSource(autoClosingStream, SYSTEM_ID))));
} catch (UnmarshalException e) {
// Plain old parsing exceptions have a SAXParseException with no further cause.
if (e.getLinkedException() instanceof SAXParseException sae
&& e.getLinkedException().getCause() == null) {
throw new XmlException(
String.format(
"Syntax error at line %d, column %d: %s",
sae.getLineNumber(),
sae.getColumnNumber(),
nullToEmpty(sae.getMessage()).replace("&quot;", "")));
}
// These get thrown for attempted XXE attacks.
if (e.getLinkedException() instanceof XMLStreamException xse) {
throw new XmlException(
String.format(
"Syntax error at line %d, column %d: %s",
xse.getLocation().getLineNumber(),
xse.getLocation().getColumnNumber(),
nullToEmpty(xse.getMessage())
.replaceAll(
"^.*\nMessage: ", "") // Strip an ugly prefix from XMLStreamException.
.replace("&quot;", "")));
}
throw new XmlException(e);
} catch (JAXBException | XMLStreamException | IOException e) {
throw new XmlException(e);
}
}
/**
* Streams {@code root} without XML declaration, optionally validating against the schema.
*
* <p>The root object must be annotated with {@link jakarta.xml.bind.annotation.XmlRootElement}.
* If the validation parameter is set to {@link ValidationMode#STRICT} this method will verify
* that your object strictly conforms to {@link #schema}. Because the output is streamed, {@link
* XmlException} will most likely be thrown <i>after</i> output has been written.
*
* @param root the object to write
* @param writer to write the output to
* @param validation whether to validate while marshaling
* @throws XmlException to rethrow {@link JAXBException}.
*/
public void marshal(Object root, Writer writer, ValidationMode validation) throws XmlException {
try {
// Omit XML declaration because character-oriented output prevents us from knowing.
getMarshaller(
STRICT.equals(validation) ? schema : null,
ImmutableMap.of(Marshaller.JAXB_FRAGMENT, true)).marshal(
checkNotNull(root, "root"), checkNotNull(writer, "writer"));
} catch (JAXBException e) {
throw new XmlException(e);
}
}
/**
* Validates and streams {@code root} as formatted XML bytes with XML declaration.
*
* <p>The root object must be annotated with {@link jakarta.xml.bind.annotation.XmlRootElement}.
* If the validation parameter is set to {@link ValidationMode#STRICT} this method will verify
* that your object strictly conforms to {@link #schema}. Because the output is streamed, {@link
* XmlException} will most likely be thrown <i>after</i> output has been written.
*
* @param root the object to write
* @param out byte-oriented output for writing XML. This method won't close it.
* @param charset should almost always be set to {@code "utf-8"}.
* @param validation whether to validate while marshaling
* @throws XmlException to rethrow {@link JAXBException}.
* @see #unmarshal
*/
public void marshal(Object root, OutputStream out, Charset charset, ValidationMode validation)
throws XmlException {
try {
getMarshaller(
STRICT.equals(validation) ? schema : null,
ImmutableMap.of(Marshaller.JAXB_ENCODING, charset.toString())).marshal(
checkNotNull(root, "root"), checkNotNull(out, "out"));
} catch (JAXBException e) {
throw new XmlException(e);
}
}
/** Returns new instance of {@link XmlFragmentMarshaller}. */
public XmlFragmentMarshaller createFragmentMarshaller() {
return new XmlFragmentMarshaller(jaxbContext, schema);
}
/** Creates a single {@link Schema} from multiple {@code .xsd} files. */
public static Schema loadXmlSchemas(ImmutableList<String> schemaFilenames) {
try (Closer closer = Closer.create()) {
StreamSource[] sources = new StreamSource[schemaFilenames.size()];
for (int i = 0; i < schemaFilenames.size(); ++i) {
sources[i] = new StreamSource(closer.register(
Resources.asByteSource(Resources.getResource(
XmlTransformer.class, "xsd/" + schemaFilenames.get(i))).openStream()));
}
return SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(sources);
} catch (IOException | SAXException e) {
throw new RuntimeException(e);
}
}
/** Creates a {@link JAXBContext} from multiple schema names. */
private static JAXBContext initJaxbContext(
Package pakkage, Collection<String> schemaNames) throws JAXBException {
String prefix = pakkage.getName() + ".";
return JAXBContext.newInstance(prefix + Joiner.on(':' + prefix).join(schemaNames));
}
/** Get a {@link Unmarshaller} instance with the default configuration. */
private Unmarshaller getUnmarshaller() throws JAXBException {
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
unmarshaller.setSchema(schema);
// This handler was the default in JAXB 1.0. It fails on any exception thrown while
// unmarshalling. In JAXB 2.0 some errors are considered recoverable and are ignored, which is
// not what we want, so we have to set this explicitly.
unmarshaller.setEventHandler(new DefaultValidationEventHandler());
return unmarshaller;
}
/** Get a {@link Marshaller} instance with the given configuration. */
private Marshaller getMarshaller(@Nullable Schema schemaParam, Map<String, ?> properties)
throws JAXBException {
Marshaller marshaller = jaxbContext.createMarshaller();
for (Map.Entry<String, ?> entry : properties.entrySet()) {
marshaller.setProperty(entry.getKey(), entry.getValue());
}
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.setSchema(schemaParam);
return marshaller;
}
/** Pretty print XML. */
public static String prettyPrint(String xmlString) {
StringWriter prettyXml = new StringWriter();
try {
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
transformer.transform(
new StreamSource(new StringReader(xmlString)),
new StreamResult(prettyXml));
// Remove whitespace-only/blank lines (which the XMLTransformer in Java 9 and up sometimes
// adds depending on input format). Surprisingly, this is the least bad solution. See:
// https://stackoverflow.com/questions/58478632/how-to-avoid-extra-blank-lines-in-xml-generation-with-java
// Note that a simple regex replace is waaaaay more performant than using an XSLT.
return prettyXml.toString().replaceAll("\\n\\s*\\n", "\n");
} catch (TransformerException e) {
return xmlString; // We couldn't prettify it, but that's ok; fail gracefully.
}
}
/** Pretty print XML bytes. */
public static String prettyPrint(byte[] xmlBytes) {
return prettyPrint(new String(xmlBytes, UTF_8));
}
private static TransformerFactory createTransformerFactory() {
TransformerFactory transformerFactory = TransformerFactory.newInstance();
try {
transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
} catch (TransformerConfigurationException e) {
throw new RuntimeException(e); // this should never happen
}
return transformerFactory;
}
}
@@ -1,16 +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.
@javax.annotation.ParametersAreNonnullByDefault
package google.registry.xml;
@@ -1,39 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:google:params:xml:ns:allocate-1.0"
xmlns:allocate="urn:google:params:xml:ns:allocate-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns:mark="urn:ietf:params:xml:ns:mark-1.0"
xmlns:launch="urn:ietf:params:xml:ns:launch-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<!-- Import common element types. -->
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemaLocation="eppcom.xsd" />
<import namespace="urn:ietf:params:xml:ns:mark-1.0" schemaLocation="mark.xsd" />
<import namespace="urn:ietf:params:xml:ns:launch-1.0" schemaLocation="launch.xsd" />
<annotation>
<documentation>
Extensible Provisioning Protocol v1.0
domain name extension schema for allocating domains from applications.
This is a proprietary, internal-only, non-public extension only for use
inside the Google registry.
</documentation>
</annotation>
<!-- Child elements found in EPP commands. -->
<element name="create" type="allocate:createType" />
<!-- Child elements for the create command -->
<complexType name="createType">
<sequence>
<element name="applicationRoid" type="eppcom:roidType" />
<element name="applicationTime" type="dateTime" />
<element name="smdId" minOccurs="0" type="mark:idType" />
<element name="notice" minOccurs="0" type="launch:createNoticeType" />
</sequence>
</complexType>
</schema>
@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:allocationToken-1.0"
xmlns:allocationToken="urn:ietf:params:xml:ns:allocationToken-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<annotation>
<documentation>
Extensible Provisioning Protocol v1.0
Allocation Token Extension.
</documentation>
</annotation>
<!-- Element used in info command to get allocation token. -->
<element name="info"/>
<!-- Allocation Token used in transform
commands and info response -->
<element name="allocationToken"
type="allocationToken:allocationTokenType"/>
<complexType name="allocationTokenType">
<simpleContent>
<extension base="token"/>
</simpleContent>
</complexType>
<!-- End of schema.-->
</schema>
@@ -1,38 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:google:params:xml:ns:bulkToken-1.0"
xmlns:bulkToken="urn:google:params:xml:ns:bulkToken-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<annotation>
<documentation>
Extensible Provisioning Protocol v1.0
Bulk Token Extension.
</documentation>
</annotation>
<!-- Element used in info command request to get a bulk pricing token for a domain. -->
<element name="info"
type="bulkToken:infoType"/>
<complexType name="infoType"/>
<!-- Element returned in an info command response with a bulk token for a domain with bulk pricing. -->
<element name="bulkData"
type="bulkToken:bulkDataType"/>
<complexType name="bulkDataType">
<sequence>
<element name="token" type="bulkToken:tokenType" maxOccurs="unbounded"/>
</sequence>
</complexType>
<simpleType name="tokenType">
<restriction base="string">
</restriction>
</simpleType>
<!-- End of schema.-->
</schema>
@@ -1,434 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:domain-1.0"
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
xmlns:host="urn:ietf:params:xml:ns:host-1.0"
xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<!--
Import common element types.
-->
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
schemaLocation="eppcom.xsd"/>
<import namespace="urn:ietf:params:xml:ns:epp-1.0"
schemaLocation="epp.xsd"/>
<import namespace="urn:ietf:params:xml:ns:host-1.0"
schemaLocation="host.xsd"/>
<annotation>
<documentation>
Extensible Provisioning Protocol v1.0
domain provisioning schema.
</documentation>
</annotation>
<!--
Child elements found in EPP commands.
-->
<element name="check" type="domain:mNameType"/>
<element name="create" type="domain:createType"/>
<element name="delete" type="domain:sNameType"/>
<element name="info" type="domain:infoType"/>
<element name="renew" type="domain:renewType"/>
<element name="transfer" type="domain:transferType"/>
<element name="update" type="domain:updateType"/>
<!--
Child elements of the <create> command.
-->
<complexType name="createType">
<sequence>
<element name="name" type="eppcom:labelType"/>
<element name="period" type="domain:periodType"
minOccurs="0"/>
<element name="ns" type="domain:nsType"
minOccurs="0"/>
<element name="registrant" type="eppcom:clIDType"
minOccurs="0"/>
<element name="contact" type="domain:contactType"
minOccurs="0" maxOccurs="unbounded"/>
<element name="authInfo" type="domain:authInfoType"/>
</sequence>
</complexType>
<complexType name="periodType">
<simpleContent>
<extension base="domain:pLimitType">
<attribute name="unit" type="domain:pUnitType"
use="required"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="pLimitType">
<restriction base="unsignedShort">
<minInclusive value="1"/>
<maxInclusive value="99"/>
</restriction>
</simpleType>
<simpleType name="pUnitType">
<restriction base="token">
<enumeration value="y"/>
<enumeration value="m"/>
</restriction>
</simpleType>
<complexType name="nsType">
<choice>
<element name="hostObj" type="eppcom:labelType"
maxOccurs="unbounded"/>
<element name="hostAttr" type="domain:hostAttrType"
maxOccurs="unbounded"/>
</choice>
</complexType>
<!--
Name servers are either host objects or attributes.
-->
<complexType name="hostAttrType">
<sequence>
<element name="hostName" type="eppcom:labelType"/>
<element name="hostAddr" type="host:addrType"
minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!--
If attributes, addresses are optional and follow the
structure defined in the host mapping.
-->
<complexType name="contactType">
<simpleContent>
<extension base="eppcom:clIDType">
<attribute name="type" type="domain:contactAttrType"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="contactAttrType">
<restriction base="token">
<enumeration value="admin"/>
<enumeration value="billing"/>
<enumeration value="tech"/>
</restriction>
</simpleType>
<complexType name="authInfoType">
<choice>
<element name="pw" type="eppcom:pwAuthInfoType"/>
<element name="ext" type="eppcom:extAuthInfoType"/>
</choice>
</complexType>
<!--
Child element of commands that require a single name.
-->
<complexType name="sNameType">
<sequence>
<element name="name" type="eppcom:labelType"/>
</sequence>
</complexType>
<!--
Child element of commands that accept multiple names.
-->
<complexType name="mNameType">
<sequence>
<element name="name" type="eppcom:labelType"
maxOccurs="unbounded"/>
</sequence>
</complexType>
<!--
Child elements of the <info> command.
-->
<complexType name="infoType">
<sequence>
<element name="name" type="domain:infoNameType"/>
<element name="authInfo" type="domain:authInfoType"
minOccurs="0"/>
</sequence>
</complexType>
<complexType name="infoNameType">
<simpleContent>
<extension base = "eppcom:labelType">
<attribute name="hosts" type="domain:hostsType"
default="all"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="hostsType">
<restriction base="token">
<enumeration value="all"/>
<enumeration value="del"/>
<enumeration value="none"/>
<enumeration value="sub"/>
</restriction>
</simpleType>
<!--
Child elements of the <renew> command.
-->
<complexType name="renewType">
<sequence>
<element name="name" type="eppcom:labelType"/>
<element name="curExpDate" type="date"/>
<element name="period" type="domain:periodType"
minOccurs="0"/>
</sequence>
</complexType>
<!--
Child elements of the <transfer> command.
-->
<complexType name="transferType">
<sequence>
<element name="name" type="eppcom:labelType"/>
<element name="period" type="domain:periodType"
minOccurs="0"/>
<element name="authInfo" type="domain:authInfoType"
minOccurs="0"/>
</sequence>
</complexType>
<!--
Child elements of the <update> command.
-->
<complexType name="updateType">
<sequence>
<element name="name" type="eppcom:labelType"/>
<element name="add" type="domain:addRemType"
minOccurs="0"/>
<element name="rem" type="domain:addRemType"
minOccurs="0"/>
<element name="chg" type="domain:chgType"
minOccurs="0"/>
</sequence>
</complexType>
<!--
Data elements that can be added or removed.
-->
<complexType name="addRemType">
<sequence>
<element name="ns" type="domain:nsType"
minOccurs="0"/>
<element name="contact" type="domain:contactType"
minOccurs="0" maxOccurs="unbounded"/>
<element name="status" type="domain:statusType"
minOccurs="0" maxOccurs="11"/>
</sequence>
</complexType>
<!--
Data elements that can be changed.
-->
<complexType name="chgType">
<sequence>
<element name="registrant" type="domain:clIDChgType"
minOccurs="0"/>
<element name="authInfo" type="domain:authInfoChgType"
minOccurs="0"/>
</sequence>
</complexType>
<!--
Allow the registrant value to be nullified by changing the
minLength restriction to "0".
-->
<simpleType name="clIDChgType">
<restriction base="token">
<minLength value="0"/>
<maxLength value="16"/>
</restriction>
</simpleType>
<!--
Allow the authInfo value to be nullified by including an
empty element within the choice.
-->
<complexType name="authInfoChgType">
<choice>
<element name="pw" type="eppcom:pwAuthInfoType"/>
<element name="ext" type="eppcom:extAuthInfoType"/>
<element name="null"/>
</choice>
</complexType>
<!--
Child response elements.
-->
<element name="chkData" type="domain:chkDataType"/>
<element name="creData" type="domain:creDataType"/>
<element name="infData" type="domain:infDataType"/>
<element name="panData" type="domain:panDataType"/>
<element name="renData" type="domain:renDataType"/>
<element name="trnData" type="domain:trnDataType"/>
<!--
<check> response elements.
-->
<complexType name="chkDataType">
<sequence>
<element name="cd" type="domain:checkType"
maxOccurs="unbounded"/>
</sequence>
</complexType>
<complexType name="checkType">
<sequence>
<element name="name" type="domain:checkNameType"/>
<element name="reason" type="eppcom:reasonType"
minOccurs="0"/>
</sequence>
</complexType>
<complexType name="checkNameType">
<simpleContent>
<extension base="eppcom:labelType">
<attribute name="avail" type="boolean"
use="required"/>
</extension>
</simpleContent>
</complexType>
<!--
<create> response elements.
-->
<complexType name="creDataType">
<sequence>
<element name="name" type="eppcom:labelType"/>
<element name="crDate" type="dateTime"/>
<element name="exDate" type="dateTime"
minOccurs="0"/>
</sequence>
</complexType>
<!--
<info> response elements.
-->
<complexType name="infDataType">
<sequence>
<element name="name" type="eppcom:labelType"/>
<element name="roid" type="eppcom:roidType"/>
<element name="status" type="domain:statusType"
minOccurs="0" maxOccurs="11"/>
<element name="registrant" type="eppcom:clIDType"
minOccurs="0"/>
<element name="contact" type="domain:contactType"
minOccurs="0" maxOccurs="unbounded"/>
<element name="ns" type="domain:nsType"
minOccurs="0"/>
<element name="host" type="eppcom:labelType"
minOccurs="0" maxOccurs="unbounded"/>
<element name="clID" type="eppcom:clIDType"/>
<element name="crID" type="eppcom:clIDType"
minOccurs="0"/>
<element name="crDate" type="dateTime"
minOccurs="0"/>
<element name="upID" type="eppcom:clIDType"
minOccurs="0"/>
<element name="upDate" type="dateTime"
minOccurs="0"/>
<element name="exDate" type="dateTime"
minOccurs="0"/>
<element name="trDate" type="dateTime"
minOccurs="0"/>
<element name="authInfo" type="domain:authInfoType"
minOccurs="0"/>
</sequence>
</complexType>
<!--
Status is a combination of attributes and an optional
human-readable message that may be expressed in languages other
than English.
-->
<complexType name="statusType">
<simpleContent>
<extension base="normalizedString">
<attribute name="s" type="domain:statusValueType"
use="required"/>
<attribute name="lang" type="language"
default="en"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="statusValueType">
<restriction base="token">
<enumeration value="clientDeleteProhibited"/>
<enumeration value="clientHold"/>
<enumeration value="clientRenewProhibited"/>
<enumeration value="clientTransferProhibited"/>
<enumeration value="clientUpdateProhibited"/>
<enumeration value="inactive"/>
<enumeration value="ok"/>
<enumeration value="pendingCreate"/>
<enumeration value="pendingDelete"/>
<enumeration value="pendingRenew"/>
<enumeration value="pendingTransfer"/>
<enumeration value="pendingUpdate"/>
<enumeration value="serverDeleteProhibited"/>
<enumeration value="serverHold"/>
<enumeration value="serverRenewProhibited"/>
<enumeration value="serverTransferProhibited"/>
<enumeration value="serverUpdateProhibited"/>
</restriction>
</simpleType>
<!--
Pending action notification response elements.
-->
<complexType name="panDataType">
<sequence>
<element name="name" type="domain:paNameType"/>
<element name="paTRID" type="epp:trIDType"/>
<element name="paDate" type="dateTime"/>
</sequence>
</complexType>
<complexType name="paNameType">
<simpleContent>
<extension base="eppcom:labelType">
<attribute name="paResult" type="boolean"
use="required"/>
</extension>
</simpleContent>
</complexType>
<!--
<renew> response elements.
-->
<complexType name="renDataType">
<sequence>
<element name="name" type="eppcom:labelType"/>
<element name="exDate" type="dateTime"
minOccurs="0"/>
</sequence>
</complexType>
<!--
<transfer> response elements.
-->
<complexType name="trnDataType">
<sequence>
<element name="name" type="eppcom:labelType"/>
<element name="trStatus" type="eppcom:trStatusType"/>
<element name="reID" type="eppcom:clIDType"/>
<element name="reDate" type="dateTime"/>
<element name="acID" type="eppcom:clIDType"/>
<element name="acDate" type="dateTime"/>
<element name="exDate" type="dateTime"
minOccurs="0"/>
</sequence>
</complexType>
<!--
End of schema.
-->
</schema>
@@ -1,292 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Schema extracted from http://www.w3.org/2000/09/xmldsig# -->
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
targetNamespace="http://www.w3.org/2000/09/xmldsig#"
version="0.1" elementFormDefault="qualified">
<!-- Basic Types Defined for Signatures -->
<simpleType name="CryptoBinary">
<restriction base="base64Binary">
</restriction>
</simpleType>
<!-- Start Signature -->
<element name="Signature" type="ds:SignatureType"/>
<complexType name="SignatureType">
<sequence>
<element ref="ds:SignedInfo"/>
<element ref="ds:SignatureValue"/>
<element ref="ds:KeyInfo" minOccurs="0"/>
<element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<element name="SignatureValue" type="ds:SignatureValueType"/>
<complexType name="SignatureValueType">
<simpleContent>
<extension base="base64Binary">
<attribute name="Id" type="ID" use="optional"/>
</extension>
</simpleContent>
</complexType>
<!-- Start SignedInfo -->
<element name="SignedInfo" type="ds:SignedInfoType"/>
<complexType name="SignedInfoType">
<sequence>
<element ref="ds:CanonicalizationMethod"/>
<element ref="ds:SignatureMethod"/>
<element ref="ds:Reference" maxOccurs="unbounded"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/>
<complexType name="CanonicalizationMethodType" mixed="true">
<sequence>
<any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
<!-- (0,unbounded) elements from (1,1) namespace -->
</sequence>
<attribute name="Algorithm" type="anyURI" use="required"/>
</complexType>
<element name="SignatureMethod" type="ds:SignatureMethodType"/>
<complexType name="SignatureMethodType" mixed="true">
<sequence>
<element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/>
<any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
<!-- (0,unbounded) elements from (1,1) external namespace -->
</sequence>
<attribute name="Algorithm" type="anyURI" use="required"/>
</complexType>
<!-- Start Reference -->
<element name="Reference" type="ds:ReferenceType"/>
<complexType name="ReferenceType">
<sequence>
<element ref="ds:Transforms" minOccurs="0"/>
<element ref="ds:DigestMethod"/>
<element ref="ds:DigestValue"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
<attribute name="URI" type="anyURI" use="optional"/>
<attribute name="Type" type="anyURI" use="optional"/>
</complexType>
<element name="Transforms" type="ds:TransformsType"/>
<complexType name="TransformsType">
<sequence>
<element ref="ds:Transform" maxOccurs="unbounded"/>
</sequence>
</complexType>
<element name="Transform" type="ds:TransformType"/>
<complexType name="TransformType" mixed="true">
<choice minOccurs="0" maxOccurs="unbounded">
<any namespace="##other" processContents="lax"/>
<!-- (1,1) elements from (0,unbounded) namespaces -->
<element name="XPath" type="string"/>
</choice>
<attribute name="Algorithm" type="anyURI" use="required"/>
</complexType>
<!-- End Reference -->
<element name="DigestMethod" type="ds:DigestMethodType"/>
<complexType name="DigestMethodType" mixed="true">
<sequence>
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="Algorithm" type="anyURI" use="required"/>
</complexType>
<element name="DigestValue" type="ds:DigestValueType"/>
<simpleType name="DigestValueType">
<restriction base="base64Binary"/>
</simpleType>
<!-- End SignedInfo -->
<!-- Start KeyInfo -->
<element name="KeyInfo" type="ds:KeyInfoType"/>
<complexType name="KeyInfoType" mixed="true">
<choice maxOccurs="unbounded">
<element ref="ds:KeyName"/>
<element ref="ds:KeyValue"/>
<element ref="ds:RetrievalMethod"/>
<element ref="ds:X509Data"/>
<element ref="ds:PGPData"/>
<element ref="ds:SPKIData"/>
<element ref="ds:MgmtData"/>
<any processContents="lax" namespace="##other"/>
<!-- (1,1) elements from (0,unbounded) namespaces -->
</choice>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<element name="KeyName" type="string"/>
<element name="MgmtData" type="string"/>
<element name="KeyValue" type="ds:KeyValueType"/>
<complexType name="KeyValueType" mixed="true">
<choice>
<element ref="ds:DSAKeyValue"/>
<element ref="ds:RSAKeyValue"/>
<any namespace="##other" processContents="lax"/>
</choice>
</complexType>
<element name="RetrievalMethod" type="ds:RetrievalMethodType"/>
<complexType name="RetrievalMethodType">
<sequence>
<element ref="ds:Transforms" minOccurs="0"/>
</sequence>
<attribute name="URI" type="anyURI"/>
<attribute name="Type" type="anyURI" use="optional"/>
</complexType>
<!-- Start X509Data -->
<element name="X509Data" type="ds:X509DataType"/>
<complexType name="X509DataType">
<sequence maxOccurs="unbounded">
<choice>
<element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>
<element name="X509SKI" type="base64Binary"/>
<element name="X509SubjectName" type="string"/>
<element name="X509Certificate" type="base64Binary"/>
<element name="X509CRL" type="base64Binary"/>
<any namespace="##other" processContents="lax"/>
</choice>
</sequence>
</complexType>
<complexType name="X509IssuerSerialType">
<sequence>
<element name="X509IssuerName" type="string"/>
<element name="X509SerialNumber" type="integer"/>
</sequence>
</complexType>
<!-- End X509Data -->
<!-- Begin PGPData -->
<element name="PGPData" type="ds:PGPDataType"/>
<complexType name="PGPDataType">
<choice>
<sequence>
<element name="PGPKeyID" type="base64Binary"/>
<element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/>
<any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
<sequence>
<element name="PGPKeyPacket" type="base64Binary"/>
<any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
</choice>
</complexType>
<!-- End PGPData -->
<!-- Begin SPKIData -->
<element name="SPKIData" type="ds:SPKIDataType"/>
<complexType name="SPKIDataType">
<sequence maxOccurs="unbounded">
<element name="SPKISexp" type="base64Binary"/>
<any namespace="##other" processContents="lax" minOccurs="0"/>
</sequence>
</complexType>
<!-- End SPKIData -->
<!-- End KeyInfo -->
<!-- Start Object (Manifest, SignatureProperty) -->
<element name="Object" type="ds:ObjectType"/>
<complexType name="ObjectType" mixed="true">
<sequence minOccurs="0" maxOccurs="unbounded">
<any namespace="##any" processContents="lax"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
<attribute name="MimeType" type="string" use="optional"/> <!-- add a grep facet -->
<attribute name="Encoding" type="anyURI" use="optional"/>
</complexType>
<element name="Manifest" type="ds:ManifestType"/>
<complexType name="ManifestType">
<sequence>
<element ref="ds:Reference" maxOccurs="unbounded"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<element name="SignatureProperties" type="ds:SignaturePropertiesType"/>
<complexType name="SignaturePropertiesType">
<sequence>
<element ref="ds:SignatureProperty" maxOccurs="unbounded"/>
</sequence>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<element name="SignatureProperty" type="ds:SignaturePropertyType"/>
<complexType name="SignaturePropertyType" mixed="true">
<choice maxOccurs="unbounded">
<any namespace="##other" processContents="lax"/>
<!-- (1,1) elements from (1,unbounded) namespaces -->
</choice>
<attribute name="Target" type="anyURI" use="required"/>
<attribute name="Id" type="ID" use="optional"/>
</complexType>
<!-- End Object (Manifest, SignatureProperty) -->
<!-- Start Algorithm Parameters -->
<simpleType name="HMACOutputLengthType">
<restriction base="integer"/>
</simpleType>
<!-- Start KeyValue Element-types -->
<element name="DSAKeyValue" type="ds:DSAKeyValueType"/>
<complexType name="DSAKeyValueType">
<sequence>
<sequence minOccurs="0">
<element name="P" type="ds:CryptoBinary"/>
<element name="Q" type="ds:CryptoBinary"/>
</sequence>
<element name="G" type="ds:CryptoBinary" minOccurs="0"/>
<element name="Y" type="ds:CryptoBinary"/>
<element name="J" type="ds:CryptoBinary" minOccurs="0"/>
<sequence minOccurs="0">
<element name="Seed" type="ds:CryptoBinary"/>
<element name="PgenCounter" type="ds:CryptoBinary"/>
</sequence>
</sequence>
</complexType>
<element name="RSAKeyValue" type="ds:RSAKeyValueType"/>
<complexType name="RSAKeyValueType">
<sequence>
<element name="Modulus" type="ds:CryptoBinary"/>
<element name="Exponent" type="ds:CryptoBinary"/>
</sequence>
</complexType>
<!-- End KeyValue Element-types -->
<!-- End Signature -->
</schema>
@@ -1,446 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:epp-1.0"
xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<!--
Import common element types.
-->
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
schemaLocation="eppcom.xsd"/>
<annotation>
<documentation>
Extensible Provisioning Protocol v1.0 schema.
</documentation>
</annotation>
<!--
Every EPP XML instance must begin with this element.
-->
<element name="epp" type="epp:eppType"/>
<!--
An EPP XML instance must contain a greeting, hello, command,
response, or extension.
-->
<complexType name="eppType">
<choice>
<element name="greeting" type="epp:greetingType"/>
<element name="hello"/>
<element name="command" type="epp:commandType"/>
<element name="response" type="epp:responseType"/>
<element name="extension" type="epp:extAnyType"/>
</choice>
</complexType>
<!--
A greeting is sent by a server in response to a client connection
or <hello>.
-->
<complexType name="greetingType">
<sequence>
<element name="svID" type="epp:sIDType"/>
<element name="svDate" type="dateTime"/>
<element name="svcMenu" type="epp:svcMenuType"/>
<element name="dcp" type="epp:dcpType"/>
</sequence>
</complexType>
<!--
Server IDs are strings with minimum and maximum length restrictions.
-->
<simpleType name="sIDType">
<restriction base="normalizedString">
<minLength value="3"/>
<maxLength value="64"/>
</restriction>
</simpleType>
<!--
A server greeting identifies available object services.
-->
<complexType name="svcMenuType">
<sequence>
<element name="version" type="epp:versionType"
maxOccurs="unbounded"/>
<element name="lang" type="language"
maxOccurs="unbounded"/>
<element name="objURI" type="anyURI"
maxOccurs="unbounded"/>
<element name="svcExtension" type="epp:extURIType"
minOccurs="0"/>
</sequence>
</complexType>
<!--
Data Collection Policy types.
-->
<complexType name="dcpType">
<sequence>
<element name="access" type="epp:dcpAccessType"/>
<element name="statement" type="epp:dcpStatementType"
maxOccurs="unbounded"/>
<element name="expiry" type="epp:dcpExpiryType"
minOccurs="0"/>
</sequence>
</complexType>
<complexType name="dcpAccessType">
<choice>
<element name="all"><complexType/></element>
<element name="none"><complexType/></element>
<element name="null"><complexType/></element>
<element name="other"><complexType/></element>
<element name="personal"><complexType/></element>
<element name="personalAndOther"><complexType/></element>
</choice>
</complexType>
<complexType name="dcpStatementType">
<sequence>
<element name="purpose" type="epp:dcpPurposeType"/>
<element name="recipient" type="epp:dcpRecipientType"/>
<element name="retention" type="epp:dcpRetentionType"/>
</sequence>
</complexType>
<complexType name="dcpPurposeType">
<sequence>
<element name="admin"
minOccurs="0"><complexType/></element>
<element name="contact"
minOccurs="0"><complexType/></element>
<element name="other"
minOccurs="0"><complexType/></element>
<element name="prov"
minOccurs="0"><complexType/></element>
</sequence>
</complexType>
<complexType name="dcpRecipientType">
<sequence>
<element name="other"
minOccurs="0"><complexType/></element>
<element name="ours" type="epp:dcpOursType"
minOccurs="0" maxOccurs="unbounded"/>
<element name="public"
minOccurs="0"><complexType/></element>
<element name="same"
minOccurs="0"><complexType/></element>
<element name="unrelated"
minOccurs="0"><complexType/></element>
</sequence>
</complexType>
<complexType name="dcpOursType">
<sequence>
<element name="recDesc" type="epp:dcpRecDescType"
minOccurs="0"/>
</sequence>
</complexType>
<simpleType name="dcpRecDescType">
<restriction base="token">
<minLength value="1"/>
<maxLength value="255"/>
</restriction>
</simpleType>
<complexType name="dcpRetentionType">
<choice>
<element name="business"><complexType/></element>
<element name="indefinite"><complexType/></element>
<element name="legal"><complexType/></element>
<element name="none"><complexType/></element>
<element name="stated"><complexType/></element>
</choice>
</complexType>
<complexType name="dcpExpiryType">
<choice>
<element name="absolute" type="dateTime"/>
<element name="relative" type="duration"/>
</choice>
</complexType>
<!--
Extension framework types.
-->
<complexType name="extAnyType">
<sequence>
<any namespace="##other"
maxOccurs="unbounded"/>
</sequence>
</complexType>
<complexType name="extURIType">
<sequence>
<element name="extURI" type="anyURI"
maxOccurs="unbounded"/>
</sequence>
</complexType>
<!--
An EPP version number is a dotted pair of decimal numbers.
-->
<simpleType name="versionType">
<restriction base="token">
<pattern value="[1-9]+\.[0-9]+"/>
<enumeration value="1.0"/>
</restriction>
</simpleType>
<!--
Command types.
-->
<complexType name="commandType">
<sequence>
<choice>
<element name="check" type="epp:readWriteType"/>
<element name="create" type="epp:readWriteType"/>
<element name="delete" type="epp:readWriteType"/>
<element name="info" type="epp:readWriteType"/>
<element name="login" type="epp:loginType"/>
<element name="logout"/>
<element name="poll" type="epp:pollType"/>
<element name="renew" type="epp:readWriteType"/>
<element name="transfer" type="epp:transferType"/>
<element name="update" type="epp:readWriteType"/>
</choice>
<element name="extension" type="epp:extAnyType"
minOccurs="0"/>
<element name="clTRID" type="epp:trIDStringType"
minOccurs="0"/>
</sequence>
</complexType>
<!--
The <login> command.
-->
<complexType name="loginType">
<sequence>
<element name="clID" type="eppcom:clIDType"/>
<element name="pw" type="epp:pwType"/>
<element name="newPW" type="epp:pwType"
minOccurs="0"/>
<element name="options" type="epp:credsOptionsType"/>
<element name="svcs" type="epp:loginSvcType"/>
</sequence>
</complexType>
<complexType name="credsOptionsType">
<sequence>
<element name="version" type="epp:versionType"/>
<element name="lang" type="language"/>
</sequence>
</complexType>
<simpleType name="pwType">
<restriction base="token">
<minLength value="6"/>
<maxLength value="16"/>
</restriction>
</simpleType>
<complexType name="loginSvcType">
<sequence>
<element name="objURI" type="anyURI"
maxOccurs="unbounded"/>
<element name="svcExtension" type="epp:extURIType"
minOccurs="0"/>
</sequence>
</complexType>
<!--
The <poll> command.
-->
<complexType name="pollType">
<attribute name="op" type="epp:pollOpType"
use="required"/>
<attribute name="msgID" type="token"/>
</complexType>
<simpleType name="pollOpType">
<restriction base="token">
<enumeration value="ack"/>
<enumeration value="req"/>
</restriction>
</simpleType>
<!--
The <transfer> command. This is object-specific, and uses attributes
to identify the requested operation.
-->
<complexType name="transferType">
<sequence>
<any namespace="##other"/>
</sequence>
<attribute name="op" type="epp:transferOpType"
use="required"/>
</complexType>
<simpleType name="transferOpType">
<restriction base="token">
<enumeration value="approve"/>
<enumeration value="cancel"/>
<enumeration value="query"/>
<enumeration value="reject"/>
<enumeration value="request"/>
</restriction>
</simpleType>
<!--
All other object-centric commands. EPP doesn't specify the syntax or
semantics of object-centric command elements. The elements MUST be
described in detail in another schema specific to the object.
-->
<complexType name="readWriteType">
<sequence>
<any namespace="##other"/>
</sequence>
</complexType>
<complexType name="trIDType">
<sequence>
<element name="clTRID" type="epp:trIDStringType"
minOccurs="0"/>
<element name="svTRID" type="epp:trIDStringType"/>
</sequence>
</complexType>
<simpleType name="trIDStringType">
<restriction base="token">
<minLength value="3"/>
<maxLength value="64"/>
</restriction>
</simpleType>
<!--
Response types.
-->
<complexType name="responseType">
<sequence>
<element name="result" type="epp:resultType"
maxOccurs="unbounded"/>
<element name="msgQ" type="epp:msgQType"
minOccurs="0"/>
<element name="resData" type="epp:extAnyType"
minOccurs="0"/>
<element name="extension" type="epp:extAnyType"
minOccurs="0"/>
<element name="trID" type="epp:trIDType"/>
</sequence>
</complexType>
<complexType name="resultType">
<sequence>
<element name="msg" type="epp:msgType"/>
<choice minOccurs="0" maxOccurs="unbounded">
<element name="value" type="epp:errValueType"/>
<element name="extValue" type="epp:extErrValueType"/>
</choice>
</sequence>
<attribute name="code" type="epp:resultCodeType"
use="required"/>
</complexType>
<complexType name="errValueType" mixed="true">
<sequence>
<any namespace="##any" processContents="skip"/>
</sequence>
<anyAttribute namespace="##any" processContents="skip"/>
</complexType>
<complexType name="extErrValueType">
<sequence>
<element name="value" type="epp:errValueType"/>
<element name="reason" type="epp:msgType"/>
</sequence>
</complexType>
<complexType name="msgQType">
<sequence>
<element name="qDate" type="dateTime"
minOccurs="0"/>
<element name="msg" type="epp:mixedMsgType"
minOccurs="0"/>
</sequence>
<attribute name="count" type="unsignedLong"
use="required"/>
<attribute name="id" type="eppcom:minTokenType"
use="required"/>
</complexType>
<complexType name="mixedMsgType" mixed="true">
<sequence>
<any processContents="skip"
minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="lang" type="language"
default="en"/>
</complexType>
<!--
Human-readable text may be expressed in languages other than English.
-->
<complexType name="msgType">
<simpleContent>
<extension base="normalizedString">
<attribute name="lang" type="language"
default="en"/>
</extension>
</simpleContent>
</complexType>
<!--
EPP result codes.
-->
<simpleType name="resultCodeType">
<restriction base="unsignedShort">
<enumeration value="1000"/>
<enumeration value="1001"/>
<enumeration value="1300"/>
<enumeration value="1301"/>
<enumeration value="1500"/>
<enumeration value="2000"/>
<enumeration value="2001"/>
<enumeration value="2002"/>
<enumeration value="2003"/>
<enumeration value="2004"/>
<enumeration value="2005"/>
<enumeration value="2100"/>
<enumeration value="2101"/>
<enumeration value="2102"/>
<enumeration value="2103"/>
<enumeration value="2104"/>
<enumeration value="2105"/>
<enumeration value="2106"/>
<enumeration value="2200"/>
<enumeration value="2201"/>
<enumeration value="2202"/>
<enumeration value="2300"/>
<enumeration value="2301"/>
<enumeration value="2302"/>
<enumeration value="2303"/>
<enumeration value="2304"/>
<enumeration value="2305"/>
<enumeration value="2306"/>
<enumeration value="2307"/>
<enumeration value="2308"/>
<enumeration value="2400"/>
<enumeration value="2500"/>
<enumeration value="2501"/>
<enumeration value="2502"/>
</restriction>
</simpleType>
<!--
End of schema.
-->
</schema>
@@ -1,125 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<annotation>
<documentation>
Extensible Provisioning Protocol v1.0
shared structures schema.
</documentation>
</annotation>
<!--
Object authorization information types.
-->
<complexType name="pwAuthInfoType">
<simpleContent>
<extension base="normalizedString">
<attribute name="roid" type="eppcom:roidType"/>
</extension>
</simpleContent>
</complexType>
<complexType name="extAuthInfoType">
<sequence>
<any namespace="##other"/>
</sequence>
</complexType>
<!--
<check> response types.
-->
<complexType name="reasonType">
<simpleContent>
<extension base="eppcom:reasonBaseType">
<attribute name="lang" type="language"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="reasonBaseType">
<restriction base="token">
<minLength value="1"/>
<maxLength value="32"/>
</restriction>
</simpleType>
<!--
Abstract client and object identifier type.
-->
<simpleType name="clIDType">
<restriction base="token">
<minLength value="3"/>
<maxLength value="16"/>
</restriction>
</simpleType>
<!--
DNS label type.
-->
<simpleType name="labelType">
<restriction base="token">
<minLength value="1"/>
<maxLength value="255"/>
</restriction>
</simpleType>
<!--
Non-empty token type.
-->
<simpleType name="minTokenType">
<restriction base="token">
<minLength value="1"/>
</restriction>
</simpleType>
<!--
Repository Object IDentifier type.
-->
<simpleType name="roidType">
<restriction base="token">
<pattern value="(\w|_){1,80}-\w{1,8}"/>
</restriction>
</simpleType>
<!--
Transfer status identifiers.
-->
<simpleType name="trStatusType">
<restriction base="token">
<enumeration value="clientApproved"/>
<enumeration value="clientCancelled"/>
<enumeration value="clientRejected"/>
<enumeration value="pending"/>
<enumeration value="serverApproved"/>
<enumeration value="serverCancelled"/>
</restriction>
</simpleType>
<!--
Phone number types
-->
<complexType name="e164Type">
<simpleContent>
<extension base="eppcom:e164StringType">
<attribute name="x" type="token"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="e164StringType">
<restriction base="token">
<pattern value="(\+[0-9]{1,3}\.[0-9]{1,14})?"/>
<maxLength value="17"/>
</restriction>
</simpleType>
<!--
End of schema.
-->
</schema>
@@ -1,202 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:fee="urn:ietf:params:xml:ns:epp:fee-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
targetNamespace="urn:ietf:params:xml:ns:epp:fee-1.0"
elementFormDefault="qualified">
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" />
<import namespace="urn:ietf:params:xml:ns:domain-1.0" />
<annotation>
<documentation>
Extensible Provisioning Protocol v1.0 Fee Extension
</documentation>
</annotation>
<!-- Child elements found in EPP commands and responses -->
<element name="check" type="fee:checkType" />
<element name="chkData" type="fee:chkDataType" />
<element name="create" type="fee:transformCommandType" />
<element name="creData" type="fee:transformResultType" />
<element name="renew" type="fee:transformCommandType" />
<element name="renData" type="fee:transformResultType" />
<element name="transfer" type="fee:transformCommandType" />
<element name="trnData" type="fee:transformResultType" />
<element name="update" type="fee:transformCommandType" />
<element name="updData" type="fee:transformResultType" />
<element name="delData" type="fee:transformResultType" />
<!-- client <check> command -->
<complexType name="checkType">
<sequence>
<element name="currency" type="fee:currencyType"
minOccurs="0" />
<element name="command" type="fee:commandType"
minOccurs="1" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="objectIdentifierType">
<simpleContent>
<extension base="eppcom:labelType">
<attribute name="element"
type="NMTOKEN" default="name" />
</extension>
</simpleContent>
</complexType>
<!-- server <check> result -->
<complexType name="chkDataType">
<sequence>
<element name="currency" type="fee:currencyType" />
<element name="cd" type="fee:objectCDType"
maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="objectCDType">
<sequence>
<element name="objID" type="fee:objectIdentifierType" />
<element name="class" type="token" minOccurs="0" />
<element name="command" type="fee:commandDataType"
minOccurs="0" maxOccurs="unbounded" />
<element name="reason" type="fee:reasonType" minOccurs="0" />
</sequence>
<attribute name="avail" type="boolean" default="1" />
</complexType>
<!-- general transform (create, renew, update, transfer) command-->
<complexType name="transformCommandType">
<sequence>
<element name="currency" type="fee:currencyType"
minOccurs="0" />
<element name="fee" type="fee:feeType"
maxOccurs="unbounded" />
<element name="credit" type="fee:creditType"
minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<!-- general transform (create, renew, update) result -->
<complexType name="transformResultType">
<sequence>
<element name="currency" type="fee:currencyType"
minOccurs="0" />
<element name="period" type="domain:periodType"
minOccurs="0" />
<element name="fee" type="fee:feeType"
minOccurs="0" maxOccurs="unbounded" />
<element name="credit" type="fee:creditType"
minOccurs="0" maxOccurs="unbounded" />
<element name="balance" type="fee:balanceType"
minOccurs="0" />
<element name="creditLimit" type="fee:creditLimitType"
minOccurs="0" />
</sequence>
</complexType>
<!-- common types -->
<simpleType name="currencyType">
<restriction base="string">
<pattern value="[A-Z]{3}" />
</restriction>
</simpleType>
<complexType name="commandType">
<sequence>
<element name="period" type="domain:periodType"
minOccurs="0" maxOccurs="1" />
</sequence>
<attribute name="name" type="fee:commandEnum" use="required"/>
<attribute name="customName" type="token"/>
<attribute name="phase" type="token" />
<attribute name="subphase" type="token" />
</complexType>
<complexType name="commandDataType">
<complexContent>
<extension base="fee:commandType">
<sequence>
<element name="fee" type="fee:feeType"
minOccurs="0" maxOccurs="unbounded" />
<element name="credit" type="fee:creditType"
minOccurs="0" maxOccurs="unbounded" />
<element name="reason" type="fee:reasonType"
minOccurs="0" />
</sequence>
<attribute name="standard" type="boolean" default="0" />
</extension>
</complexContent>
</complexType>
<complexType name="reasonType">
<simpleContent>
<extension base="token">
<attribute name="lang" type="language" default="en"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="commandEnum">
<restriction base="token">
<enumeration value="create"/>
<enumeration value="delete"/>
<enumeration value="renew"/>
<enumeration value="update"/>
<enumeration value="transfer"/>
<enumeration value="restore"/>
<enumeration value="custom"/>
</restriction>
</simpleType>
<simpleType name="nonNegativeDecimal">
<restriction base="decimal">
<minInclusive value="0" />
</restriction>
</simpleType>
<simpleType name="negativeDecimal">
<restriction base="decimal">
<maxInclusive value="0" />
</restriction>
</simpleType>
<complexType name="feeType">
<simpleContent>
<extension base="fee:nonNegativeDecimal">
<attribute name="description"/>
<attribute name="lang" type="language" default="en"/>
<attribute name="refundable" type="boolean" />
<attribute name="grace-period" type="duration" />
<attribute name="applied">
<simpleType>
<restriction base="token">
<enumeration value="immediate" />
<enumeration value="delayed" />
</restriction>
</simpleType>
</attribute>
</extension>
</simpleContent>
</complexType>
<complexType name="creditType">
<simpleContent>
<extension base="fee:negativeDecimal">
<attribute name="description"/>
<attribute name="lang" type="language" default="en"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="balanceType">
<restriction base="decimal" />
</simpleType>
<simpleType name="creditLimitType">
<restriction base="decimal" />
</simpleType>
</schema>
@@ -1,239 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:fee="urn:ietf:params:xml:ns:fee-0.6"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
targetNamespace="urn:ietf:params:xml:ns:fee-0.6"
elementFormDefault="qualified">
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" />
<import namespace="urn:ietf:params:xml:ns:domain-1.0" />
<annotation>
<documentation>
Extensible Provisioning Protocol v1.0 domain name extension schema for fee information.
Downloaded from https://raw.githubusercontent.com/centralnic/epp-fee-extension/master/fee.xsd.
</documentation>
</annotation>
<!--
Child elements found in EPP commands and responses
-->
<element name="check" type="fee:checkType" />
<element name="chkData" type="fee:chkDataType" />
<element name="info" type="fee:infoType" />
<element name="infData" type="fee:infDataType" />
<element name="create" type="fee:transformCommandType" />
<element name="creData" type="fee:transformResultType" />
<element name="renew" type="fee:transformCommandType" />
<element name="renData" type="fee:transformResultType" />
<element name="transfer" type="fee:transformCommandType" />
<element name="trnData" type="fee:transferResultType" />
<element name="update" type="fee:transformCommandType" />
<element name="updData" type="fee:transformResultType" />
<element name="delData" type="fee:deleteDataType" />
<!--
client <check> command
-->
<complexType name="checkType">
<sequence>
<element name="domain" type="fee:domainCheckType"
maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="domainCheckType">
<sequence>
<element name="name" type="eppcom:labelType" />
<element name="currency" type="fee:currencyType"
minOccurs="0" />
<element name="command" type="fee:commandType" />
<element name="period" type="domain:periodType"
minOccurs="0" />
</sequence>
</complexType>
<!--
server <check> result
-->
<complexType name="chkDataType">
<sequence>
<element name="cd" type="fee:domainCDType"
maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="domainCDType">
<sequence>
<element name="name" type="eppcom:labelType" />
<element name="currency" type="fee:currencyType" />
<element name="command" type="fee:commandType" />
<element name="period" type="domain:periodType" />
<element name="fee" type="fee:feeType"
minOccurs="0" maxOccurs="unbounded" />
<element name="class" type="token" minOccurs="0" />
</sequence>
</complexType>
<!--
client <info> command
-->
<complexType name="infoType">
<sequence>
<element name="currency" type="fee:currencyType" />
<element name="command" type="fee:commandType" />
<element name="period" type="domain:periodType" />
</sequence>
</complexType>
<!--
server <info> result
-->
<complexType name="infDataType">
<sequence>
<element name="currency" type="fee:currencyType" />
<element name="command" type="fee:commandType" />
<element name="period" type="domain:periodType" />
<element name="fee" type="fee:feeType"
maxOccurs="unbounded" />
<element name="class" type="token" minOccurs="0" />
</sequence>
</complexType>
<!--
general transform (create, renew, update, transfer) command
-->
<complexType name="transformCommandType">
<sequence>
<element name="currency" type="fee:currencyType" />
<element name="fee" type="fee:feeType"
maxOccurs="unbounded" />
</sequence>
</complexType>
<!--
general transform (create, renew, update) result
-->
<complexType name="transformResultType">
<sequence>
<element name="currency" type="fee:currencyType" />
<element name="fee" type="fee:feeType"
maxOccurs="unbounded" />
<element name="balance" type="fee:balanceType"
minOccurs="0" />
<element name="creditLimit" type="fee:creditLimitType"
minOccurs="0" />
</sequence>
</complexType>
<!--
transfer result
-->
<complexType name="transferResultType">
<sequence>
<element name="currency" type="fee:currencyType" />
<!-- only used op="query" responses -->
<element name="period" type="domain:periodType"
minOccurs="0" />
<element name="fee" type="fee:feeType"
maxOccurs="unbounded" />
<element name="balance" type="fee:balanceType"
minOccurs="0" />
<element name="creditLimit" type="fee:creditLimitType"
minOccurs="0" />
</sequence>
</complexType>
<!--
delete result
-->
<complexType name="deleteDataType">
<sequence>
<element name="currency" type="fee:currencyType" />
<element name="credit" type="fee:creditType"
maxOccurs="unbounded" />
<element name="balance" type="fee:balanceType"
minOccurs="0" />
<element name="creditLimit" type="fee:creditLimitType"
minOccurs="0" />
</sequence>
</complexType>
<!--
common types
-->
<simpleType name="currencyType">
<restriction base="string">
<pattern value="[A-Z]{3}" />
</restriction>
</simpleType>
<complexType name="commandType">
<simpleContent>
<extension base="fee:commandTypeValue">
<attribute name="phase" type="token" />
<attribute name="subphase" type="token" />
</extension>
</simpleContent>
</complexType>
<simpleType name="commandTypeValue">
<restriction base="token">
<minLength value="3"/>
<maxLength value="16"/>
</restriction>
</simpleType>
<simpleType name="nonNegativeDecimal">
<restriction base="decimal">
<minInclusive value="0" />
</restriction>
</simpleType>
<simpleType name="negativeDecimal">
<restriction base="decimal">
<maxInclusive value="0" />
</restriction>
</simpleType>
<complexType name="feeType">
<simpleContent>
<extension base="fee:nonNegativeDecimal">
<attribute name="description"/>
<attribute name="refundable" type="boolean"
default="1" />
<attribute name="grace-period" type="duration"
default="P0D" />
<attribute name="applied" default="immediate">
<simpleType>
<restriction base="token">
<enumeration value="immediate" />
<enumeration value="delayed" />
</restriction>
</simpleType>
</attribute>
</extension>
</simpleContent>
</complexType>
<complexType name="creditType">
<simpleContent>
<extension base="fee:negativeDecimal">
<attribute name="description"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="balanceType">
<restriction base="decimal" />
</simpleType>
<simpleType name="creditLimitType">
<restriction base="decimal" />
</simpleType>
</schema>
@@ -1,211 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:fee="urn:ietf:params:xml:ns:fee-0.11"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
targetNamespace="urn:ietf:params:xml:ns:fee-0.11"
elementFormDefault="qualified">
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" />
<import namespace="urn:ietf:params:xml:ns:domain-1.0" />
<annotation>
<documentation>Extensible Provisioning Protocol
v1.0 extension schema for fee
information.</documentation>
</annotation>
<!--
Child elements found in EPP commands and responses
-->
<element name="check" type="fee:checkType" />
<element name="chkData" type="fee:chkDataType" />
<element name="create" type="fee:transformCommandType" />
<element name="creData" type="fee:transformResultType" />
<element name="renew" type="fee:transformCommandType" />
<element name="renData" type="fee:transformResultType" />
<element name="transfer" type="fee:transformCommandType" />
<element name="trnData" type="fee:transferResultType" />
<element name="update" type="fee:transformCommandType" />
<element name="updData" type="fee:transformResultType" />
<element name="delData" type="fee:deleteDataType" />
<!--
client <check> command
-->
<complexType name="checkType">
<sequence>
<element name="command" type="fee:commandType" />
<element name="currency" type="fee:currencyType"
minOccurs="0" />
<element name="period" type="domain:periodType"
minOccurs="0" />
<element name="class" type="token"
minOccurs="0" />
</sequence>
</complexType>
<!--
server <check> result
-->
<complexType name="chkDataType">
<sequence>
<element name="cd" type="fee:objectCDType"
maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="objectCDType">
<sequence>
<element name="object">
<complexType>
<sequence>
<any namespace="##other" processContents="lax"/>
</sequence>
</complexType>
</element>
<element name="command" type="fee:commandType" />
<element name="currency" type="fee:currencyType" />
<element name="period" type="domain:periodType"
minOccurs="0" maxOccurs="1" />
<element name="fee" type="fee:feeType"
minOccurs="0" maxOccurs="unbounded" />
<element name="credit" type="fee:creditType"
minOccurs="0" maxOccurs="unbounded" />
<element name="class" type="token" minOccurs="0" />
<element name="reason" type="token" minOccurs="0" />
</sequence>
<attribute name="avail" type="boolean" default="1" />
</complexType>
<!--
general transform (create, renew, update, transfer) command
-->
<complexType name="transformCommandType">
<sequence>
<element name="currency" type="fee:currencyType"
minOccurs="0" />
<element name="fee" type="fee:feeType"
maxOccurs="unbounded" />
<element name="credit" type="fee:creditType"
minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<!--
general transform (create, renew, update) result
-->
<complexType name="transformResultType">
<sequence>
<element name="currency" type="fee:currencyType" />
<element name="fee" type="fee:feeType"
minOccurs="0" maxOccurs="unbounded" />
<element name="credit" type="fee:creditType"
minOccurs="0" maxOccurs="unbounded" />
<element name="balance" type="fee:balanceType"
minOccurs="0" />
<element name="creditLimit" type="fee:creditLimitType"
minOccurs="0" />
</sequence>
</complexType>
<!--
transfer result
-->
<complexType name="transferResultType">
<sequence>
<element name="currency" type="fee:currencyType" />
<!-- only used op="query" responses -->
<element name="period" type="domain:periodType"
minOccurs="0" />
<element name="fee" type="fee:feeType"
maxOccurs="unbounded" />
<element name="credit" type="fee:creditType"
minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<!--
delete result
-->
<complexType name="deleteDataType">
<sequence>
<element name="currency" type="fee:currencyType" />
<element name="credit" type="fee:creditType"
minOccurs="0" maxOccurs="unbounded" />
<element name="balance" type="fee:balanceType"
minOccurs="0" />
<element name="creditLimit" type="fee:creditLimitType"
minOccurs="0" />
</sequence>
</complexType>
<!--
common types
-->
<simpleType name="currencyType">
<restriction base="string">
<pattern value="[A-Z]{3}" />
</restriction>
</simpleType>
<complexType name="commandType">
<simpleContent>
<extension base="fee:commandTypeValue">
<attribute name="phase" type="token" />
<attribute name="subphase" type="token" />
</extension>
</simpleContent>
</complexType>
<simpleType name="commandTypeValue">
<restriction base="token">
<minLength value="3"/>
<maxLength value="16"/>
</restriction>
</simpleType>
<simpleType name="nonNegativeDecimal">
<restriction base="decimal">
<minInclusive value="0" />
</restriction>
</simpleType>
<simpleType name="negativeDecimal">
<restriction base="decimal">
<maxInclusive value="0" />
</restriction>
</simpleType>
<complexType name="feeType">
<simpleContent>
<extension base="fee:nonNegativeDecimal">
<attribute name="description"/>
<attribute name="refundable" type="boolean" />
<attribute name="grace-period" type="duration" />
<attribute name="applied" default="immediate">
<simpleType>
<restriction base="token">
<enumeration value="immediate" />
<enumeration value="delayed" />
</restriction>
</simpleType>
</attribute>
</extension>
</simpleContent>
</complexType>
<complexType name="creditType">
<simpleContent>
<extension base="fee:negativeDecimal">
<attribute name="description"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="balanceType">
<restriction base="decimal" />
</simpleType>
<simpleType name="creditLimitType">
<restriction base="decimal" />
</simpleType>
</schema>
@@ -1,242 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:fee="urn:ietf:params:xml:ns:fee-0.12"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
targetNamespace="urn:ietf:params:xml:ns:fee-0.12"
elementFormDefault="qualified">
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" />
<import namespace="urn:ietf:params:xml:ns:domain-1.0" />
<annotation>
<documentation>Extensible Provisioning Protocol
v1.0 extension schema for fee
information.</documentation>
</annotation>
<!--
Child elements found in EPP commands and responses
-->
<element name="check" type="fee:checkType" />
<element name="chkData" type="fee:chkDataType" />
<element name="create" type="fee:transformCommandType" />
<element name="creData" type="fee:transformResultType" />
<element name="renew" type="fee:transformCommandType" />
<element name="renData" type="fee:transformResultType" />
<element name="transfer" type="fee:transformCommandType" />
<element name="trnData" type="fee:transferResultType" />
<element name="update" type="fee:transformCommandType" />
<element name="updData" type="fee:transformResultType" />
<element name="delData" type="fee:transformResultType" />
<!--
client <check> command
-->
<complexType name="checkType">
<sequence>
<element name="currency"
type="fee:currencyType"
minOccurs="0" />
<element name="command"
type="fee:commandCheckType"
maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="commandCheckType">
<sequence>
<element name="period"
type="domain:periodType"
minOccurs="0" />
<element name="class"
type="token"
minOccurs="0" />
<element name="date"
type="dateTime"
minOccurs="0" />
</sequence>
<attribute name="name" type="fee:commandTypeValue" />
<attribute name="phase" type="token" />
<attribute name="subphase" type="token" />
</complexType>
<!--
server <check> result
-->
<complexType name="chkDataType">
<sequence>
<!--
Dialog is ongoing with Gavin Brown about this. His XSD has a
mandatory currency field. But what if the different domains being
checked have different currencies? I am trying to figure out what
he intends here. - Brian
-->
<element name="currency" type="fee:currencyType" minOccurs="0"/>
<element name="cd" type="fee:objectCDType"
maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="objectCDType">
<sequence>
<element name="object">
<complexType>
<sequence>
<any namespace="##other" processContents="lax"/>
</sequence>
</complexType>
</element>
<element name="command"
type="fee:commandCDType"
maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="commandCDType">
<sequence>
<element name="period"
type="domain:periodType"
minOccurs="0" maxOccurs="1" />
<element name="fee"
type="fee:feeType"
minOccurs="0" maxOccurs="unbounded" />
<element name="credit"
type="fee:creditType"
minOccurs="0" maxOccurs="unbounded" />
<element name="class"
type="token"
minOccurs="0" />
<element name="reason"
type="token"
minOccurs="0" />
<element name="date"
type="dateTime"
minOccurs="0" />
<element name="notAfter"
type="dateTime"
minOccurs="0" />
</sequence>
<attribute name="avail" type="boolean" default="1" />
<attribute name="name" type="fee:commandTypeValue" />
<attribute name="phase" type="token" />
<attribute name="subphase" type="token" />
</complexType>
<!--
general transform (create, renew, update, transfer) command
-->
<complexType name="transformCommandType">
<sequence>
<element name="currency" type="fee:currencyType"
minOccurs="0" />
<element name="fee" type="fee:feeType"
maxOccurs="unbounded" />
<element name="credit" type="fee:creditType"
minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<!--
general transform (create, renew, update, delete) result
-->
<complexType name="transformResultType">
<sequence>
<element name="currency" type="fee:currencyType" />
<element name="fee" type="fee:feeType"
minOccurs="0" maxOccurs="unbounded" />
<element name="credit" type="fee:creditType"
minOccurs="0" maxOccurs="unbounded" />
<element name="balance" type="fee:balanceType"
minOccurs="0" />
<element name="creditLimit" type="fee:creditLimitType"
minOccurs="0" />
</sequence>
</complexType>
<!--
transfer result
-->
<complexType name="transferResultType">
<sequence>
<element name="currency" type="fee:currencyType" />
<!-- only used op="query" responses -->
<element name="period" type="domain:periodType"
minOccurs="0" />
<element name="fee" type="fee:feeType"
maxOccurs="unbounded" />
<element name="credit" type="fee:creditType"
minOccurs="0" maxOccurs="unbounded" />
<element name="balance" type="fee:balanceType"
minOccurs="0" />
<element name="creditLimit" type="fee:creditLimitType"
minOccurs="0" />
</sequence>
</complexType>
<!--
common types
-->
<simpleType name="currencyType">
<restriction base="string">
<pattern value="[A-Z]{3}" />
</restriction>
</simpleType>
<simpleType name="commandTypeValue">
<restriction base="token">
<minLength value="3"/>
<maxLength value="16"/>
</restriction>
</simpleType>
<simpleType name="nonNegativeDecimal">
<restriction base="decimal">
<minInclusive value="0" />
</restriction>
</simpleType>
<simpleType name="negativeDecimal">
<restriction base="decimal">
<maxInclusive value="0" />
</restriction>
</simpleType>
<complexType name="feeType">
<simpleContent>
<extension base="fee:nonNegativeDecimal">
<attribute name="description"/>
<attribute name="refundable" type="boolean" />
<attribute name="grace-period" type="duration" />
<attribute name="applied" default="immediate">
<simpleType>
<restriction base="token">
<enumeration value="immediate" />
<enumeration value="delayed" />
</restriction>
</simpleType>
</attribute>
</extension>
</simpleContent>
</complexType>
<complexType name="creditType">
<simpleContent>
<extension base="fee:negativeDecimal">
<attribute name="description"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="balanceType">
<restriction base="decimal" />
</simpleType>
<simpleType name="creditLimitType">
<restriction base="decimal" />
</simpleType>
</schema>
@@ -1,242 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:host-1.0"
xmlns:host="urn:ietf:params:xml:ns:host-1.0"
xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<!--
Import common element types.
-->
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
schemaLocation="eppcom.xsd"/>
<import namespace="urn:ietf:params:xml:ns:epp-1.0"
schemaLocation="epp.xsd"/>
<annotation>
<documentation>
Extensible Provisioning Protocol v1.0
host provisioning schema.
</documentation>
</annotation>
<!--
Child elements found in EPP commands.
-->
<element name="check" type="host:mNameType"/>
<element name="create" type="host:createType"/>
<element name="delete" type="host:sNameType"/>
<element name="info" type="host:sNameType"/>
<element name="update" type="host:updateType"/>
<!--
Child elements of the <create> command.
-->
<complexType name="createType">
<sequence>
<element name="name" type="eppcom:labelType"/>
<element name="addr" type="host:addrType"
minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<complexType name="addrType">
<simpleContent>
<extension base="host:addrStringType">
<attribute name="ip" type="host:ipType"
default="v4"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="addrStringType">
<restriction base="token">
<minLength value="3"/>
<maxLength value="45"/>
</restriction>
</simpleType>
<simpleType name="ipType">
<restriction base="token">
<enumeration value="v4"/>
<enumeration value="v6"/>
</restriction>
</simpleType>
<!--
Child elements of the <delete> and <info> commands.
-->
<complexType name="sNameType">
<sequence>
<element name="name" type="eppcom:labelType"/>
</sequence>
</complexType>
<!--
Child element of commands that accept multiple names.
-->
<complexType name="mNameType">
<sequence>
<element name="name" type="eppcom:labelType"
maxOccurs="unbounded"/>
</sequence>
</complexType>
<!--
Child elements of the <update> command.
-->
<complexType name="updateType">
<sequence>
<element name="name" type="eppcom:labelType"/>
<element name="add" type="host:addRemType"
minOccurs="0"/>
<element name="rem" type="host:addRemType"
minOccurs="0"/>
<element name="chg" type="host:chgType"
minOccurs="0"/>
</sequence>
</complexType>
<!--
Data elements that can be added or removed.
-->
<complexType name="addRemType">
<sequence>
<element name="addr" type="host:addrType"
minOccurs="0" maxOccurs="unbounded"/>
<element name="status" type="host:statusType"
minOccurs="0" maxOccurs="7"/>
</sequence>
</complexType>
<!--
Data elements that can be changed.
-->
<complexType name="chgType">
<sequence>
<element name="name" type="eppcom:labelType"/>
</sequence>
</complexType>
<!--
Child response elements.
-->
<element name="chkData" type="host:chkDataType"/>
<element name="creData" type="host:creDataType"/>
<element name="infData" type="host:infDataType"/>
<element name="panData" type="host:panDataType"/>
<!--
<check> response elements.
-->
<complexType name="chkDataType">
<sequence>
<element name="cd" type="host:checkType"
maxOccurs="unbounded"/>
</sequence>
</complexType>
<complexType name="checkType">
<sequence>
<element name="name" type="host:checkNameType"/>
<element name="reason" type="eppcom:reasonType"
minOccurs="0"/>
</sequence>
</complexType>
<complexType name="checkNameType">
<simpleContent>
<extension base="eppcom:labelType">
<attribute name="avail" type="boolean"
use="required"/>
</extension>
</simpleContent>
</complexType>
<!--
<create> response elements.
-->
<complexType name="creDataType">
<sequence>
<element name="name" type="eppcom:labelType"/>
<element name="crDate" type="dateTime"/>
</sequence>
</complexType>
<!--
<info> response elements.
-->
<complexType name="infDataType">
<sequence>
<element name="name" type="eppcom:labelType"/>
<element name="roid" type="eppcom:roidType"/>
<element name="status" type="host:statusType"
maxOccurs="7"/>
<element name="addr" type="host:addrType"
minOccurs="0" maxOccurs="unbounded"/>
<element name="clID" type="eppcom:clIDType"/>
<element name="crID" type="eppcom:clIDType"/>
<element name="crDate" type="dateTime"/>
<element name="upID" type="eppcom:clIDType"
minOccurs="0"/>
<element name="upDate" type="dateTime"
minOccurs="0"/>
<element name="trDate" type="dateTime"
minOccurs="0"/>
</sequence>
</complexType>
<!--
Status is a combination of attributes and an optional human-readable
message that may be expressed in languages other than English.
-->
<complexType name="statusType">
<simpleContent>
<extension base="normalizedString">
<attribute name="s" type="host:statusValueType"
use="required"/>
<attribute name="lang" type="language"
default="en"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="statusValueType">
<restriction base="token">
<enumeration value="clientDeleteProhibited"/>
<enumeration value="clientUpdateProhibited"/>
<enumeration value="linked"/>
<enumeration value="ok"/>
<enumeration value="pendingCreate"/>
<enumeration value="pendingDelete"/>
<enumeration value="pendingTransfer"/>
<enumeration value="pendingUpdate"/>
<enumeration value="serverDeleteProhibited"/>
<enumeration value="serverUpdateProhibited"/>
</restriction>
</simpleType>
<!--
Pending action notification response elements.
-->
<complexType name="panDataType">
<sequence>
<element name="name" type="host:paNameType"/>
<element name="paTRID" type="epp:trIDType"/>
<element name="paDate" type="dateTime"/>
</sequence>
</complexType>
<complexType name="paNameType">
<simpleContent>
<extension base="eppcom:labelType">
<attribute name="paResult" type="boolean"
use="required"/>
</extension>
</simpleContent>
</complexType>
<!--
End of schema.
-->
</schema>
@@ -1,35 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:iirdea-1.0"
xmlns:iirdea="urn:ietf:params:xml:ns:iirdea-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<annotation>
<documentation>
ICANN interfaces for registries and data escrow agents
</documentation>
</annotation>
<element name="response" type="iirdea:responseType"/>
<complexType name="responseType">
<sequence>
<element name="result" type="iirdea:resultType"/>
</sequence>
</complexType>
<complexType name="resultType">
<sequence>
<element name="msg" type="token"/>
<element name="description" type="string" minOccurs="0"/>
</sequence>
<attribute name="code" type="iirdea:codeType" use="required"/>
</complexType>
<simpleType name="codeType">
<restriction base="unsignedShort">
<minInclusive value="1000"/>
<maxInclusive value="9999"/>
</restriction>
</simpleType>
</schema>
@@ -1,246 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:launch-1.0" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0"
xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<!-- Import common element types. -->
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemaLocation="eppcom.xsd" />
<import namespace="urn:ietf:params:xml:ns:mark-1.0" schemaLocation="mark.xsd" />
<import namespace="urn:ietf:params:xml:ns:signedMark-1.0" schemaLocation="smd.xsd" />
<annotation>
<documentation>
Extensible Provisioning Protocol v1.0
domain name extension
schema
for the launch phase processing.
</documentation>
</annotation>
<!-- Child elements found in EPP commands. -->
<element name="check" type="launch:checkType" />
<element name="info" type="launch:infoType" />
<element name="create" type="launch:createType" />
<element name="update" type="launch:idContainerType" />
<element name="delete" type="launch:idContainerType" />
<!-- Common container of id (identifier) element -->
<complexType name="idContainerType">
<sequence>
<element name="phase" type="launch:phaseType" />
<element name="applicationID" type="launch:applicationIDType" />
</sequence>
</complexType>
<!-- Definition for application identifier -->
<simpleType name="applicationIDType">
<restriction base="token" />
</simpleType>
<!-- Definition for launch phase. Name is an optional attribute used to extend
the phase type. For example, when using the phase type value of &qt;custom&gt;, the
name can be used to specify the custom phase. -->
<complexType name="phaseType">
<simpleContent>
<extension base="launch:phaseTypeValue">
<attribute name="name" type="token" />
</extension>
</simpleContent>
</complexType>
<!-- Enumeration of for launch phase values. -->
<simpleType name="phaseTypeValue">
<restriction base="token">
<enumeration value="sunrise" />
<enumeration value="landrush" />
<enumeration value="claims" />
<enumeration value="open" />
<enumeration value="custom" />
</restriction>
</simpleType>
<!-- Definition for the sunrise code -->
<simpleType name="codeValue">
<restriction base="token">
<minLength value="1" />
</restriction>
</simpleType>
<complexType name="codeType">
<simpleContent>
<extension base="launch:codeValue">
<attribute name="validatorID" type="launch:validatorIDType"
use="optional" />
</extension>
</simpleContent>
</complexType>
<!-- Definition for the notice identifier -->
<simpleType name="noticeIDValue">
<restriction base="token">
<minLength value="1" />
</restriction>
</simpleType>
<complexType name="noticeIDType">
<simpleContent>
<extension base="launch:noticeIDValue">
<attribute name="validatorID" type="launch:validatorIDType"
use="optional" />
</extension>
</simpleContent>
</complexType>
<!-- Definition for the validator identifier -->
<simpleType name="validatorIDType">
<restriction base="token">
<minLength value="1" />
</restriction>
</simpleType>
<!-- Possible status values for sunrise application -->
<simpleType name="statusValueType">
<restriction base="token">
<enumeration value="pendingValidation" />
<enumeration value="validated" />
<enumeration value="invalid" />
<enumeration value="pendingAllocation" />
<enumeration value="allocated" />
<enumeration value="rejected" />
<enumeration value="custom" />
</restriction>
</simpleType>
<!-- Status type definition -->
<complexType name="statusType">
<simpleContent>
<extension base="normalizedString">
<attribute name="s" type="launch:statusValueType" use="required" />
<attribute name="lang" type="language" default="en" />
<attribute name="name" type="token" />
</extension>
</simpleContent>
</complexType>
<!-- codeMark Type that contains an optional code with mark information. -->
<complexType name="codeMarkType">
<sequence>
<element name="code" type="launch:codeType" minOccurs="0" />
<element ref="mark:abstractMark" minOccurs="0" />
</sequence>
</complexType>
<!-- Child elements for the create command -->
<complexType name="createType">
<sequence>
<element name="phase" type="launch:phaseType" />
<choice minOccurs="0">
<element name="codeMark" type="launch:codeMarkType" maxOccurs="unbounded" />
<element ref="smd:abstractSignedMark" maxOccurs="unbounded" />
<element ref="smd:encodedSignedMark" maxOccurs="unbounded" />
</choice>
<element name="notice" minOccurs="0" type="launch:createNoticeType" />
</sequence>
<attribute name="type" type="launch:objectType" />
</complexType>
<!-- Type of launch object -->
<simpleType name="objectType">
<restriction base="token">
<enumeration value="application" />
<enumeration value="registration" />
</restriction>
</simpleType>
<!-- Child elements of the create notice element. -->
<complexType name="createNoticeType">
<sequence>
<element name="noticeID" type="launch:noticeIDType" />
<element name="notAfter" type="dateTime" />
<element name="acceptedDate" type="dateTime" />
</sequence>
</complexType>
<!-- Child elements of check (Claims Check Command). -->
<complexType name="checkType">
<sequence>
<element name="phase" type="launch:phaseType" />
</sequence>
<attribute name="type" type="launch:checkFormType" default="claims" />
</complexType>
<!-- Type of check form (claims check or availability check) -->
<simpleType name="checkFormType">
<restriction base="token">
<enumeration value="claims" />
<enumeration value="avail" />
</restriction>
</simpleType>
<!-- Child elements of info command. -->
<complexType name="infoType">
<sequence>
<element name="phase" type="launch:phaseType" />
<element name="applicationID" type="launch:applicationIDType"
minOccurs="0" />
</sequence>
<attribute name="includeMark" type="boolean" default="false" />
</complexType>
<!-- Child response elements. -->
<element name="chkData" type="launch:chkDataType" />
<element name="creData" type="launch:idContainerType" />
<element name="infData" type="launch:infDataType" />
<!-- <check> response elements. -->
<complexType name="chkDataType">
<sequence>
<element name="phase" type="launch:phaseType" />
<element name="cd" type="launch:cdType" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="cdType">
<sequence>
<element name="name" type="launch:cdNameType" />
<element name="claimKey" type="launch:claimKeyType" minOccurs="0" />
</sequence>
</complexType>
<complexType name="cdNameType">
<simpleContent>
<extension base="eppcom:labelType">
<attribute name="exists" type="boolean" use="required" />
</extension>
</simpleContent>
</complexType>
<complexType name="claimKeyType">
<simpleContent>
<extension base="token">
<attribute name="validatorID" type="launch:validatorIDType"
use="optional" />
</extension>
</simpleContent>
</complexType>
<!-- <info> response elements -->
<complexType name="infDataType">
<sequence>
<element name="phase" type="launch:phaseType" />
<element name="applicationID" type="launch:applicationIDType"
minOccurs="0" />
<element name="status" type="launch:statusType" minOccurs="0" />
<element ref="mark:abstractMark" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</schema>
@@ -1,246 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Schema extracted from http://tools.ietf.org/html/draft-lozano-tmch-smd -->
<schema
targetNamespace="urn:ietf:params:xml:ns:mark-1.0"
xmlns:mark="urn:ietf:params:xml:ns:mark-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<annotation>
<documentation>
Schema for representing a Trademark, also referred to
as Mark.
</documentation>
</annotation>
<!--
Abstract mark for replacement via substitution.
-->
<element name="abstractMark" type="mark:abstractMarkType"
abstract="true"/>
<!--
<mark:mark> element definition
-->
<element name="mark" type="mark:markType"
substitutionGroup="mark:abstractMark"/>
<!--
Empty type for use in extending for a mark
-->
<complexType name="abstractMarkType"/>
<!--
<mark:mark> child elements
-->
<complexType name="markType">
<complexContent>
<extension base="mark:abstractMarkType">
<sequence>
<element name="trademark" type="mark:trademarkType"
minOccurs="0" maxOccurs="unbounded"/>
<element name="treatyOrStatute"
type="mark:treatyOrStatuteType" minOccurs="0"
maxOccurs="unbounded"/>
<element name="court" type="mark:courtType" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="holderType">
<sequence>
<element name="name" type="token" minOccurs="0"/>
<element name="org" type="token" minOccurs="0"/>
<element name="addr" type="mark:addrType"/>
<element name="voice" type="mark:e164Type" minOccurs="0"/>
<element name="fax" type="mark:e164Type" minOccurs="0"/>
<element name="email" type="mark:minTokenType" minOccurs="0"/>
</sequence>
<attribute name="entitlement" type="mark:entitlementType"/>
</complexType>
<complexType name="contactType">
<sequence>
<element name="name" type="token"/>
<element name="org" type="token" minOccurs="0"/>
<element name="addr" type="mark:addrType"/>
<element name="voice" type="mark:e164Type"/>
<element name="fax" type="mark:e164Type" minOccurs="0"/>
<element name="email" type="mark:minTokenType"/>
</sequence>
<attribute name="type" type="mark:contactTypeType"/>
</complexType>
<complexType name="trademarkType">
<sequence>
<element name="id" type="mark:idType"/>
<element name="markName" type="token"/>
<element name="holder" type="mark:holderType"
maxOccurs="unbounded" />
<element name="contact" type="mark:contactType" minOccurs="0"
maxOccurs="unbounded"/>
<element name="jurisdiction" type="mark:ccType"/>
<element name="class" type="integer" minOccurs="0"
maxOccurs="unbounded"/>
<element name="label" type="mark:labelType" minOccurs="0"
maxOccurs="unbounded"/>
<element name="goodsAndServices" type="token" />
<element name="apId" type="token" minOccurs="0"/>
<element name="apDate" type="dateTime" minOccurs="0"/>
<element name="regNum" type="token"/>
<element name="regDate" type="dateTime"/>
<element name="exDate" type="dateTime" minOccurs="0"/>
</sequence>
</complexType>
<complexType name="treatyOrStatuteType">
<sequence>
<element name="id" type="mark:idType"/>
<element name="markName" type="token"/>
<element name="holder" type="mark:holderType"
maxOccurs="unbounded" />
<element name="contact" type="mark:contactType" minOccurs="0"
maxOccurs="unbounded"/>
<element name="protection" type="mark:protectionType"
maxOccurs="unbounded"/>
<element name="label" type="mark:labelType" minOccurs="0"
maxOccurs="unbounded"/>
<element name="goodsAndServices" type="token" />
<element name="refNum" type="token"/>
<element name="proDate" type="dateTime"/>
<element name="title" type="token"/>
<element name="execDate" type="dateTime"/>
</sequence>
</complexType>
<complexType name="courtType">
<sequence>
<element name="id" type="mark:idType"/>
<element name="markName" type="token"/>
<element name="holder" type="mark:holderType"
maxOccurs="unbounded" />
<element name="contact" type="mark:contactType" minOccurs="0"
maxOccurs="unbounded"/>
<element name="label" type="mark:labelType" minOccurs="0"
maxOccurs="unbounded"/>
<element name="goodsAndServices" type="token" />
<element name="refNum" type="token"/>
<element name="proDate" type="dateTime"/>
<element name="cc" type="mark:ccType"/>
<element name="region" type="token" minOccurs="0"
maxOccurs="unbounded"/>
<element name="courtName" type="token"/>
</sequence>
</complexType>
<!--
Address (<mark:addr>) child elements
-->
<complexType name="addrType">
<sequence>
<element name="street" type="token" minOccurs="1" maxOccurs="3"/>
<element name="city" type="token"/>
<element name="sp" type="token" minOccurs="0"/>
<element name="pc" type="mark:pcType" minOccurs="0"/>
<element name="cc" type="mark:ccType"/>
</sequence>
</complexType>
<!--
<mark:protection> child elements
-->
<complexType name="protectionType">
<sequence>
<element name="cc" type="mark:ccType"/>
<element name="region" type="token" minOccurs="0"/>
<element name="ruling" type="mark:ccType"
minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!--
Postal code definition
-->
<simpleType name="pcType">
<restriction base="token">
<maxLength value="16"/>
</restriction>
</simpleType>
<!--
Country code definition
-->
<simpleType name="ccType">
<restriction base="token">
<length value="2"/>
</restriction>
</simpleType>
<!--
Phone number with extension definition
-->
<complexType name="e164Type">
<simpleContent>
<extension base="mark:e164StringType">
<attribute name="x" type="token"/>
</extension>
</simpleContent>
</complexType>
<!--
Phone number with extension definition
-->
<simpleType name="e164StringType">
<restriction base="token">
<pattern value="(\+[0-9]{1,3}\.[0-9]{1,14})?"/>
<maxLength value="17"/>
</restriction>
</simpleType>
<!--
Id type definition
-->
<simpleType name="idType">
<restriction base="token">
<pattern value="\d+-\d+"/>
</restriction>
</simpleType>
<!--
DNS label type definition
-->
<simpleType name="labelType">
<restriction base="token">
<minLength value="1"/>
<maxLength value="63"/>
<pattern value="[a-zA-Z0-9]([a-zA-Z0-9\-]*[a-zA-Z0-9])?"/>
</restriction>
</simpleType>
<!--
Type used for email addresses
-->
<simpleType name="minTokenType">
<restriction base="token">
<minLength value="1"/>
</restriction>
</simpleType>
<simpleType name="entitlementType">
<restriction base="token">
<enumeration value="owner"/>
<enumeration value="assignee"/>
<enumeration value="licensee"/>
</restriction>
</simpleType>
<simpleType name="contactTypeType">
<restriction base="token">
<enumeration value="owner"/>
<enumeration value="agent"/>
<enumeration value="thirdparty"/>
</restriction>
</simpleType>
</schema>
@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:metadata="urn:google:params:xml:ns:metadata-1.0"
targetNamespace="urn:google:params:xml:ns:metadata-1.0" elementFormDefault="qualified">
<annotation>
<documentation>
Extensible Provisioning Protocol v1.0
Domain name extension schema for annotating EPP operations with metadata.
This is a proprietary, internal-only, non-public extension only for use
inside the Google registry.
</documentation>
</annotation>
<!-- Child elements found in EPP commands. -->
<element name="metadata" type="metadata:metadata" />
<!-- Child elements for all commands -->
<complexType name="metadata">
<all>
<element name="reason" type="string" minOccurs="0" />
<element name="requestedByRegistrar" type="boolean" minOccurs="1" />
<element name="anchorTenant" type="boolean" minOccurs="0" default="false" />
</all>
</complexType>
</schema>
@@ -1,121 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:rdeDomain-1.0"
xmlns:rdeDomain="urn:ietf:params:xml:ns:rdeDomain-1.0"
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
xmlns:rdeIDN="urn:ietf:params:xml:ns:rdeIDN-1.0"
xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1"
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
schemaLocation="eppcom.xsd"/>
<import namespace="urn:ietf:params:xml:ns:domain-1.0"
schemaLocation="domain.xsd"/>
<import namespace="urn:ietf:params:xml:ns:secDNS-1.1"
schemaLocation="secdns.xsd"/>
<import namespace="urn:ietf:params:xml:ns:rgp-1.0"
schemaLocation="rgp.xsd"/>
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
schemaLocation="rde.xsd"/>
<import namespace="urn:ietf:params:xml:ns:rdeIDN-1.0"
schemaLocation="rde-idn.xsd"/>
<annotation>
<documentation>
Registry Data Escrow Domain provisioning schema
</documentation>
</annotation>
<element name="abstractDomain"
type="rdeDomain:abstractContentType"
substitutionGroup="rde:content" abstract="true"/>
<element name="domain"
substitutionGroup="rdeDomain:abstractDomain"/>
<element name="delete"
type="rdeDomain:deleteType"
substitutionGroup="rde:delete"/>
<!-- Content Type -->
<complexType name="abstractContentType">
<complexContent>
<extension base="rde:contentType">
<sequence>
<element name="name"
type="eppcom:labelType"/>
<element name="roid"
type="eppcom:roidType"/>
<element name="uName"
type="eppcom:labelType" minOccurs="0"/>
<element name="idnTableId"
type="rdeIDN:idType" minOccurs="0"/>
<element name="originalName"
type="eppcom:labelType" minOccurs="0"/>
<element name="status"
type="domain:statusType" maxOccurs="11"/>
<element name="rgpStatus"
type="rgp:statusType" minOccurs="0"
maxOccurs="unbounded"/>
<element name="registrant"
type="eppcom:clIDType" minOccurs="0"/>
<element name="contact"
type="domain:contactType"
minOccurs="0" maxOccurs="unbounded"/>
<element name="ns"
type="domain:nsType" minOccurs="0"/>
<element name="clID"
type="eppcom:clIDType"/>
<element name="crRr"
type="rde:rrType"/>
<element name="crDate"
type="dateTime" minOccurs="0"/>
<element name="exDate"
type="dateTime" minOccurs="0"/>
<element name="upRr"
type="rde:rrType" minOccurs="0"/>
<element name="upDate"
type="dateTime" minOccurs="0"/>
<element name="secDNS"
type="secDNS:dsOrKeyType" minOccurs="0"/>
<element name="trDate"
type="dateTime" minOccurs="0"/>
<element name="trnData"
type="rdeDomain:transferDataType"
minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="transferDataType">
<sequence>
<element name="trStatus"
type="eppcom:trStatusType"/>
<element name="reRr"
type="rde:rrType"/>
<element name="reDate"
type="dateTime"/>
<element name="acRr"
type="rde:rrType"/>
<element name="acDate"
type="dateTime"/>
<element name="exDate"
type="dateTime" minOccurs="0"/>
</sequence>
</complexType>
<!-- Delete Type -->
<complexType name="deleteType">
<complexContent>
<extension base="rde:deleteType">
<sequence>
<element name="name"
type="eppcom:labelType" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
</schema>
@@ -1,50 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:rdeEppParams-1.0"
xmlns:rdeEppParams="urn:ietf:params:xml:ns:rdeEppParams-1.0"
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<import namespace="urn:ietf:params:xml:ns:epp-1.0"
schemaLocation="epp.xsd"/>
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
schemaLocation="eppcom.xsd"/>
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
schemaLocation="rde.xsd"/>
<annotation>
<documentation>
Registry Data Escrow EPP Parameters schema
</documentation>
</annotation>
<!-- Content Type -->
<element name="eppParams"
substitutionGroup="rdeEppParams:abstractEppParams"/>
<!-- Abstract Content Type -->
<element name="abstractEppParams"
type="rdeEppParams:abstractContentType"
substitutionGroup="rde:content" abstract="true"/>
<complexType name="abstractContentType">
<complexContent>
<extension base="rde:contentType">
<sequence>
<element name="version" type="epp:versionType"
maxOccurs="unbounded"/>
<element name="lang"
type="language" maxOccurs="unbounded"/>
<element name="objURI"
type="anyURI" maxOccurs="unbounded"/>
<element name="svcExtension"
type="epp:extURIType"
minOccurs="0"/>
<element name="dcp"
type="epp:dcpType"/>
</sequence>
</extension>
</complexContent>
</complexType>
</schema>
@@ -1,44 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:rdeHeader-1.0"
xmlns:rdeHeader="urn:ietf:params:xml:ns:rdeHeader-1.0"
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
schemaLocation="eppcom.xsd"/>
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
schemaLocation="rde.xsd"/>
<annotation>
<documentation>
Registry Data Escrow Header schema
</documentation>
</annotation>
<!-- Root Element -->
<element name="header" type="rdeHeader:contentType"
substitutionGroup="rde:content"/>
<!-- Content Type -->
<complexType name="contentType">
<complexContent>
<extension base="rde:contentType">
<sequence>
<element name="tld" type="eppcom:labelType"/>
<element name="count" type="rdeHeader:countType"
maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="countType">
<simpleContent>
<extension base="long">
<attribute name="uri" type="anyURI"/>
</extension>
</simpleContent>
</complexType>
</schema>
@@ -1,73 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:rdeHost-1.0"
xmlns:rdeHost="urn:ietf:params:xml:ns:rdeHost-1.0"
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
xmlns:host="urn:ietf:params:xml:ns:host-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
schemaLocation="eppcom.xsd"/>
<import namespace="urn:ietf:params:xml:ns:host-1.0"
schemaLocation="host.xsd"/>
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
schemaLocation="rde.xsd"/>
<annotation>
<documentation>
Registry Data Escrow Host provisioning schema
</documentation>
</annotation>
<element name="abstractHost" type="rdeHost:abstractContentType"
substitutionGroup="rde:content" abstract="true"/>
<element name="host" substitutionGroup="rdeHost:abstractHost" />
<element name="delete" type="rdeHost:deleteType"
substitutionGroup="rde:delete"/>
<!-- Content Type -->
<complexType name="abstractContentType">
<complexContent>
<extension base="rde:contentType">
<sequence>
<element name="name"
type="eppcom:labelType"/>
<element name="roid"
type="eppcom:roidType"/>
<element name="status"
type="host:statusType" maxOccurs="7"/>
<element name="addr"
type="host:addrType" minOccurs="0"
maxOccurs="unbounded"/>
<element name="clID"
type="eppcom:clIDType"/>
<element name="crRr"
type="rde:rrType"/>
<element name="crDate"
type="dateTime"/>
<element name="upRr"
type="rde:rrType" minOccurs="0"/>
<element name="upDate"
type="dateTime" minOccurs="0"/>
<element name="trDate"
type="dateTime" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- Delete Type -->
<complexType name="deleteType">
<complexContent>
<extension base="rde:deleteType">
<choice minOccurs="0" maxOccurs="unbounded">
<element name="name"
type="eppcom:labelType"/>
<element name="roid"
type="eppcom:roidType"/>
</choice>
</extension>
</complexContent>
</complexType>
</schema>
@@ -1,53 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:rdeIDN-1.0"
xmlns:rdeIDN="urn:ietf:params:xml:ns:rdeIDN-1.0"
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
schemaLocation="rde.xsd"/>
<annotation>
<documentation>
Registry Data Escrow IDN provisioning schema
</documentation>
</annotation>
<element name="idnTableRef" type="rdeIDN:contentType"
substitutionGroup="rde:content"/>
<element name="delete" type="rdeIDN:deleteType"
substitutionGroup="rde:delete"/>
<!-- Content Types -->
<complexType name="contentType">
<complexContent>
<extension base="rde:contentType">
<sequence>
<element name="url" type="anyURI"/>
<element name="urlPolicy" type="anyURI"/>
</sequence>
<attribute name="id" type="rdeIDN:idType" use="required"/>
</extension>
</complexContent>
</complexType>
<complexType name="deleteType">
<complexContent>
<extension base="rde:deleteType">
<sequence>
<element name="id" type="rdeIDN:idType"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- Simple Types -->
<simpleType name="idType">
<restriction base="token">
<minLength value="1"/>
<maxLength value="64"/>
</restriction>
</simpleType>
</schema>
@@ -1,80 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:rdeNNDN-1.0"
xmlns:rdeNNDN="urn:ietf:params:xml:ns:rdeNNDN-1.0"
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
xmlns:rdeIDN="urn:ietf:params:xml:ns:rdeIDN-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
schemaLocation="eppcom.xsd"/>
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
schemaLocation="rde.xsd"/>
<import namespace="urn:ietf:params:xml:ns:rdeIDN-1.0"
schemaLocation="rde-idn.xsd"/>
<annotation>
<documentation>
Registry Data Escrow NNDN provisioning schema
</documentation>
</annotation>
<element name="abstractNNDN" type="rdeNNDN:abstractContentType"
substitutionGroup="rde:content" abstract="true"/>
<element name="NNDN" substitutionGroup="rdeNNDN:abstractNNDN"/>
<element name="delete" type="rdeNNDN:deleteType"
substitutionGroup="rde:delete"/>
<!-- Content Type -->
<complexType name="abstractContentType">
<complexContent>
<extension base="rde:contentType">
<sequence>
<element name="aName"
type="eppcom:labelType"/>
<element name="uName"
type="eppcom:labelType" minOccurs="0"/>
<element name="idnTableId"
type="rdeIDN:idType" minOccurs="0"/>
<element name="originalName"
type="eppcom:labelType" minOccurs="0"/>
<element name="nameState"
type="rdeNNDN:nameState"/>
<element name="crDate"
type="dateTime"/>
</sequence>
</extension>
</complexContent>
</complexType>
<simpleType name="nameStateValue">
<restriction base="token">
<enumeration value="withheld" />
<enumeration value="blocked" />
<enumeration value="mirrored" />
</restriction>
</simpleType>
<complexType name="nameState">
<simpleContent>
<extension base="rdeNNDN:nameStateValue">
<attribute name="mirroringNS"
type="boolean" default="true"/>
</extension>
</simpleContent>
</complexType>
<!-- Delete Type -->
<complexType name="deleteType">
<complexContent>
<extension base="rde:deleteType">
<sequence>
<element name="aName"
type="eppcom:labelType" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
</schema>
@@ -1,48 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:rdeNotification-1.0"
xmlns:rdeNotification="urn:ietf:params:xml:ns:rdeNotification-1.0"
xmlns:rdeReport="urn:ietf:params:xml:ns:rdeReport-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<import namespace="urn:ietf:params:xml:ns:rdeReport-1.0"
schemaLocation="rde-report.xsd"/>
<annotation>
<documentation>
Registry Data Escrow Notification schema
</documentation>
</annotation>
<!-- Root Element -->
<element name="notification" type="rdeNotification:notificationType"/>
<!-- Notification -->
<complexType name="notificationType">
<sequence>
<element name="deaName" type="rdeNotification:nameType"/>
<element name="version" type="unsignedShort"/>
<element name="repDate" type="date"/>
<element name="status" type="rdeNotification:statusType"/>
<element name="reDate" type="dateTime" minOccurs="0"/>
<element name="vaDate" type="dateTime" minOccurs="0"/>
<element name="lastFullDate" type="date" minOccurs="0"/>
<element ref="rdeReport:report" minOccurs="0"/>
</sequence>
</complexType>
<simpleType name="nameType">
<restriction base="normalizedString">
<minLength value="1" />
<maxLength value="255" />
</restriction>
</simpleType>
<simpleType name="statusType">
<restriction base="token">
<enumeration value="DVPN"/>
<enumeration value="DVFN"/>
<enumeration value="DRFN"/>
</restriction>
</simpleType>
</schema>
@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:rdePolicy-1.0"
xmlns:rdePolicy="urn:ietf:params:xml:ns:rdePolicy-1.0"
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
schemaLocation="rde.xsd"/>
<annotation>
<documentation>
Registry Data Escrow Policy schema
</documentation>
</annotation>
<element name="policy" type="rdePolicy:policyType"
substitutionGroup="rde:content"/>
<complexType name="policyType">
<complexContent>
<extension base="rde:contentType">
<attribute name="scope" type="token" use="required"/>
<attribute name="element" type="anyURI" use="required"/>
</extension>
</complexContent>
</complexType>
</schema>
@@ -1,162 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:rdeRegistrar-1.0"
xmlns:rdeRegistrar="urn:ietf:params:xml:ns:rdeRegistrar-1.0"
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<!-- Import common element types. -->
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
schemaLocation="eppcom.xsd"/>
<import namespace="urn:ietf:params:xml:ns:domain-1.0"
schemaLocation="domain.xsd"/>
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
schemaLocation="rde.xsd"/>
<annotation>
<documentation>
Registry Data Escrow registrar provisioning schema
</documentation>
</annotation>
<element name="abstractRegistrar"
type="rdeRegistrar:abstractContentType"
substitutionGroup="rde:content" abstract="true"/>
<element name="registrar"
substitutionGroup="rdeRegistrar:abstractRegistrar"/>
<element name="delete" type="rdeRegistrar:deleteType"
substitutionGroup="rde:delete"/>
<!-- Content Type -->
<complexType name="abstractContentType">
<complexContent>
<extension base="rde:contentType">
<sequence>
<element name="id"
type="eppcom:clIDType"/>
<element name="name"
type="rdeRegistrar:nameType"/>
<element name="gurid"
type="positiveInteger" minOccurs="0"/>
<element name="status"
type="rdeRegistrar:statusType"/>
<element name="postalInfo"
type="rdeRegistrar:postalInfoType"
maxOccurs="2"/>
<element name="voice"
type="eppcom:e164Type" minOccurs="0"/>
<element name="fax"
type="eppcom:e164Type" minOccurs="0"/>
<element name="email"
type="eppcom:minTokenType"/>
<element name="url"
type="anyURI" minOccurs="0"/>
<element name="whoisInfo"
type="rdeRegistrar:whoisInfoType" minOccurs="0"/>
<element name="crDate"
type="dateTime"/>
<element name="upDate"
type="dateTime" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<simpleType name="nameType">
<restriction base="normalizedString">
<minLength value="1" />
<maxLength value="255" />
</restriction>
</simpleType>
<simpleType name="statusType">
<restriction base="token">
<enumeration value="ok"/>
<enumeration value="readonly"/>
<enumeration value="terminated"/>
</restriction>
</simpleType>
<complexType name="postalInfoType">
<sequence>
<element name="addr"
type="rdeRegistrar:addrType" />
</sequence>
<attribute name="type"
type="rdeRegistrar:postalInfoEnumType"
use="required" />
</complexType>
<simpleType name="postalInfoEnumType">
<restriction base="token">
<enumeration value="loc" />
<enumeration value="int" />
</restriction>
</simpleType>
<complexType name="addrType">
<sequence>
<element name="street"
type="rdeRegistrar:optPostalLineType"
minOccurs="0" maxOccurs="3" />
<element name="city"
type="rdeRegistrar:postalLineType" />
<element name="sp"
type="rdeRegistrar:optPostalLineType"
minOccurs="0" />
<element name="pc"
type="rdeRegistrar:pcType" minOccurs="0" />
<element name="cc"
type="rdeRegistrar:ccType" />
</sequence>
</complexType>
<simpleType name="postalLineType">
<restriction base="normalizedString">
<minLength value="1" />
<maxLength value="255" />
</restriction>
</simpleType>
<simpleType name="optPostalLineType">
<restriction base="normalizedString">
<maxLength value="255" />
</restriction>
</simpleType>
<simpleType name="pcType">
<restriction base="token">
<maxLength value="16" />
</restriction>
</simpleType>
<simpleType name="ccType">
<restriction base="token">
<length value="2" />
</restriction>
</simpleType>
<complexType name="whoisInfoType">
<sequence>
<element name="name"
type="eppcom:labelType" minOccurs="0"/>
<element name="url"
type="anyURI" minOccurs="0"/>
</sequence>
</complexType>
<!-- Delete Type -->
<complexType name="deleteType">
<complexContent>
<extension base="rde:deleteType">
<sequence>
<element name="id"
type="eppcom:clIDType" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
</schema>
@@ -1,37 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:rdeReport-1.0"
xmlns:rdeReport="urn:ietf:params:xml:ns:rdeReport-1.0"
xmlns:rdeHeader="urn:ietf:params:xml:ns:rdeHeader-1.0"
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
schemaLocation="rde.xsd"/>
<import namespace="urn:ietf:params:xml:ns:rdeHeader-1.0"
schemaLocation="rde-header.xsd" />
<annotation>
<documentation>
Registry Data Escrow Report schema
</documentation>
</annotation>
<!-- Root Element -->
<element name="report" type="rdeReport:reportType"/>
<!-- Report Type -->
<complexType name="reportType">
<sequence>
<element name="id" type="rde:depositIdType"/>
<element name="version" type="unsignedShort"/>
<element name="rydeSpecEscrow" type="token"/>
<element name="rydeSpecMapping" type="token"/>
<element name="resend" type="unsignedShort"/>
<element name="crDate" type="dateTime"/>
<element name="kind" type="rde:depositTypeType"/>
<element name="watermark" type="dateTime"/>
<element ref="rdeHeader:header"/>
</sequence>
</complexType>
</schema>
@@ -1,100 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:rde-1.0"
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<annotation>
<documentation>
Registry Data Escrow schema
</documentation>
</annotation>
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemaLocation="eppcom.xsd"/>
<!-- Root element -->
<element name="deposit" type="rde:escrowDepositType"/>
<!-- RDE types -->
<complexType name="escrowDepositType">
<sequence>
<element name="watermark" type="dateTime"/>
<element name="rdeMenu" type="rde:rdeMenuType"/>
<element name="deletes" type="rde:deletesType" minOccurs="0"/>
<element name="contents" type="rde:contentsType"/>
</sequence>
<attribute name="type" type="rde:depositTypeType" use="required"/>
<attribute name="id" type="rde:depositIdType" use="required"/>
<attribute name="prevId" type="rde:depositIdType"/>
<attribute name="resend" type="unsignedShort" default="0"/>
</complexType>
<!-- Menu type -->
<complexType name="rdeMenuType">
<sequence>
<element name="version" type="rde:versionType"/>
<element name="objURI" type="anyURI" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!-- Deletes Type -->
<complexType name="deletesType">
<sequence minOccurs="0" maxOccurs="unbounded">
<element ref="rde:delete"/>
</sequence>
</complexType>
<element name="delete" type="rde:deleteType" abstract="true"/>
<complexType name="deleteType">
<complexContent>
<restriction base="anyType"/>
</complexContent>
</complexType>
<!-- Contents Type -->
<complexType name="contentsType">
<sequence maxOccurs="unbounded">
<element ref="rde:content"/>
</sequence>
</complexType>
<element name="content" type="rde:contentType" abstract="true"/>
<complexType name="contentType">
<complexContent>
<restriction base="anyType"/>
</complexContent>
</complexType>
<!-- Type of deposit -->
<simpleType name="depositTypeType">
<restriction base="token">
<enumeration value="FULL"/>
<enumeration value="INCR"/>
<enumeration value="DIFF"/>
</restriction>
</simpleType>
<!-- Deposit identifier type -->
<simpleType name="depositIdType">
<restriction base="token">
<pattern value="\w{1,13}"/>
</restriction>
</simpleType>
<!-- A RDE version number is a dotted pair of decimal numbers -->
<simpleType name="versionType">
<restriction base="token">
<pattern value="[1-9]+\.[0-9]+"/>
<enumeration value="1.0"/>
</restriction>
</simpleType>
<complexType name="rrType">
<simpleContent>
<extension base="eppcom:clIDType">
<attribute name="client" type="eppcom:clIDType"/>
</extension>
</simpleContent>
</complexType>
</schema>
@@ -1,133 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:rgp-1.0"
xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<annotation>
<documentation>
Extensible Provisioning Protocol v1.0
domain name extension schema for registry grace period
processing.
</documentation>
</annotation>
<!--
Child elements found in EPP commands.
-->
<element name="update" type="rgp:updateType"/>
<!--
Child elements of the <update> command for the
redemption grace period.
-->
<complexType name="updateType">
<sequence>
<element name="restore" type="rgp:restoreType"/>
</sequence>
</complexType>
<complexType name="restoreType">
<sequence>
<element name="report" type="rgp:reportType"
minOccurs="0"/>
</sequence>
<attribute name="op" type="rgp:rgpOpType" use="required"/>
</complexType>
<!--
New redemption grace period operations can be defined
by adding to this enumeration.
-->
<simpleType name="rgpOpType">
<restriction base="token">
<enumeration value="request"/>
<enumeration value="report"/>
</restriction>
</simpleType>
<complexType name="reportType">
<sequence>
<element name="preData" type="rgp:mixedType"/>
<element name="postData" type="rgp:mixedType"/>
<element name="delTime" type="dateTime"/>
<element name="resTime" type="dateTime"/>
<element name="resReason" type="rgp:reportTextType"/>
<element name="statement" type="rgp:reportTextType"
maxOccurs="2"/>
<element name="other" type="rgp:mixedType"
minOccurs="0"/>
</sequence>
</complexType>
<complexType name="mixedType">
<complexContent mixed="true">
<restriction base="anyType">
<sequence>
<any processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</restriction>
</complexContent>
</complexType>
<complexType name="reportTextType">
<complexContent mixed="true">
<restriction base="anyType">
<sequence>
<any processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="lang" type="language" default="en"/>
</restriction>
</complexContent>
</complexType>
<!--
Child response elements.
-->
<element name="infData" type="rgp:respDataType"/>
<element name="upData" type="rgp:respDataType"/>
<!--
Response elements.
-->
<complexType name="respDataType">
<sequence>
<element name="rgpStatus" type="rgp:statusType"
maxOccurs="unbounded"/>
</sequence>
</complexType>
<!--
Status is a combination of attributes and an optional
human-readable message that may be expressed in languages
other than English.
-->
<complexType name="statusType">
<simpleContent>
<extension base="normalizedString">
<attribute name="s" type="rgp:statusValueType"
use="required"/>
<attribute name="lang" type="language" default="en"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="statusValueType">
<restriction base="token">
<enumeration value="addPeriod"/>
<enumeration value="autoRenewPeriod"/>
<enumeration value="renewPeriod"/>
<enumeration value="transferPeriod"/>
<enumeration value="pendingDelete"/>
<enumeration value="pendingRestore"/>
<enumeration value="redemptionPeriod"/>
</restriction>
</simpleType>
<!--
End of schema.
-->
</schema>
@@ -1,95 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:ietf:params:xml:ns:secDNS-1.1"
xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<annotation>
<documentation>
Extensible Provisioning Protocol v1.0
domain name extension schema for provisioning
DNS security (DNSSEC) extensions.
</documentation>
</annotation>
<!-- Child elements found in EPP commands. -->
<element name="create" type="secDNS:dsOrKeyType"/>
<element name="update" type="secDNS:updateType"/>
<!-- Child elements supporting either the dsData or the keyData interface. -->
<complexType name="dsOrKeyType">
<sequence>
<element name="maxSigLife" type="secDNS:maxSigLifeType" minOccurs="0"/>
<choice>
<element name="dsData" type="secDNS:dsDataType" maxOccurs="unbounded"/>
<element name="keyData" type="secDNS:keyDataType" maxOccurs="unbounded"/>
</choice>
</sequence>
</complexType>
<!-- Definition for the maximum signature life (maxSigLife) -->
<simpleType name="maxSigLifeType">
<restriction base="int">
<minInclusive value="1"/>
</restriction>
</simpleType>
<!-- Child elements of dsData used for dsData interface -->
<complexType name="dsDataType">
<sequence>
<element name="keyTag" type="unsignedShort"/>
<element name="alg" type="unsignedByte"/>
<element name="digestType" type="unsignedByte"/>
<element name="digest" type="hexBinary"/>
<element name="keyData" type="secDNS:keyDataType" minOccurs="0"/>
</sequence>
</complexType>
<!-- Child elements of keyData used for keyData interface and optionally with dsData
interface -->
<complexType name="keyDataType">
<sequence>
<element name="flags" type="unsignedShort"/>
<element name="protocol" type="unsignedByte"/>
<element name="alg" type="unsignedByte"/>
<element name="pubKey" type="secDNS:keyType"/>
</sequence>
</complexType>
<!-- Definition for the public key -->
<simpleType name="keyType">
<restriction base="base64Binary">
<minLength value="1"/>
</restriction>
</simpleType>
<!-- Child elements of the <update> element. -->
<complexType name="updateType">
<sequence>
<element name="rem" type="secDNS:remType" minOccurs="0"/>
<element name="add" type="secDNS:dsOrKeyType" minOccurs="0"/>
<element name="chg" type="secDNS:chgType" minOccurs="0"/>
</sequence>
<attribute name="urgent" type="boolean" default="false"/>
</complexType>
<!-- Child elements of the <rem> command. -->
<complexType name="remType">
<choice>
<element name="all" type="boolean"/>
<element name="dsData" type="secDNS:dsDataType" maxOccurs="unbounded"/>
<element name="keyData" type="secDNS:keyDataType" maxOccurs="unbounded"/>
</choice>
</complexType>
<!-- Child elements supporting the <chg> element. -->
<complexType name="chgType">
<sequence>
<element name="maxSigLife" type="secDNS:maxSigLifeType" minOccurs="0"/>
</sequence>
</complexType>
<!-- Child response elements. -->
<element name="infData" type="secDNS:dsOrKeyType"/>
</schema>
@@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Schema extracted from http://tools.ietf.org/html/draft-lozano-tmch-smd -->
<schema
targetNamespace="urn:ietf:params:xml:ns:signedMark-1.0"
xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0"
xmlns:mark="urn:ietf:params:xml:ns:mark-1.0"
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<annotation>
<documentation>
Schema for representing a Signed Trademark.
</documentation>
</annotation>
<import namespace="urn:ietf:params:xml:ns:mark-1.0"
schemaLocation="mark.xsd" />
<import namespace="http://www.w3.org/2000/09/xmldsig#"
schemaLocation="dsig.xsd"/>
<!--
Abstract signed mark for replacement via substitution.
-->
<element name="abstractSignedMark" type="smd:abstractSignedMarkType"
abstract="true"/>
<!--
Empty type for use in extending for a signed mark
-->
<complexType name="abstractSignedMarkType"/>
<element name="signedMark" type="smd:signedMarkType"
substitutionGroup="smd:abstractSignedMark"/>
<element name="encodedSignedMark" type="smd:encodedSignedMarkType"/>
<complexType name="signedMarkType">
<complexContent>
<extension base="smd:abstractSignedMarkType">
<sequence>
<element name="id" type="mark:idType"/>
<element name="issuerInfo" type="smd:issuerInfoType"/>
<element name="notBefore" type="dateTime"/>
<element name="notAfter" type="dateTime"/>
<element ref="mark:abstractMark"/>
<element ref="dsig:Signature"/>
</sequence>
<attribute name="id" type="ID" use="required"/>
</extension>
</complexContent>
</complexType>
<complexType name="issuerInfoType">
<sequence>
<element name="org" type="token"/>
<element name="email" type="mark:minTokenType"/>
<element name="url" type="token" minOccurs="0"/>
<element name="voice" type="mark:e164Type" minOccurs="0"/>
</sequence>
<attribute name="issuerID" type="token" use="required"/>
</complexType>
<complexType name="encodedSignedMarkType">
<simpleContent>
<extension base="token">
<attribute name="encoding" default="base64"/>
</extension>
</simpleContent>
</complexType>
</schema>
@@ -1,58 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:superuser="urn:google:params:xml:ns:superuser-1.0"
targetNamespace="urn:google:params:xml:ns:superuser-1.0"
elementFormDefault="qualified">
<element name="domainTransferRequest"
type="superuser:domainTransferRequest" />
<complexType name="domainTransferRequest">
<all>
<element name="renewalPeriod" type="superuser:periodType" />
<element name="automaticTransferLength" type="nonNegativeInteger" />
</all>
</complexType>
<complexType name="periodType">
<simpleContent>
<extension base="superuser:pLimitType">
<attribute name="unit" type="superuser:pUnitType"
use="required"/>
</extension>
</simpleContent>
</complexType>
<simpleType name="pLimitType">
<restriction base="unsignedShort">
<minInclusive value="0"/>
<maxInclusive value="99"/>
</restriction>
</simpleType>
<simpleType name="pUnitType">
<restriction base="token">
<enumeration value="y"/>
<enumeration value="m"/>
</restriction>
</simpleType>
<element name="domainDelete" type="superuser:domainDeleteType" />
<complexType name="domainDeleteType">
<all>
<element name="redemptionGracePeriodDays" type="nonNegativeInteger" />
<element name="pendingDeleteDays" type="nonNegativeInteger" />
</all>
</complexType>
<element name="domainUpdate" type="superuser:domainUpdateType" />
<complexType name="domainUpdateType">
<all>
<element name="autorenews" minOccurs="0" type="boolean" />
</all>
</complexType>
</schema>
@@ -1,131 +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.xjc;
import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
import static google.registry.testing.TestDataHelper.loadBytes;
import static google.registry.testing.TestDataHelper.loadFile;
import static google.registry.xjc.XjcXmlTransformer.unmarshal;
import static java.nio.charset.StandardCharsets.UTF_16;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.jupiter.api.Assertions.assertThrows;
import com.google.re2j.Pattern;
import google.registry.xjc.rde.XjcRdeDeposit;
import google.registry.xjc.rde.XjcRdeDepositTypeType;
import google.registry.xjc.rdedomain.XjcRdeDomain;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import org.junit.jupiter.api.Test;
/** Unit tests for {@code XjcObject}. */
class XjcObjectTest {
private static final String RDE_DEPOSIT_FULL =
loadFile(XjcObjectTest.class, "rde_deposit_full.xml");
@Test
void testMarshalUtf8() throws Exception {
XjcRdeDeposit deposit = unmarshalFullDeposit();
ByteArrayOutputStream out = new ByteArrayOutputStream();
deposit.marshal(out, UTF_8);
String xml = out.toString(UTF_8);
Pattern pat = Pattern.compile("^<\\?xml version=\"1\\.0\" encoding=\"UTF[-_]?8\"");
assertWithMessage("bad xml declaration: %s", xml).that(pat.matcher(xml).find()).isTrue();
assertWithMessage("encode/decode didn't work: %s", xml).that(xml).contains("jdoe@example.test");
}
@Test
void testMarshalUtf16() throws Exception {
XjcRdeDeposit deposit = unmarshalFullDeposit();
ByteArrayOutputStream out = new ByteArrayOutputStream();
deposit.marshal(out, UTF_16);
String xml = out.toString(UTF_16);
Pattern pat = Pattern.compile("^<\\?xml version=\"1\\.0\" encoding=\"UTF[-_]?16\"");
assertWithMessage(xml).that(pat.matcher(xml).find()).isTrue();
assertWithMessage("encode/decode didn't work: %s", xml).that(xml).contains("jdoe@example.test");
}
@Test
void testMarshalValidation() throws Exception {
XjcRdeDeposit deposit = unmarshalFullDeposit();
deposit.setId("");
Throwable thrown =
assertThrows(Throwable.class, () -> deposit.marshal(new ByteArrayOutputStream(), UTF_8));
assertThat(thrown).hasMessageThat().contains("pattern '\\w{1,13}' for type 'depositIdType'");
}
@Test
void testUnmarshalUTF8() throws Exception {
XjcRdeDeposit deposit = unmarshalFullDeposit();
assertThat(deposit).isNotNull();
assertThat(deposit.getType()).isEqualTo(XjcRdeDepositTypeType.FULL);
assertThat(deposit.getRdeMenu().getVersion()).isEqualTo("1.0");
}
@Test
void testUnmarshalUTF16() throws Exception {
XjcRdeDeposit deposit = unmarshal(XjcRdeDeposit.class, new ByteArrayInputStream(
RDE_DEPOSIT_FULL.replaceFirst("UTF-8", "UTF-16").getBytes(UTF_16)));
assertThat(deposit).isNotNull();
assertThat(deposit.getType()).isEqualTo(XjcRdeDepositTypeType.FULL);
assertThat(deposit.getRdeMenu().getVersion()).isEqualTo("1.0");
}
@Test
void testUnmarshalValidation() {
Throwable thrown =
assertThrows(
Throwable.class,
() ->
unmarshal(
XjcRdeDeposit.class,
new ByteArrayInputStream(
RDE_DEPOSIT_FULL
.replaceFirst("id=\"[^\"]+\"", "id=\"\"")
.getBytes(UTF_8))));
assertThat(thrown).hasMessageThat().contains("pattern '\\w{1,13}' for type 'depositIdType'");
}
@Test
void testToString() throws Exception {
String xml = unmarshalFullDeposit().toString();
assertWithMessage(xml).that(xml).startsWith("<rde:deposit ");
assertWithMessage(xml).that(xml.length()).isGreaterThan(1000);
}
@Test
void testToStringNoValidation() {
String xml = new XjcRdeDomain().toString();
assertWithMessage(xml).that(xml).startsWith("<XjcRdeDomain ");
}
@Test
void testNamespaceEpp() throws Exception {
String xml =
unmarshal(XjcObject.class, loadBytes(XjcObjectTest.class, "greeting.xml").openStream())
.toString();
assertWithMessage(xml).that(xml).startsWith("<epp:epp ");
assertWithMessage(xml).that(xml).contains("\"urn:ietf:params:xml:ns:epp-1.0\"");
assertWithMessage(xml).that(xml).contains("<epp:greeting>");
}
/** Unmarshals XML assuming UTF-8 encoding. */
private static XjcRdeDeposit unmarshalFullDeposit() throws Exception {
return unmarshal(
XjcRdeDeposit.class, new ByteArrayInputStream(RDE_DEPOSIT_FULL.getBytes(UTF_8)));
}
}
@@ -1,110 +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.xjc;
import static com.google.common.truth.Truth.assertThat;
import static google.registry.testing.TestDataHelper.loadFile;
import static google.registry.xjc.XjcXmlTransformer.unmarshal;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.jupiter.api.Assertions.assertThrows;
import google.registry.xjc.epp.XjcEpp;
import google.registry.xjc.rde.XjcRdeDeposit;
import google.registry.xml.XmlException;
import java.io.ByteArrayInputStream;
import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
/**
* Unit tests that ensure {@link XjcObject} is able to unmarshal XML in {@code testdata/} and ensure
* they conform to the XML schema definitions.
*/
class XmlTestdataTest {
@ParameterizedTest
@MethodSource("provideTestCombinations")
void testValid(String filename, Class<? extends XjcObject> expectedClazz) throws Exception {
XjcObject xml = unmarshal(XjcObject.class, loadAsStream(filename));
assertThat(xml).isInstanceOf(expectedClazz);
}
@Test
void testInvalid() {
ByteArrayInputStream badData = loadAsStream("invalid_greeting.xml");
XmlException thrown =
assertThrows(XmlException.class, () -> unmarshal(XjcObject.class, badData));
assertThat(thrown).hasMessageThat().contains("dcp}' is expected");
}
@SuppressWarnings("unused")
static Stream<Arguments> provideTestCombinations() {
return Stream.of(
Arguments.of("domain_check_response.xml", XjcEpp.class),
Arguments.of("domain_check.xml", XjcEpp.class),
Arguments.of("domain_create_response_offline_review_completed.xml", XjcEpp.class),
Arguments.of("domain_create_response_offline_review.xml", XjcEpp.class),
Arguments.of("domain_create_response.xml", XjcEpp.class),
Arguments.of("domain_create.xml", XjcEpp.class),
Arguments.of("domain_delete.xml", XjcEpp.class),
Arguments.of("domain_info_response_addperiod.xml", XjcEpp.class),
Arguments.of("domain_info_response_pendingdelete.xml", XjcEpp.class),
Arguments.of("domain_info_response_pendingrestore.xml", XjcEpp.class),
Arguments.of("domain_info_response_redemptionperiod.xml", XjcEpp.class),
Arguments.of("domain_info_response_unauthorized.xml", XjcEpp.class),
Arguments.of("domain_info_response.xml", XjcEpp.class),
Arguments.of("domain_info_with_auth.xml", XjcEpp.class),
Arguments.of("domain_info.xml", XjcEpp.class),
Arguments.of("domain_renew_response.xml", XjcEpp.class),
Arguments.of("domain_renew.xml", XjcEpp.class),
Arguments.of("domain_transfer_query_response.xml", XjcEpp.class),
Arguments.of("domain_transfer_query.xml", XjcEpp.class),
Arguments.of("domain_transfer_request_response.xml", XjcEpp.class),
Arguments.of("domain_transfer_request.xml", XjcEpp.class),
Arguments.of("domain_update_restore_report.xml", XjcEpp.class),
Arguments.of("domain_update_restore_request.xml", XjcEpp.class),
Arguments.of("domain_update.xml", XjcEpp.class),
Arguments.of("generic_success_response.xml", XjcEpp.class),
Arguments.of("greeting.xml", XjcEpp.class),
Arguments.of("host_check_response.xml", XjcEpp.class),
Arguments.of("host_check.xml", XjcEpp.class),
Arguments.of("host_create_response_offline_review_complete.xml", XjcEpp.class),
Arguments.of("host_create_response_offline_review.xml", XjcEpp.class),
Arguments.of("host_create_response.xml", XjcEpp.class),
Arguments.of("host_create.xml", XjcEpp.class),
Arguments.of("host_delete_response.xml", XjcEpp.class),
Arguments.of("host_delete.xml", XjcEpp.class),
Arguments.of("host_info_response.xml", XjcEpp.class),
Arguments.of("host_info.xml", XjcEpp.class),
Arguments.of("host_update.xml", XjcEpp.class),
Arguments.of("login.xml", XjcEpp.class),
Arguments.of("logout_response.xml", XjcEpp.class),
Arguments.of("logout.xml", XjcEpp.class),
Arguments.of("poll_ack_response.xml", XjcEpp.class),
Arguments.of("poll_ack.xml", XjcEpp.class),
Arguments.of("poll_response_empty.xml", XjcEpp.class),
Arguments.of("poll_response_mixed.xml", XjcEpp.class),
Arguments.of("poll.xml", XjcEpp.class),
Arguments.of("rde_deposit_differential.xml", XjcRdeDeposit.class),
Arguments.of("rde_deposit_full.xml", XjcRdeDeposit.class),
Arguments.of("restore_request_response.xml", XjcEpp.class));
}
private static ByteArrayInputStream loadAsStream(String filename) {
return new ByteArrayInputStream(loadFile(XmlTestdataTest.class, filename).getBytes(UTF_8));
}
}
@@ -1,61 +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.xml;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.time.LocalDate;
import java.time.format.DateTimeParseException;
import org.junit.jupiter.api.Test;
/** Unit tests for {@link DateAdapter}. */
class DateAdapterTest {
@Test
void testMarshal() {
assertThat(new DateAdapter().marshal(LocalDate.of(2010, 10, 17))).isEqualTo("2010-10-17");
}
@Test
void testMarshalEmpty() {
assertThat(new DateAdapter().marshal(null)).isEmpty();
}
@Test
void testUnmarshal() {
assertThat(new DateAdapter().unmarshal("2010-10-17T04:20:00Z"))
.isEqualTo(LocalDate.of(2010, 10, 17));
}
@Test
void testUnmarshalConvertsToZuluTime() {
assertThat(new DateAdapter().unmarshal("2010-10-17T23:23:23-04:00"))
.isEqualTo(LocalDate.of(2010, 10, 18));
}
@Test
void testUnmarshalEmpty() {
assertThat(new DateAdapter().unmarshal(null)).isNull();
assertThat(new DateAdapter().unmarshal("")).isNull();
}
@Test
void testUnmarshalInvalid() {
assertThrows(
DateTimeParseException.class,
() -> assertThat(new DateAdapter().unmarshal("oh my goth")).isNull());
}
}
@@ -1,42 +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.xml;
import static com.google.common.truth.Truth.assertThat;
import org.junit.jupiter.api.Test;
/** Unit tests for {@link TrimWhitespaceAdapter}. */
class TrimWhitespaceAdapterTest {
@Test
void testUnmarshal() {
TrimWhitespaceAdapter adapter = new TrimWhitespaceAdapter();
assertThat(adapter.unmarshal("blah")).isEqualTo("blah");
assertThat(adapter.unmarshal("")).isEmpty();
assertThat(adapter.unmarshal(null)).isNull();
assertThat(adapter.unmarshal("\n test foo bar \n \r")).isEqualTo("test foo bar");
}
@Test
void testMarshal() {
TrimWhitespaceAdapter adapter = new TrimWhitespaceAdapter();
assertThat(adapter.marshal("blah")).isEqualTo("blah");
assertThat(adapter.marshal("")).isEmpty();
assertThat(adapter.marshal(null)).isNull();
assertThat(adapter.marshal("\n test foo bar \n \r"))
.isEqualTo("\n test foo bar \n \r");
}
}
@@ -1,68 +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.xml;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.time.Instant;
import java.time.format.DateTimeParseException;
import org.junit.jupiter.api.Test;
/** Unit tests for {@link UtcInstantAdapter}. */
class UtcInstantAdapterTest {
@Test
void testMarshal() {
assertThat(new UtcInstantAdapter().marshal(Instant.parse("2010-10-17T04:20:00Z")))
.isEqualTo("2010-10-17T04:20:00.000Z");
}
@Test
void testMarshalConvertsToZuluTime() {
assertThat(new UtcInstantAdapter().marshal(Instant.parse("2010-10-17T00:20:00-04:00")))
.isEqualTo("2010-10-17T04:20:00.000Z");
}
@Test
void testMarshalEmpty() {
assertThat(new UtcInstantAdapter().marshal(null)).isEmpty();
}
@Test
void testUnmarshal() {
assertThat(new UtcInstantAdapter().unmarshal("2010-10-17T04:20:00Z"))
.isEqualTo(Instant.parse("2010-10-17T04:20:00Z"));
}
@Test
void testUnmarshalConvertsToZuluTime() {
assertThat(new UtcInstantAdapter().unmarshal("2010-10-17T00:20:00-04:00"))
.isEqualTo(Instant.parse("2010-10-17T04:20:00Z"));
}
@Test
void testUnmarshalEmpty() {
assertThat(new UtcInstantAdapter().unmarshal(null)).isNull();
assertThat(new UtcInstantAdapter().unmarshal("")).isNull();
}
@Test
void testUnmarshalInvalid() {
assertThrows(
DateTimeParseException.class,
() -> assertThat(new UtcInstantAdapter().unmarshal("oh my goth")).isNull());
}
}
@@ -1,12 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<check>
<domain:check xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:name>example.net</domain:name>
<domain:name>example.org</domain:name>
</domain:check>
</check>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,26 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<resData>
<domain:chkData
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:cd>
<domain:name avail="1">example.com</domain:name>
</domain:cd>
<domain:cd>
<domain:name avail="0">example.net</domain:name>
<domain:reason>In use</domain:reason>
</domain:cd>
<domain:cd>
<domain:name avail="1">example.org</domain:name>
</domain:cd>
</domain:chkData>
</resData>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,20 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<create>
<domain:create
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:period unit="y">2</domain:period>
<domain:ns>
<domain:hostObj>ns1.example.net</domain:hostObj>
<domain:hostObj>ns2.example.net</domain:hostObj>
</domain:ns>
<domain:registrant>jd1234</domain:registrant>
<domain:authInfo>
<domain:pw>2fooBAR</domain:pw>
</domain:authInfo>
</domain:create>
</create>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,19 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<resData>
<domain:creData
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:crDate>1999-04-03T22:00:00.0Z</domain:crDate>
<domain:exDate>2001-04-03T22:00:00.0Z</domain:exDate>
</domain:creData>
</resData>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,19 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1001">
<msg>Command completed successfully; action pending</msg>
</result>
<resData>
<domain:creData
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:crDate>1999-04-03T22:00:00.0Z</domain:crDate>
<domain:exDate>2001-04-03T22:00:00.0Z</domain:exDate>
</domain:creData>
</resData>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,26 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1301">
<msg>Command completed successfully; ack to dequeue</msg>
</result>
<msgQ count="5" id="12345">
<qDate>1999-04-04T22:01:00.0Z</qDate>
<msg>Pending action completed successfully.</msg>
</msgQ>
<resData>
<domain:panData
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name paResult="1">example.com</domain:name>
<domain:paTRID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</domain:paTRID>
<domain:paDate>1999-04-04T22:00:00.0Z</domain:paDate>
</domain:panData>
</resData>
<trID>
<clTRID>BCD-23456</clTRID>
<svTRID>65432-WXY</svTRID>
</trID>
</response>
</epp>
@@ -1,11 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<delete>
<domain:delete
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
</domain:delete>
</delete>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,11 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<info>
<domain:info
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name hosts="all">example.com</domain:name>
</domain:info>
</info>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,36 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<resData>
<domain:infData
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:roid>EXAMPLE1-REP</domain:roid>
<domain:status s="ok"/>
<domain:registrant>jd1234</domain:registrant>
<domain:ns>
<domain:hostObj>ns1.example.com</domain:hostObj>
<domain:hostObj>ns1.example.net</domain:hostObj>
</domain:ns>
<domain:host>ns1.example.com</domain:host>
<domain:host>ns2.example.com</domain:host>
<domain:clID>NewRegistrar</domain:clID>
<domain:crID>TheRegistrar</domain:crID>
<domain:crDate>1999-04-03T22:00:00.0Z</domain:crDate>
<domain:upID>NewRegistrar</domain:upID>
<domain:upDate>1999-12-03T09:00:00.0Z</domain:upDate>
<domain:exDate>2005-04-03T22:00:00.0Z</domain:exDate>
<domain:trDate>2000-04-08T09:00:00.0Z</domain:trDate>
<domain:authInfo>
<domain:pw>2fooBAR</domain:pw>
</domain:authInfo>
</domain:infData>
</resData>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,39 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<resData>
<domain:infData
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:roid>EXAMPLE1-REP</domain:roid>
<domain:status s="ok"/>
<domain:registrant>jd1234</domain:registrant>
<domain:ns>
<domain:hostObj>ns1.example.com</domain:hostObj>
<domain:hostObj>ns1.example.net</domain:hostObj>
</domain:ns>
<domain:host>ns1.example.com</domain:host>
<domain:host>ns2.example.com</domain:host>
<domain:clID>NewRegistrar</domain:clID>
<domain:crID>NewRegistrar</domain:crID>
<domain:crDate>2003-11-26T22:00:00.0Z</domain:crDate>
<domain:exDate>2005-11-26T22:00:00.0Z</domain:exDate>
<domain:authInfo>
<domain:pw>2fooBAR</domain:pw>
</domain:authInfo>
</domain:infData>
</resData>
<extension>
<rgp:infData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0">
<rgp:rgpStatus s="addPeriod"/>
</rgp:infData>
</extension>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,42 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<resData>
<domain:infData
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:roid>EXAMPLE1-REP</domain:roid>
<domain:status s="pendingDelete"/>
<domain:registrant>jd1234</domain:registrant>
<domain:ns>
<domain:hostObj>ns1.example.com</domain:hostObj>
<domain:hostObj>ns1.example.net</domain:hostObj>
</domain:ns>
<domain:host>ns1.example.com</domain:host>
<domain:host>ns2.example.com</domain:host>
<domain:clID>NewRegistrar</domain:clID>
<domain:crID>TheRegistrar</domain:crID>
<domain:crDate>1999-04-03T22:00:00.0Z</domain:crDate>
<domain:upID>NewRegistrar</domain:upID>
<domain:upDate>1999-12-03T09:00:00.0Z</domain:upDate>
<domain:exDate>2005-04-03T22:00:00.0Z</domain:exDate>
<domain:trDate>2000-04-08T09:00:00.0Z</domain:trDate>
<domain:authInfo>
<domain:pw>2fooBAR</domain:pw>
</domain:authInfo>
</domain:infData>
</resData>
<extension>
<rgp:infData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0">
<rgp:rgpStatus s="pendingDelete"/>
</rgp:infData>
</extension>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,48 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
epp-1.0.xsd">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<resData>
<domain:infData
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
domain-1.0.xsd">
<domain:name>example.com</domain:name>
<domain:roid>EXAMPLE1-REP</domain:roid>
<domain:status s="pendingDelete"/>
<domain:registrant>jd1234</domain:registrant>
<domain:ns>
<domain:hostObj>ns1.example.com</domain:hostObj>
<domain:hostObj>ns1.example.net</domain:hostObj>
</domain:ns>
<domain:host>ns1.example.com</domain:host>
<domain:host>ns2.example.com</domain:host>
<domain:clID>NewRegistrar</domain:clID>
<domain:crID>TheRegistrar</domain:crID>
<domain:crDate>1999-04-03T22:00:00.0Z</domain:crDate>
<domain:upID>NewRegistrar</domain:upID>
<domain:upDate>1999-12-03T09:00:00.0Z</domain:upDate>
<domain:exDate>2005-04-03T22:00:00.0Z</domain:exDate>
<domain:trDate>2000-04-08T09:00:00.0Z</domain:trDate>
<domain:authInfo>
<domain:pw>2fooBAR</domain:pw>
</domain:authInfo>
</domain:infData>
</resData>
<extension>
<rgp:infData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
rgp-1.0.xsd">
<rgp:rgpStatus s="pendingRestore"/>
</rgp:infData>
</extension>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,42 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<resData>
<domain:infData
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:roid>EXAMPLE1-REP</domain:roid>
<domain:status s="pendingDelete"/>
<domain:registrant>jd1234</domain:registrant>
<domain:ns>
<domain:hostObj>ns1.example.com</domain:hostObj>
<domain:hostObj>ns1.example.net</domain:hostObj>
</domain:ns>
<domain:host>ns1.example.com</domain:host>
<domain:host>ns2.example.com</domain:host>
<domain:clID>NewRegistrar</domain:clID>
<domain:crID>TheRegistrar</domain:crID>
<domain:crDate>1999-04-03T22:00:00.0Z</domain:crDate>
<domain:upID>NewRegistrar</domain:upID>
<domain:upDate>1999-12-03T09:00:00.0Z</domain:upDate>
<domain:exDate>2005-04-03T22:00:00.0Z</domain:exDate>
<domain:trDate>2000-04-08T09:00:00.0Z</domain:trDate>
<domain:authInfo>
<domain:pw>2fooBAR</domain:pw>
</domain:authInfo>
</domain:infData>
</resData>
<extension>
<rgp:infData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0">
<rgp:rgpStatus s="redemptionPeriod"/>
</rgp:infData>
</extension>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,19 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<resData>
<domain:infData
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:roid>EXAMPLE1-REP</domain:roid>
<domain:clID>NewRegistrar</domain:clID>
</domain:infData>
</resData>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,14 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<info>
<domain:info
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name hosts="all">example.com</domain:name>
<domain:authInfo>
<domain:pw>2fooBAR</domain:pw>
</domain:authInfo>
</domain:info>
</info>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,13 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<renew>
<domain:renew
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:curExpDate>2000-04-03</domain:curExpDate>
<domain:period unit="y">5</domain:period>
</domain:renew>
</renew>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,18 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<resData>
<domain:renData
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:exDate>2005-04-03T22:00:00.0Z</domain:exDate>
</domain:renData>
</resData>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,11 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<transfer op="query">
<domain:transfer
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
</domain:transfer>
</transfer>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,23 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<resData>
<domain:trnData
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:trStatus>pending</domain:trStatus>
<domain:reID>NewRegistrar</domain:reID>
<domain:reDate>2000-06-06T22:00:00.0Z</domain:reDate>
<domain:acID>TheRegistrar</domain:acID>
<domain:acDate>2000-06-11T22:00:00.0Z</domain:acDate>
<domain:exDate>2002-09-08T22:00:00.0Z</domain:exDate>
</domain:trnData>
</resData>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,15 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<transfer op="request">
<domain:transfer
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:period unit="y">1</domain:period>
<domain:authInfo>
<domain:pw roid="JD1234-REP">2fooBAR</domain:pw>
</domain:authInfo>
</domain:transfer>
</transfer>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,23 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1001">
<msg>Command completed successfully; action pending</msg>
</result>
<resData>
<domain:trnData
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:trStatus>pending</domain:trStatus>
<domain:reID>NewRegistrar</domain:reID>
<domain:reDate>2000-06-09T22:00:00.0Z</domain:reDate>
<domain:acID>TheRegistrar</domain:acID>
<domain:acDate>2000-06-14T22:00:00.0Z</domain:acDate>
<domain:exDate>2002-09-08T22:00:00.0Z</domain:exDate>
</domain:trnData>
</resData>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,30 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<update>
<domain:update
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:add>
<domain:ns>
<domain:hostObj>ns2.example.com</domain:hostObj>
</domain:ns>
<domain:status s="clientHold"
lang="en">Payment overdue.</domain:status>
</domain:add>
<domain:rem>
<domain:ns>
<domain:hostObj>ns1.example.com</domain:hostObj>
</domain:ns>
<domain:status s="clientUpdateProhibited"/>
</domain:rem>
<domain:chg>
<domain:registrant>sh8013</domain:registrant>
<domain:authInfo>
<domain:pw>2BARfoo</domain:pw>
</domain:authInfo>
</domain:chg>
</domain:update>
</update>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,46 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
epp-1.0.xsd">
<command>
<update>
<domain:update
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
domain-1.0.xsd">
<domain:name>example.com</domain:name>
<domain:chg/>
</domain:update>
</update>
<extension>
<rgp:update xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
rgp-1.0.xsd">
<rgp:restore op="report">
<rgp:report>
<rgp:preData>Pre-delete registration data goes here.
Both XML and free text are allowed.</rgp:preData>
<rgp:postData>Post-restore registration data goes here.
Both XML and free text are allowed.</rgp:postData>
<rgp:delTime>2003-07-10T22:00:00.0Z</rgp:delTime>
<rgp:resTime>2003-07-20T22:00:00.0Z</rgp:resTime>
<rgp:resReason>Registrant error.</rgp:resReason>
<rgp:statement>This registrar has not restored the
Registered Name in order to assume the rights to use
or sell the Registered Name for itself or for any
third party.</rgp:statement>
<rgp:statement>The information in this report is
true to best of this registrar's knowledge, and this
registrar acknowledges that intentionally supplying
false information in this report shall constitute an
incurable material breach of the
Registry-Registrar Agreement.</rgp:statement>
<rgp:other>Supporting information goes
here.</rgp:other>
</rgp:report>
</rgp:restore>
</rgp:update>
</extension>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,17 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<update>
<domain:update
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>example.com</domain:name>
<domain:chg/>
</domain:update>
</update>
<extension>
<rgp:update xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0">
<rgp:restore op="request"/>
</rgp:update>
</extension>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,11 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,25 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<greeting>
<svID>Example EPP server epp.example.com</svID>
<svDate>2000-06-08T22:00:00.0Z</svDate>
<svcMenu>
<version>1.0</version>
<lang>en</lang>
<lang>fr</lang>
<objURI>urn:ietf:params:xml:ns:obj1</objURI>
<objURI>urn:ietf:params:xml:ns:obj2</objURI>
<objURI>urn:ietf:params:xml:ns:obj3</objURI>
<svcExtension>
<extURI>http://custom/obj1ext-1.0</extURI>
</svcExtension>
</svcMenu>
<dcp>
<access><all/></access>
<statement>
<purpose><admin/><prov/></purpose>
<recipient><ours/><public/></recipient>
<retention><stated/></retention>
</statement>
</dcp>
</greeting>
</epp>
@@ -1,13 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<check>
<host:check
xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:name>ns1.example.com</host:name>
<host:name>ns2.example.com</host:name>
<host:name>ns3.example.com</host:name>
</host:check>
</check>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,28 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<resData>
<host:chkData
xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:cd>
<host:name avail="1">ns1.example.com</host:name>
</host:cd>
<host:cd>
<!-- The RFC uses ns2.example2.com here; it's clearly a typo. -->
<host:name avail="0">ns2.example.com</host:name>
<host:reason>In use</host:reason>
</host:cd>
<host:cd>
<!-- The RFC uses ns3.example3.com here; it's clearly a typo. -->
<host:name avail="1">ns3.example.com</host:name>
</host:cd>
</host:chkData>
</resData>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,14 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<create>
<host:create
xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:name>ns1.example.com</host:name>
<host:addr ip="v4">192.0.2.2</host:addr>
<host:addr ip="v4">192.0.2.29</host:addr>
<host:addr ip="v6">1080:0:0:0:8:800:200C:417A</host:addr>
</host:create>
</create>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,18 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<resData>
<host:creData
xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:name>ns1.example.com</host:name>
<host:crDate>1999-04-03T22:00:00.0Z</host:crDate>
</host:creData>
</resData>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,18 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1001">
<msg>Command completed successfully; action pending</msg>
</result>
<resData>
<host:creData
xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:name>ns1.example.com</host:name>
<host:crDate>1999-04-03T22:00:00.0Z</host:crDate>
</host:creData>
</resData>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,26 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1301">
<msg>Command completed successfully; ack to dequeue</msg>
</result>
<msgQ count="5" id="12345">
<qDate>1999-04-04T22:01:00.0Z</qDate>
<msg>Pending action completed successfully.</msg>
</msgQ>
<resData>
<host:panData
xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:name paResult="1">ns1.example.com</host:name>
<host:paTRID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</host:paTRID>
<host:paDate>1999-04-04T22:00:00.0Z</host:paDate>
</host:panData>
</resData>
<trID>
<clTRID>BCD-23456</clTRID>
<svTRID>65432-WXY</svTRID>
</trID>
</response>
</epp>
@@ -1,11 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<delete>
<host:delete
xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:name>ns1.example.com</host:name>
</host:delete>
</delete>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,11 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1001">
<msg>Command completed successfully; action pending</msg>
</result>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,15 +0,0 @@
<rdeHost:host xmlns:rdeHost="urn:ietf:params:xml:ns:rdeHost-1.0">
<rdeHost:name>ns1.example1.test</rdeHost:name>
<rdeHost:roid>Hns1_example1_test-TEST</rdeHost:roid>
<rdeHost:status s="ok"/>
<rdeHost:status s="linked"/>
<rdeHost:addr ip="v4">192.0.2.2</rdeHost:addr>
<rdeHost:addr ip="v4">192.0.2.29</rdeHost:addr>
<rdeHost:addr ip="v6">1080:0:0:0:8:800:200C:417A</rdeHost:addr>
<rdeHost:clID>RegistrarX</rdeHost:clID>
<rdeHost:crRr>RegistrarX</rdeHost:crRr>
<rdeHost:crDate>1999-05-08T12:10:00.0Z</rdeHost:crDate>
<rdeHost:upRr>RegistrarX</rdeHost:upRr>
<rdeHost:upDate>2009-10-03T09:34:00.0Z</rdeHost:upDate>
<rdeHost:trDate>2008-10-03T09:34:00.0Z</rdeHost:trDate>
</rdeHost:host>
@@ -1,11 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<info>
<host:info
xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:name>ns1.example.com</host:name>
</host:info>
</info>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,29 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<resData>
<host:infData
xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:name>ns1.example.com</host:name>
<host:roid>NS1_EXAMPLE1-REP</host:roid>
<host:status s="linked"/>
<host:status s="clientUpdateProhibited"/>
<host:addr ip="v4">192.0.2.2</host:addr>
<host:addr ip="v4">192.0.2.29</host:addr>
<host:addr ip="v6">1080:0:0:0:8:800:200C:417A</host:addr>
<host:clID>TheRegistrar</host:clID>
<host:crID>NewRegistrar</host:crID>
<host:crDate>1999-04-03T22:00:00.0Z</host:crDate>
<host:upID>NewRegistrar</host:upID>
<host:upDate>1999-12-03T09:00:00.0Z</host:upDate>
<host:trDate>2000-04-08T09:00:00.0Z</host:trDate>
</host:infData>
</resData>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,21 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<update>
<host:update
xmlns:host="urn:ietf:params:xml:ns:host-1.0">
<host:name>ns1.example.com</host:name>
<host:add>
<host:addr ip="v4">192.0.2.22</host:addr>
<host:status s="clientUpdateProhibited"/>
</host:add>
<host:rem>
<host:addr ip="v6">1080:0:0:0:8:800:200C:417A</host:addr>
</host:rem>
<host:chg>
<host:name>ns2.example.com</host:name>
</host:chg>
</host:update>
</update>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,25 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<greeting>
<svID>Example EPP server epp.example.com</svID>
<svDate>2000-06-08T22:00:00.0Z</svDate>
<svcMenu>
<version>1.0</version>
<lang>en</lang>
<lang>fr</lang>
<objURI>urn:ietf:params:xml:ns:obj1</objURI>
<objURI>urn:ietf:params:xml:ns:obj2</objURI>
<objURI>urn:ietf:params:xml:ns:obj3</objURI>
<svcExtension>
<extURI>http://custom/obj1ext-1.0</extURI>
</svcExtension>
</svcMenu>
</greeting>
<dcp>
<access><all/></access>
<statement>
<purpose><admin/><prov/></purpose>
<recipient><ours/><public/></recipient>
<retention><stated/></retention>
</statement>
</dcp>
</epp>
@@ -1,23 +0,0 @@
<!-- This sample is not valid for EPP since it doesn't use the EPP objURIs. -->
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<login>
<clID>NewRegistrar</clID>
<pw>foo-BAR2</pw>
<newPW>bar-FOO2</newPW>
<options>
<version>1.0</version>
<lang>en</lang>
</options>
<svcs>
<objURI>urn:ietf:params:xml:ns:obj1</objURI>
<objURI>urn:ietf:params:xml:ns:obj2</objURI>
<objURI>urn:ietf:params:xml:ns:obj3</objURI>
<svcExtension>
<extURI>http://custom/obj1ext-1.0</extURI>
</svcExtension>
</svcs>
</login>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,6 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<logout/>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,11 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1500">
<msg>Command completed successfully; ending session</msg>
</result>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,6 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<poll op="req"/>
<clTRID>ABC-12345</clTRID>
</command>
</epp>
@@ -1,6 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<poll op="ack" msgID="1-1-1-3"/>
<clTRID>ABC-12346</clTRID>
</command>
</epp>
@@ -1,12 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1000">
<msg>Command completed successfully</msg>
</result>
<msgQ count="4" id="3"/>
<trID>
<clTRID>ABC-12346</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>
@@ -1,11 +0,0 @@
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<response>
<result code="1300">
<msg>Command completed successfully; no messages</msg>
</result>
<trID>
<clTRID>ABC-12345</clTRID>
<svTRID>server-trid</svTRID>
</trID>
</response>
</epp>

Some files were not shown because too many files have changed in this diff Show More