diff --git a/.kokoro/continuous/kms-it.cfg b/.kokoro/continuous/kms-it.cfg new file mode 100644 index 000000000000..5b1d08260c1b --- /dev/null +++ b/.kokoro/continuous/kms-it.cfg @@ -0,0 +1,27 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Configure the docker image for kokoro-trampoline. +env_vars: { + key: "TRAMPOLINE_IMAGE" + value: "gcr.io/cloud-devrel-kokoro-resources/java8" +} + +env_vars: { + key: "INTEGRATION_TEST_ARGS" + value: "google-cloud-clients/google-cloud-kms" +} + +env_vars: { + key: "JOB_TYPE" + value: "integration" +} + +env_vars: { + key: "GCLOUD_PROJECT" + value: "gcloud-devel" +} + +env_vars: { + key: "GOOGLE_APPLICATION_CREDENTIALS" + value: "keystore/73713_java_it_service_account" +} diff --git a/.kokoro/nightly/kms-it.cfg b/.kokoro/nightly/kms-it.cfg new file mode 100644 index 000000000000..5b1d08260c1b --- /dev/null +++ b/.kokoro/nightly/kms-it.cfg @@ -0,0 +1,27 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Configure the docker image for kokoro-trampoline. +env_vars: { + key: "TRAMPOLINE_IMAGE" + value: "gcr.io/cloud-devrel-kokoro-resources/java8" +} + +env_vars: { + key: "INTEGRATION_TEST_ARGS" + value: "google-cloud-clients/google-cloud-kms" +} + +env_vars: { + key: "JOB_TYPE" + value: "integration" +} + +env_vars: { + key: "GCLOUD_PROJECT" + value: "gcloud-devel" +} + +env_vars: { + key: "GOOGLE_APPLICATION_CREDENTIALS" + value: "keystore/73713_java_it_service_account" +} diff --git a/.kokoro/presubmit/kms-it.cfg b/.kokoro/presubmit/kms-it.cfg new file mode 100644 index 000000000000..5b1d08260c1b --- /dev/null +++ b/.kokoro/presubmit/kms-it.cfg @@ -0,0 +1,27 @@ +# Format: //devtools/kokoro/config/proto/build.proto + +# Configure the docker image for kokoro-trampoline. +env_vars: { + key: "TRAMPOLINE_IMAGE" + value: "gcr.io/cloud-devrel-kokoro-resources/java8" +} + +env_vars: { + key: "INTEGRATION_TEST_ARGS" + value: "google-cloud-clients/google-cloud-kms" +} + +env_vars: { + key: "JOB_TYPE" + value: "integration" +} + +env_vars: { + key: "GCLOUD_PROJECT" + value: "gcloud-devel" +} + +env_vars: { + key: "GOOGLE_APPLICATION_CREDENTIALS" + value: "keystore/73713_java_it_service_account" +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7185da9882f2..ce325fafc742 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -54,6 +54,7 @@ Coding Style Maintain the coding style in the project and in particular the modified files. Follow the Google Java [style](https://google.github.io/styleguide/javaguide.html). +In pull requests, please run `mvn com.coveo:fmt-maven-plugin:format` to format your code diff. ## Contributor License Agreements diff --git a/README.md b/README.md index eecd418c48fb..c93bee8aee00 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-bom - 0.80.0-alpha + 0.81.0-alpha pom import @@ -85,11 +85,11 @@ If you are using Maven, add this to your pom.xml file [//]: # ({x-version-update-start:google-cloud-storage:released}) If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-storage:1.62.0' +compile 'com.google.cloud:google-cloud-storage:1.63.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-storage" % "1.62.0" +libraryDependencies += "com.google.cloud" % "google-cloud-storage" % "1.63.0" ``` [//]: # ({x-version-update-end}) @@ -110,7 +110,7 @@ If you are running into problems with version conflicts, the easiest way to solv com.google.cloud google-cloud-bom - 0.80.0-alpha + 0.81.0-alpha pom import diff --git a/google-api-grpc/grpc-google-cloud-asset-v1beta1/pom.xml b/google-api-grpc/grpc-google-cloud-asset-v1beta1/pom.xml index a4d854ffe22b..3cf1751e2c52 100644 --- a/google-api-grpc/grpc-google-cloud-asset-v1beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-asset-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-asset-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-asset-v1beta1 GRPC library for grpc-google-cloud-asset-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-automl-v1beta1/pom.xml b/google-api-grpc/grpc-google-cloud-automl-v1beta1/pom.xml index 4b22748b5b99..a13566868963 100644 --- a/google-api-grpc/grpc-google-cloud-automl-v1beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-automl-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-automl-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-automl-v1beta1 GRPC library for grpc-google-cloud-automl-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-bigquerydatatransfer-v1/pom.xml b/google-api-grpc/grpc-google-cloud-bigquerydatatransfer-v1/pom.xml index 7c02631013fb..28d5d28b9b19 100644 --- a/google-api-grpc/grpc-google-cloud-bigquerydatatransfer-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-bigquerydatatransfer-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-bigquerydatatransfer-v1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-bigquerydatatransfer-v1 GRPC library for grpc-google-cloud-bigquerydatatransfer-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-bigquerystorage-v1beta1/pom.xml b/google-api-grpc/grpc-google-cloud-bigquerystorage-v1beta1/pom.xml index 3ad09f596d37..907b9489047b 100644 --- a/google-api-grpc/grpc-google-cloud-bigquerystorage-v1beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-bigquerystorage-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-bigquerystorage-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-bigquerystorage-v1beta1 GRPC library for grpc-google-cloud-bigquerystorage-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-bigtable-admin-v2/pom.xml b/google-api-grpc/grpc-google-cloud-bigtable-admin-v2/pom.xml index 834e0919a8a6..e501f67dc2e4 100644 --- a/google-api-grpc/grpc-google-cloud-bigtable-admin-v2/pom.xml +++ b/google-api-grpc/grpc-google-cloud-bigtable-admin-v2/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-bigtable-admin-v2 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-bigtable-admin-v2 GRPC library for grpc-google-cloud-bigtable-admin-v2 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-bigtable-v2/pom.xml b/google-api-grpc/grpc-google-cloud-bigtable-v2/pom.xml index d0909e2e7aee..ca9863f1b1aa 100644 --- a/google-api-grpc/grpc-google-cloud-bigtable-v2/pom.xml +++ b/google-api-grpc/grpc-google-cloud-bigtable-v2/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-bigtable-v2 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-bigtable-v2 GRPC library for grpc-google-cloud-bigtable-v2 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-container-v1/pom.xml b/google-api-grpc/grpc-google-cloud-container-v1/pom.xml index 2f51d2f14460..ac18919f0aeb 100644 --- a/google-api-grpc/grpc-google-cloud-container-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-container-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-container-v1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-container-v1 GRPC library for grpc-google-cloud-container-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-containeranalysis-v1beta1/pom.xml b/google-api-grpc/grpc-google-cloud-containeranalysis-v1beta1/pom.xml index 4a9beb7e5bd9..684220d84ccd 100644 --- a/google-api-grpc/grpc-google-cloud-containeranalysis-v1beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-containeranalysis-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-containeranalysis-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-containeranalysis-v1beta1 GRPC library for grpc-google-cloud-containeranalysis-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-dataproc-v1/pom.xml b/google-api-grpc/grpc-google-cloud-dataproc-v1/pom.xml index 95ade9199676..22abef5d0cb4 100644 --- a/google-api-grpc/grpc-google-cloud-dataproc-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-dataproc-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-dataproc-v1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-dataproc-v1 GRPC library for grpc-google-cloud-dataproc-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-dataproc-v1beta2/pom.xml b/google-api-grpc/grpc-google-cloud-dataproc-v1beta2/pom.xml index 58f311926ec0..a65c73a860e8 100644 --- a/google-api-grpc/grpc-google-cloud-dataproc-v1beta2/pom.xml +++ b/google-api-grpc/grpc-google-cloud-dataproc-v1beta2/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-dataproc-v1beta2 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-dataproc-v1beta2 GRPC library for grpc-google-cloud-dataproc-v1beta2 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-dialogflow-v2/pom.xml b/google-api-grpc/grpc-google-cloud-dialogflow-v2/pom.xml index 2b8d4e80cadf..754a2b9984f0 100644 --- a/google-api-grpc/grpc-google-cloud-dialogflow-v2/pom.xml +++ b/google-api-grpc/grpc-google-cloud-dialogflow-v2/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-dialogflow-v2 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-dialogflow-v2 GRPC library for grpc-google-cloud-dialogflow-v2 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-dialogflow-v2beta1/pom.xml b/google-api-grpc/grpc-google-cloud-dialogflow-v2beta1/pom.xml index 14dbc5c2cb2f..fe085577542e 100644 --- a/google-api-grpc/grpc-google-cloud-dialogflow-v2beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-dialogflow-v2beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-dialogflow-v2beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-dialogflow-v2beta1 GRPC library for grpc-google-cloud-dialogflow-v2beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-dlp-v2/pom.xml b/google-api-grpc/grpc-google-cloud-dlp-v2/pom.xml index dc2153155eea..42afb39ab08f 100644 --- a/google-api-grpc/grpc-google-cloud-dlp-v2/pom.xml +++ b/google-api-grpc/grpc-google-cloud-dlp-v2/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-dlp-v2 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-dlp-v2 GRPC library for grpc-google-cloud-dlp-v2 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/DlpServiceGrpc.java b/google-api-grpc/grpc-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/DlpServiceGrpc.java index 6a9307a985ea..42e9c0aed3f4 100644 --- a/google-api-grpc/grpc-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/DlpServiceGrpc.java +++ b/google-api-grpc/grpc-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/DlpServiceGrpc.java @@ -1171,6 +1171,59 @@ private DlpServiceGrpc() {} return getDeleteJobTriggerMethod; } + @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/1901") + @java.lang.Deprecated // Use {@link #getActivateJobTriggerMethod()} instead. + public static final io.grpc.MethodDescriptor< + com.google.privacy.dlp.v2.ActivateJobTriggerRequest, com.google.privacy.dlp.v2.DlpJob> + METHOD_ACTIVATE_JOB_TRIGGER = getActivateJobTriggerMethodHelper(); + + private static volatile io.grpc.MethodDescriptor< + com.google.privacy.dlp.v2.ActivateJobTriggerRequest, com.google.privacy.dlp.v2.DlpJob> + getActivateJobTriggerMethod; + + @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/1901") + public static io.grpc.MethodDescriptor< + com.google.privacy.dlp.v2.ActivateJobTriggerRequest, com.google.privacy.dlp.v2.DlpJob> + getActivateJobTriggerMethod() { + return getActivateJobTriggerMethodHelper(); + } + + private static io.grpc.MethodDescriptor< + com.google.privacy.dlp.v2.ActivateJobTriggerRequest, com.google.privacy.dlp.v2.DlpJob> + getActivateJobTriggerMethodHelper() { + io.grpc.MethodDescriptor< + com.google.privacy.dlp.v2.ActivateJobTriggerRequest, com.google.privacy.dlp.v2.DlpJob> + getActivateJobTriggerMethod; + if ((getActivateJobTriggerMethod = DlpServiceGrpc.getActivateJobTriggerMethod) == null) { + synchronized (DlpServiceGrpc.class) { + if ((getActivateJobTriggerMethod = DlpServiceGrpc.getActivateJobTriggerMethod) == null) { + DlpServiceGrpc.getActivateJobTriggerMethod = + getActivateJobTriggerMethod = + io.grpc.MethodDescriptor + . + newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName( + generateFullMethodName( + "google.privacy.dlp.v2.DlpService", "ActivateJobTrigger")) + .setSampledToLocalTracing(true) + .setRequestMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.privacy.dlp.v2.ActivateJobTriggerRequest + .getDefaultInstance())) + .setResponseMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.privacy.dlp.v2.DlpJob.getDefaultInstance())) + .setSchemaDescriptor( + new DlpServiceMethodDescriptorSupplier("ActivateJobTrigger")) + .build(); + } + } + } + return getActivateJobTriggerMethod; + } + @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/1901") @java.lang.Deprecated // Use {@link #getCreateDlpJobMethod()} instead. public static final io.grpc.MethodDescriptor< @@ -2066,6 +2119,20 @@ public void deleteJobTrigger( asyncUnimplementedUnaryCall(getDeleteJobTriggerMethodHelper(), responseObserver); } + /** + * + * + *
+     * Activate a job trigger. Causes the immediate execute of a trigger
+     * instead of waiting on the trigger event to occur.
+     * 
+ */ + public void activateJobTrigger( + com.google.privacy.dlp.v2.ActivateJobTriggerRequest request, + io.grpc.stub.StreamObserver responseObserver) { + asyncUnimplementedUnaryCall(getActivateJobTriggerMethodHelper(), responseObserver); + } + /** * * @@ -2362,6 +2429,12 @@ public final io.grpc.ServerServiceDefinition bindService() { new MethodHandlers< com.google.privacy.dlp.v2.DeleteJobTriggerRequest, com.google.protobuf.Empty>( this, METHODID_DELETE_JOB_TRIGGER))) + .addMethod( + getActivateJobTriggerMethodHelper(), + asyncUnaryCall( + new MethodHandlers< + com.google.privacy.dlp.v2.ActivateJobTriggerRequest, + com.google.privacy.dlp.v2.DlpJob>(this, METHODID_ACTIVATE_JOB_TRIGGER))) .addMethod( getCreateDlpJobMethodHelper(), asyncUnaryCall( @@ -2835,6 +2908,23 @@ public void deleteJobTrigger( responseObserver); } + /** + * + * + *
+     * Activate a job trigger. Causes the immediate execute of a trigger
+     * instead of waiting on the trigger event to occur.
+     * 
+ */ + public void activateJobTrigger( + com.google.privacy.dlp.v2.ActivateJobTriggerRequest request, + io.grpc.stub.StreamObserver responseObserver) { + asyncUnaryCall( + getChannel().newCall(getActivateJobTriggerMethodHelper(), getCallOptions()), + request, + responseObserver); + } + /** * * @@ -3362,6 +3452,20 @@ public com.google.protobuf.Empty deleteJobTrigger( getChannel(), getDeleteJobTriggerMethodHelper(), getCallOptions(), request); } + /** + * + * + *
+     * Activate a job trigger. Causes the immediate execute of a trigger
+     * instead of waiting on the trigger event to occur.
+     * 
+ */ + public com.google.privacy.dlp.v2.DlpJob activateJobTrigger( + com.google.privacy.dlp.v2.ActivateJobTriggerRequest request) { + return blockingUnaryCall( + getChannel(), getActivateJobTriggerMethodHelper(), getCallOptions(), request); + } + /** * * @@ -3876,6 +3980,20 @@ protected DlpServiceFutureStub build(io.grpc.Channel channel, io.grpc.CallOption getChannel().newCall(getDeleteJobTriggerMethodHelper(), getCallOptions()), request); } + /** + * + * + *
+     * Activate a job trigger. Causes the immediate execute of a trigger
+     * instead of waiting on the trigger event to occur.
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture + activateJobTrigger(com.google.privacy.dlp.v2.ActivateJobTriggerRequest request) { + return futureUnaryCall( + getChannel().newCall(getActivateJobTriggerMethodHelper(), getCallOptions()), request); + } + /** * * @@ -4060,16 +4178,17 @@ protected DlpServiceFutureStub build(io.grpc.Channel channel, io.grpc.CallOption private static final int METHODID_GET_JOB_TRIGGER = 17; private static final int METHODID_LIST_JOB_TRIGGERS = 18; private static final int METHODID_DELETE_JOB_TRIGGER = 19; - private static final int METHODID_CREATE_DLP_JOB = 20; - private static final int METHODID_LIST_DLP_JOBS = 21; - private static final int METHODID_GET_DLP_JOB = 22; - private static final int METHODID_DELETE_DLP_JOB = 23; - private static final int METHODID_CANCEL_DLP_JOB = 24; - private static final int METHODID_CREATE_STORED_INFO_TYPE = 25; - private static final int METHODID_UPDATE_STORED_INFO_TYPE = 26; - private static final int METHODID_GET_STORED_INFO_TYPE = 27; - private static final int METHODID_LIST_STORED_INFO_TYPES = 28; - private static final int METHODID_DELETE_STORED_INFO_TYPE = 29; + private static final int METHODID_ACTIVATE_JOB_TRIGGER = 20; + private static final int METHODID_CREATE_DLP_JOB = 21; + private static final int METHODID_LIST_DLP_JOBS = 22; + private static final int METHODID_GET_DLP_JOB = 23; + private static final int METHODID_DELETE_DLP_JOB = 24; + private static final int METHODID_CANCEL_DLP_JOB = 25; + private static final int METHODID_CREATE_STORED_INFO_TYPE = 26; + private static final int METHODID_UPDATE_STORED_INFO_TYPE = 27; + private static final int METHODID_GET_STORED_INFO_TYPE = 28; + private static final int METHODID_LIST_STORED_INFO_TYPES = 29; + private static final int METHODID_DELETE_STORED_INFO_TYPE = 30; private static final class MethodHandlers implements io.grpc.stub.ServerCalls.UnaryMethod, @@ -4203,6 +4322,11 @@ public void invoke(Req request, io.grpc.stub.StreamObserver responseObserv (com.google.privacy.dlp.v2.DeleteJobTriggerRequest) request, (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_ACTIVATE_JOB_TRIGGER: + serviceImpl.activateJobTrigger( + (com.google.privacy.dlp.v2.ActivateJobTriggerRequest) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; case METHODID_CREATE_DLP_JOB: serviceImpl.createDlpJob( (com.google.privacy.dlp.v2.CreateDlpJobRequest) request, @@ -4342,6 +4466,7 @@ public static io.grpc.ServiceDescriptor getServiceDescriptor() { .addMethod(getGetJobTriggerMethodHelper()) .addMethod(getListJobTriggersMethodHelper()) .addMethod(getDeleteJobTriggerMethodHelper()) + .addMethod(getActivateJobTriggerMethodHelper()) .addMethod(getCreateDlpJobMethodHelper()) .addMethod(getListDlpJobsMethodHelper()) .addMethod(getGetDlpJobMethodHelper()) diff --git a/google-api-grpc/grpc-google-cloud-error-reporting-v1beta1/pom.xml b/google-api-grpc/grpc-google-cloud-error-reporting-v1beta1/pom.xml index 2b026d0ec5b0..28007d427390 100644 --- a/google-api-grpc/grpc-google-cloud-error-reporting-v1beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-error-reporting-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-error-reporting-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-error-reporting-v1beta1 GRPC library for grpc-google-cloud-error-reporting-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-firestore-v1/pom.xml b/google-api-grpc/grpc-google-cloud-firestore-v1/pom.xml index 13c5ae9ffe0b..55902487d6fa 100644 --- a/google-api-grpc/grpc-google-cloud-firestore-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-firestore-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-firestore-v1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-firestore-v1 GRPC library for grpc-google-cloud-firestore-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-firestore-v1beta1/pom.xml b/google-api-grpc/grpc-google-cloud-firestore-v1beta1/pom.xml index 0b3e110bef08..6d2348cd4aed 100644 --- a/google-api-grpc/grpc-google-cloud-firestore-v1beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-firestore-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-firestore-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-firestore-v1beta1 GRPC library for grpc-google-cloud-firestore-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-iamcredentials-v1/pom.xml b/google-api-grpc/grpc-google-cloud-iamcredentials-v1/pom.xml index 28bd08330593..a5394041c2e6 100644 --- a/google-api-grpc/grpc-google-cloud-iamcredentials-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-iamcredentials-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-iamcredentials-v1 - 0.7.1-alpha-SNAPSHOT + 0.8.0-alpha grpc-google-cloud-iamcredentials-v1 GRPC library for grpc-google-cloud-iamcredentials-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-iot-v1/pom.xml b/google-api-grpc/grpc-google-cloud-iot-v1/pom.xml index 0e7c263dc173..c6165ed3171a 100644 --- a/google-api-grpc/grpc-google-cloud-iot-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-iot-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-iot-v1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-iot-v1 GRPC library for grpc-google-cloud-iot-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-kms-v1/pom.xml b/google-api-grpc/grpc-google-cloud-kms-v1/pom.xml index 692e17f91f06..0db20409fbe6 100644 --- a/google-api-grpc/grpc-google-cloud-kms-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-kms-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-kms-v1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-kms-v1 GRPC library for grpc-google-cloud-kms-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-language-v1/pom.xml b/google-api-grpc/grpc-google-cloud-language-v1/pom.xml index 6865dd322828..d40b7c9d9f72 100644 --- a/google-api-grpc/grpc-google-cloud-language-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-language-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-language-v1 - 1.44.1-SNAPSHOT + 1.45.0 grpc-google-cloud-language-v1 GRPC library for grpc-google-cloud-language-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-language-v1beta2/pom.xml b/google-api-grpc/grpc-google-cloud-language-v1beta2/pom.xml index 1ca38a4a3700..74b5e3b343a4 100644 --- a/google-api-grpc/grpc-google-cloud-language-v1beta2/pom.xml +++ b/google-api-grpc/grpc-google-cloud-language-v1beta2/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-language-v1beta2 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-language-v1beta2 GRPC library for grpc-google-cloud-language-v1beta2 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-logging-v2/pom.xml b/google-api-grpc/grpc-google-cloud-logging-v2/pom.xml index c02d5d627739..26c285bd53ba 100644 --- a/google-api-grpc/grpc-google-cloud-logging-v2/pom.xml +++ b/google-api-grpc/grpc-google-cloud-logging-v2/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-logging-v2 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-logging-v2 GRPC library for grpc-google-cloud-logging-v2 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-monitoring-v3/pom.xml b/google-api-grpc/grpc-google-cloud-monitoring-v3/pom.xml index 0f5e8b7c56d4..05ad025229a2 100644 --- a/google-api-grpc/grpc-google-cloud-monitoring-v3/pom.xml +++ b/google-api-grpc/grpc-google-cloud-monitoring-v3/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-monitoring-v3 - 1.44.1-SNAPSHOT + 1.45.0 grpc-google-cloud-monitoring-v3 GRPC library for grpc-google-cloud-monitoring-v3 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-os-login-v1/pom.xml b/google-api-grpc/grpc-google-cloud-os-login-v1/pom.xml index 71d657fa7e48..ae884728d0fc 100644 --- a/google-api-grpc/grpc-google-cloud-os-login-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-os-login-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-os-login-v1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-os-login-v1 GRPC library for grpc-google-cloud-os-login-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-pubsub-v1/pom.xml b/google-api-grpc/grpc-google-cloud-pubsub-v1/pom.xml index 6e26483896fa..b5a31f195178 100644 --- a/google-api-grpc/grpc-google-cloud-pubsub-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-pubsub-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-pubsub-v1 - 1.44.1-SNAPSHOT + 1.45.0 grpc-google-cloud-pubsub-v1 GRPC library for grpc-google-cloud-pubsub-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-redis-v1/pom.xml b/google-api-grpc/grpc-google-cloud-redis-v1/pom.xml index 3dab005d6908..f92e23dd7bce 100644 --- a/google-api-grpc/grpc-google-cloud-redis-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-redis-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-redis-v1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-redis-v1 GRPC library for grpc-google-cloud-redis-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-redis-v1beta1/pom.xml b/google-api-grpc/grpc-google-cloud-redis-v1beta1/pom.xml index fff4e187a4e7..649278d060ec 100644 --- a/google-api-grpc/grpc-google-cloud-redis-v1beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-redis-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-redis-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-redis-v1beta1 GRPC library for grpc-google-cloud-redis-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-scheduler-v1beta1/pom.xml b/google-api-grpc/grpc-google-cloud-scheduler-v1beta1/pom.xml index bd3ef59a1032..b623e290b5ff 100644 --- a/google-api-grpc/grpc-google-cloud-scheduler-v1beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-scheduler-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-scheduler-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-scheduler-v1beta1 GRPC library for grpc-google-cloud-scheduler-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-securitycenter-v1beta1/pom.xml b/google-api-grpc/grpc-google-cloud-securitycenter-v1beta1/pom.xml index 8576836f51c2..a058f2b60258 100644 --- a/google-api-grpc/grpc-google-cloud-securitycenter-v1beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-securitycenter-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-securitycenter-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-securitycenter-v1beta1 GRPC library for grpc-google-cloud-securitycenter-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-spanner-admin-database-v1/pom.xml b/google-api-grpc/grpc-google-cloud-spanner-admin-database-v1/pom.xml index 6a2bdf756e4b..20ea8e3d8230 100644 --- a/google-api-grpc/grpc-google-cloud-spanner-admin-database-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-spanner-admin-database-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-spanner-admin-database-v1 - 1.7.1-SNAPSHOT + 1.8.0 grpc-google-cloud-spanner-admin-database-v1 GRPC library for grpc-google-cloud-spanner-admin-database-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-spanner-admin-instance-v1/pom.xml b/google-api-grpc/grpc-google-cloud-spanner-admin-instance-v1/pom.xml index 4e718bc3e2ef..97f1950ff566 100644 --- a/google-api-grpc/grpc-google-cloud-spanner-admin-instance-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-spanner-admin-instance-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-spanner-admin-instance-v1 - 1.7.1-SNAPSHOT + 1.8.0 grpc-google-cloud-spanner-admin-instance-v1 GRPC library for grpc-google-cloud-spanner-admin-instance-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-spanner-v1/pom.xml b/google-api-grpc/grpc-google-cloud-spanner-v1/pom.xml index 5b97e72df450..d1809ebd6cc5 100644 --- a/google-api-grpc/grpc-google-cloud-spanner-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-spanner-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-spanner-v1 - 1.7.1-SNAPSHOT + 1.8.0 grpc-google-cloud-spanner-v1 GRPC library for grpc-google-cloud-spanner-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerGrpc.java b/google-api-grpc/grpc-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerGrpc.java index 1ed98b5e963d..79dac7fa211d 100644 --- a/google-api-grpc/grpc-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerGrpc.java +++ b/google-api-grpc/grpc-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerGrpc.java @@ -325,6 +325,61 @@ private SpannerGrpc() {} return getExecuteStreamingSqlMethod; } + @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/1901") + @java.lang.Deprecated // Use {@link #getExecuteBatchDmlMethod()} instead. + public static final io.grpc.MethodDescriptor< + com.google.spanner.v1.ExecuteBatchDmlRequest, + com.google.spanner.v1.ExecuteBatchDmlResponse> + METHOD_EXECUTE_BATCH_DML = getExecuteBatchDmlMethodHelper(); + + private static volatile io.grpc.MethodDescriptor< + com.google.spanner.v1.ExecuteBatchDmlRequest, + com.google.spanner.v1.ExecuteBatchDmlResponse> + getExecuteBatchDmlMethod; + + @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/1901") + public static io.grpc.MethodDescriptor< + com.google.spanner.v1.ExecuteBatchDmlRequest, + com.google.spanner.v1.ExecuteBatchDmlResponse> + getExecuteBatchDmlMethod() { + return getExecuteBatchDmlMethodHelper(); + } + + private static io.grpc.MethodDescriptor< + com.google.spanner.v1.ExecuteBatchDmlRequest, + com.google.spanner.v1.ExecuteBatchDmlResponse> + getExecuteBatchDmlMethodHelper() { + io.grpc.MethodDescriptor< + com.google.spanner.v1.ExecuteBatchDmlRequest, + com.google.spanner.v1.ExecuteBatchDmlResponse> + getExecuteBatchDmlMethod; + if ((getExecuteBatchDmlMethod = SpannerGrpc.getExecuteBatchDmlMethod) == null) { + synchronized (SpannerGrpc.class) { + if ((getExecuteBatchDmlMethod = SpannerGrpc.getExecuteBatchDmlMethod) == null) { + SpannerGrpc.getExecuteBatchDmlMethod = + getExecuteBatchDmlMethod = + io.grpc.MethodDescriptor + . + newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName( + generateFullMethodName("google.spanner.v1.Spanner", "ExecuteBatchDml")) + .setSampledToLocalTracing(true) + .setRequestMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.spanner.v1.ExecuteBatchDmlRequest.getDefaultInstance())) + .setResponseMarshaller( + io.grpc.protobuf.ProtoUtils.marshaller( + com.google.spanner.v1.ExecuteBatchDmlResponse.getDefaultInstance())) + .setSchemaDescriptor(new SpannerMethodDescriptorSupplier("ExecuteBatchDml")) + .build(); + } + } + } + return getExecuteBatchDmlMethod; + } + @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/1901") @java.lang.Deprecated // Use {@link #getReadMethod()} instead. public static final io.grpc.MethodDescriptor< @@ -757,7 +812,9 @@ public void listSessions( * * *
-     * Ends a session, releasing server resources associated with it.
+     * Ends a session, releasing server resources associated with it. This will
+     * asynchronously trigger cancellation of any operations that are running with
+     * this session.
      * 
*/ public void deleteSession( @@ -804,6 +861,35 @@ public void executeStreamingSql( asyncUnimplementedUnaryCall(getExecuteStreamingSqlMethodHelper(), responseObserver); } + /** + * + * + *
+     * Executes a batch of SQL DML statements. This method allows many statements
+     * to be run with lower latency than submitting them sequentially with
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql].
+     * Statements are executed in order, sequentially.
+     * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse] will contain a
+     * [ResultSet][google.spanner.v1.ResultSet] for each DML statement that has successfully executed. If a
+     * statement fails, its error status will be returned as part of the
+     * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse]. Execution will
+     * stop at the first failed statement; the remaining statements will not run.
+     * ExecuteBatchDml is expected to return an OK status with a response even if
+     * there was an error while processing one of the DML statements. Clients must
+     * inspect response.status to determine if there were any errors while
+     * processing the request.
+     * See more details in
+     * [ExecuteBatchDmlRequest][Spanner.ExecuteBatchDmlRequest] and
+     * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse].
+     * 
+ */ + public void executeBatchDml( + com.google.spanner.v1.ExecuteBatchDmlRequest request, + io.grpc.stub.StreamObserver + responseObserver) { + asyncUnimplementedUnaryCall(getExecuteBatchDmlMethodHelper(), responseObserver); + } + /** * * @@ -984,6 +1070,13 @@ public final io.grpc.ServerServiceDefinition bindService() { com.google.spanner.v1.ExecuteSqlRequest, com.google.spanner.v1.PartialResultSet>( this, METHODID_EXECUTE_STREAMING_SQL))) + .addMethod( + getExecuteBatchDmlMethodHelper(), + asyncUnaryCall( + new MethodHandlers< + com.google.spanner.v1.ExecuteBatchDmlRequest, + com.google.spanner.v1.ExecuteBatchDmlResponse>( + this, METHODID_EXECUTE_BATCH_DML))) .addMethod( getReadMethodHelper(), asyncUnaryCall( @@ -1122,7 +1215,9 @@ public void listSessions( * * *
-     * Ends a session, releasing server resources associated with it.
+     * Ends a session, releasing server resources associated with it. This will
+     * asynchronously trigger cancellation of any operations that are running with
+     * this session.
      * 
*/ public void deleteSession( @@ -1178,6 +1273,38 @@ public void executeStreamingSql( responseObserver); } + /** + * + * + *
+     * Executes a batch of SQL DML statements. This method allows many statements
+     * to be run with lower latency than submitting them sequentially with
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql].
+     * Statements are executed in order, sequentially.
+     * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse] will contain a
+     * [ResultSet][google.spanner.v1.ResultSet] for each DML statement that has successfully executed. If a
+     * statement fails, its error status will be returned as part of the
+     * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse]. Execution will
+     * stop at the first failed statement; the remaining statements will not run.
+     * ExecuteBatchDml is expected to return an OK status with a response even if
+     * there was an error while processing one of the DML statements. Clients must
+     * inspect response.status to determine if there were any errors while
+     * processing the request.
+     * See more details in
+     * [ExecuteBatchDmlRequest][Spanner.ExecuteBatchDmlRequest] and
+     * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse].
+     * 
+ */ + public void executeBatchDml( + com.google.spanner.v1.ExecuteBatchDmlRequest request, + io.grpc.stub.StreamObserver + responseObserver) { + asyncUnaryCall( + getChannel().newCall(getExecuteBatchDmlMethodHelper(), getCallOptions()), + request, + responseObserver); + } + /** * * @@ -1422,7 +1549,9 @@ public com.google.spanner.v1.ListSessionsResponse listSessions( * * *
-     * Ends a session, releasing server resources associated with it.
+     * Ends a session, releasing server resources associated with it. This will
+     * asynchronously trigger cancellation of any operations that are running with
+     * this session.
      * 
*/ public com.google.protobuf.Empty deleteSession( @@ -1469,6 +1598,34 @@ public java.util.Iterator executeStreami getChannel(), getExecuteStreamingSqlMethodHelper(), getCallOptions(), request); } + /** + * + * + *
+     * Executes a batch of SQL DML statements. This method allows many statements
+     * to be run with lower latency than submitting them sequentially with
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql].
+     * Statements are executed in order, sequentially.
+     * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse] will contain a
+     * [ResultSet][google.spanner.v1.ResultSet] for each DML statement that has successfully executed. If a
+     * statement fails, its error status will be returned as part of the
+     * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse]. Execution will
+     * stop at the first failed statement; the remaining statements will not run.
+     * ExecuteBatchDml is expected to return an OK status with a response even if
+     * there was an error while processing one of the DML statements. Clients must
+     * inspect response.status to determine if there were any errors while
+     * processing the request.
+     * See more details in
+     * [ExecuteBatchDmlRequest][Spanner.ExecuteBatchDmlRequest] and
+     * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse].
+     * 
+ */ + public com.google.spanner.v1.ExecuteBatchDmlResponse executeBatchDml( + com.google.spanner.v1.ExecuteBatchDmlRequest request) { + return blockingUnaryCall( + getChannel(), getExecuteBatchDmlMethodHelper(), getCallOptions(), request); + } + /** * * @@ -1689,7 +1846,9 @@ protected SpannerFutureStub build(io.grpc.Channel channel, io.grpc.CallOptions c * * *
-     * Ends a session, releasing server resources associated with it.
+     * Ends a session, releasing server resources associated with it. This will
+     * asynchronously trigger cancellation of any operations that are running with
+     * this session.
      * 
*/ public com.google.common.util.concurrent.ListenableFuture @@ -1719,6 +1878,35 @@ protected SpannerFutureStub build(io.grpc.Channel channel, io.grpc.CallOptions c getChannel().newCall(getExecuteSqlMethodHelper(), getCallOptions()), request); } + /** + * + * + *
+     * Executes a batch of SQL DML statements. This method allows many statements
+     * to be run with lower latency than submitting them sequentially with
+     * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql].
+     * Statements are executed in order, sequentially.
+     * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse] will contain a
+     * [ResultSet][google.spanner.v1.ResultSet] for each DML statement that has successfully executed. If a
+     * statement fails, its error status will be returned as part of the
+     * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse]. Execution will
+     * stop at the first failed statement; the remaining statements will not run.
+     * ExecuteBatchDml is expected to return an OK status with a response even if
+     * there was an error while processing one of the DML statements. Clients must
+     * inspect response.status to determine if there were any errors while
+     * processing the request.
+     * See more details in
+     * [ExecuteBatchDmlRequest][Spanner.ExecuteBatchDmlRequest] and
+     * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse].
+     * 
+ */ + public com.google.common.util.concurrent.ListenableFuture< + com.google.spanner.v1.ExecuteBatchDmlResponse> + executeBatchDml(com.google.spanner.v1.ExecuteBatchDmlRequest request) { + return futureUnaryCall( + getChannel().newCall(getExecuteBatchDmlMethodHelper(), getCallOptions()), request); + } + /** * * @@ -1851,13 +2039,14 @@ public com.google.common.util.concurrent.ListenableFuture implements io.grpc.stub.ServerCalls.UnaryMethod, @@ -1908,6 +2097,12 @@ public void invoke(Req request, io.grpc.stub.StreamObserver responseObserv (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_EXECUTE_BATCH_DML: + serviceImpl.executeBatchDml( + (com.google.spanner.v1.ExecuteBatchDmlRequest) request, + (io.grpc.stub.StreamObserver) + responseObserver); + break; case METHODID_READ: serviceImpl.read( (com.google.spanner.v1.ReadRequest) request, @@ -2014,6 +2209,7 @@ public static io.grpc.ServiceDescriptor getServiceDescriptor() { .addMethod(getDeleteSessionMethodHelper()) .addMethod(getExecuteSqlMethodHelper()) .addMethod(getExecuteStreamingSqlMethodHelper()) + .addMethod(getExecuteBatchDmlMethodHelper()) .addMethod(getReadMethodHelper()) .addMethod(getStreamingReadMethodHelper()) .addMethod(getBeginTransactionMethodHelper()) diff --git a/google-api-grpc/grpc-google-cloud-speech-v1/pom.xml b/google-api-grpc/grpc-google-cloud-speech-v1/pom.xml index ba410d12d352..41279b3c116b 100644 --- a/google-api-grpc/grpc-google-cloud-speech-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-speech-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-speech-v1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-speech-v1 GRPC library for grpc-google-cloud-speech-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-speech-v1beta1/pom.xml b/google-api-grpc/grpc-google-cloud-speech-v1beta1/pom.xml index ee4f6caaf140..6dcb764c548e 100644 --- a/google-api-grpc/grpc-google-cloud-speech-v1beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-speech-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-speech-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-speech-v1beta1 GRPC library for grpc-google-cloud-speech-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-speech-v1p1beta1/pom.xml b/google-api-grpc/grpc-google-cloud-speech-v1p1beta1/pom.xml index 0f139d4d4cbc..9dbacd8888bd 100644 --- a/google-api-grpc/grpc-google-cloud-speech-v1p1beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-speech-v1p1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-speech-v1p1beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-speech-v1p1beta1 GRPC library for grpc-google-cloud-speech-v1p1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-tasks-v2beta2/pom.xml b/google-api-grpc/grpc-google-cloud-tasks-v2beta2/pom.xml index ab9b6a03f1cd..c4d6017a240e 100644 --- a/google-api-grpc/grpc-google-cloud-tasks-v2beta2/pom.xml +++ b/google-api-grpc/grpc-google-cloud-tasks-v2beta2/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-tasks-v2beta2 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-tasks-v2beta2 GRPC library for grpc-google-cloud-tasks-v2beta2 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-tasks-v2beta3/pom.xml b/google-api-grpc/grpc-google-cloud-tasks-v2beta3/pom.xml index 6b3d755c4472..abcc1a78bc4d 100644 --- a/google-api-grpc/grpc-google-cloud-tasks-v2beta3/pom.xml +++ b/google-api-grpc/grpc-google-cloud-tasks-v2beta3/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-tasks-v2beta3 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-tasks-v2beta3 GRPC library for grpc-google-cloud-tasks-v2beta3 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-texttospeech-v1/pom.xml b/google-api-grpc/grpc-google-cloud-texttospeech-v1/pom.xml index ee0d8a106c3a..e730c05eb8b9 100644 --- a/google-api-grpc/grpc-google-cloud-texttospeech-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-texttospeech-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-texttospeech-v1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-texttospeech-v1 GRPC library for grpc-google-cloud-texttospeech-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-texttospeech-v1beta1/pom.xml b/google-api-grpc/grpc-google-cloud-texttospeech-v1beta1/pom.xml index 4bf40cee92f4..e5e012e46f2d 100644 --- a/google-api-grpc/grpc-google-cloud-texttospeech-v1beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-texttospeech-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-texttospeech-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-texttospeech-v1beta1 GRPC library for grpc-google-cloud-texttospeech-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-trace-v1/pom.xml b/google-api-grpc/grpc-google-cloud-trace-v1/pom.xml index 1dc5dc0623b7..c60f08c7ccdb 100644 --- a/google-api-grpc/grpc-google-cloud-trace-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-trace-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-trace-v1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-trace-v1 GRPC library for grpc-google-cloud-trace-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-trace-v2/pom.xml b/google-api-grpc/grpc-google-cloud-trace-v2/pom.xml index 77d46d51fbaf..2099b047b52b 100644 --- a/google-api-grpc/grpc-google-cloud-trace-v2/pom.xml +++ b/google-api-grpc/grpc-google-cloud-trace-v2/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-trace-v2 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-trace-v2 GRPC library for grpc-google-cloud-trace-v2 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-video-intelligence-v1/pom.xml b/google-api-grpc/grpc-google-cloud-video-intelligence-v1/pom.xml index 5d3f958074fe..1b8bbdebda7d 100644 --- a/google-api-grpc/grpc-google-cloud-video-intelligence-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-video-intelligence-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-video-intelligence-v1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-video-intelligence-v1 GRPC library for grpc-google-cloud-video-intelligence-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-video-intelligence-v1beta1/pom.xml b/google-api-grpc/grpc-google-cloud-video-intelligence-v1beta1/pom.xml index 69240ec8df80..8bc8ce33011c 100644 --- a/google-api-grpc/grpc-google-cloud-video-intelligence-v1beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-video-intelligence-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-video-intelligence-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-video-intelligence-v1beta1 GRPC library for grpc-google-cloud-video-intelligence-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-video-intelligence-v1beta2/pom.xml b/google-api-grpc/grpc-google-cloud-video-intelligence-v1beta2/pom.xml index 2d3b40aaa563..266e9af13fd5 100644 --- a/google-api-grpc/grpc-google-cloud-video-intelligence-v1beta2/pom.xml +++ b/google-api-grpc/grpc-google-cloud-video-intelligence-v1beta2/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-video-intelligence-v1beta2 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-video-intelligence-v1beta2 GRPC library for grpc-google-cloud-video-intelligence-v1beta2 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-video-intelligence-v1p1beta1/pom.xml b/google-api-grpc/grpc-google-cloud-video-intelligence-v1p1beta1/pom.xml index 46bdcccc244c..f7338dfa7315 100644 --- a/google-api-grpc/grpc-google-cloud-video-intelligence-v1p1beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-video-intelligence-v1p1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-video-intelligence-v1p1beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-video-intelligence-v1p1beta1 GRPC library for grpc-google-cloud-video-intelligence-v1p1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-video-intelligence-v1p2beta1/pom.xml b/google-api-grpc/grpc-google-cloud-video-intelligence-v1p2beta1/pom.xml index f2cf9bc37a01..73b52f02f9f9 100644 --- a/google-api-grpc/grpc-google-cloud-video-intelligence-v1p2beta1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-video-intelligence-v1p2beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-video-intelligence-v1p2beta1 - 0.45.1-SNAPSHOT + 0.46.0 grpc-google-cloud-video-intelligence-v1p2beta1 GRPC library for grpc-google-cloud-video-intelligence-v1p2beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-vision-v1/pom.xml b/google-api-grpc/grpc-google-cloud-vision-v1/pom.xml index a96506c6c29c..c53cebdc7b34 100644 --- a/google-api-grpc/grpc-google-cloud-vision-v1/pom.xml +++ b/google-api-grpc/grpc-google-cloud-vision-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 grpc-google-cloud-vision-v1 - 1.44.1-SNAPSHOT + 1.45.0 grpc-google-cloud-vision-v1 GRPC library for grpc-google-cloud-vision-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/grpc-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/ProductSearchGrpc.java b/google-api-grpc/grpc-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/ProductSearchGrpc.java index 8098ea084b6f..1ae87bc3751b 100644 --- a/google-api-grpc/grpc-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/ProductSearchGrpc.java +++ b/google-api-grpc/grpc-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/ProductSearchGrpc.java @@ -1133,8 +1133,8 @@ public void updateProductSet( * * *
-     * Permanently deletes a ProductSet. All Products and ReferenceImages in the
-     * ProductSet will be deleted.
+     * Permanently deletes a ProductSet. Products and ReferenceImages in the
+     * ProductSet are not deleted.
      * The actual image files are not deleted from Google Cloud Storage.
      * Possible errors:
      * * Returns NOT_FOUND if the ProductSet does not exist.
@@ -1620,8 +1620,8 @@ public void updateProductSet(
      *
      *
      * 
-     * Permanently deletes a ProductSet. All Products and ReferenceImages in the
-     * ProductSet will be deleted.
+     * Permanently deletes a ProductSet. Products and ReferenceImages in the
+     * ProductSet are not deleted.
      * The actual image files are not deleted from Google Cloud Storage.
      * Possible errors:
      * * Returns NOT_FOUND if the ProductSet does not exist.
@@ -2018,8 +2018,8 @@ public com.google.cloud.vision.v1.ProductSet updateProductSet(
      *
      *
      * 
-     * Permanently deletes a ProductSet. All Products and ReferenceImages in the
-     * ProductSet will be deleted.
+     * Permanently deletes a ProductSet. Products and ReferenceImages in the
+     * ProductSet are not deleted.
      * The actual image files are not deleted from Google Cloud Storage.
      * Possible errors:
      * * Returns NOT_FOUND if the ProductSet does not exist.
@@ -2372,8 +2372,8 @@ protected ProductSearchFutureStub build(
      *
      *
      * 
-     * Permanently deletes a ProductSet. All Products and ReferenceImages in the
-     * ProductSet will be deleted.
+     * Permanently deletes a ProductSet. Products and ReferenceImages in the
+     * ProductSet are not deleted.
      * The actual image files are not deleted from Google Cloud Storage.
      * Possible errors:
      * * Returns NOT_FOUND if the ProductSet does not exist.
diff --git a/google-api-grpc/grpc-google-cloud-vision-v1p1beta1/pom.xml b/google-api-grpc/grpc-google-cloud-vision-v1p1beta1/pom.xml
index 82bd4c887208..2cacf8c374ff 100644
--- a/google-api-grpc/grpc-google-cloud-vision-v1p1beta1/pom.xml
+++ b/google-api-grpc/grpc-google-cloud-vision-v1p1beta1/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   grpc-google-cloud-vision-v1p1beta1
-  0.45.1-SNAPSHOT
+  0.46.0
   grpc-google-cloud-vision-v1p1beta1
   GRPC library for grpc-google-cloud-vision-v1p1beta1
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/grpc-google-cloud-vision-v1p2beta1/pom.xml b/google-api-grpc/grpc-google-cloud-vision-v1p2beta1/pom.xml
index e0321b211a6a..7cd06ab2ccc1 100644
--- a/google-api-grpc/grpc-google-cloud-vision-v1p2beta1/pom.xml
+++ b/google-api-grpc/grpc-google-cloud-vision-v1p2beta1/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   grpc-google-cloud-vision-v1p2beta1
-  1.44.1-SNAPSHOT
+  1.45.0
   grpc-google-cloud-vision-v1p2beta1
   GRPC library for grpc-google-cloud-vision-v1p2beta1
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/grpc-google-cloud-vision-v1p3beta1/pom.xml b/google-api-grpc/grpc-google-cloud-vision-v1p3beta1/pom.xml
index d942ada72de6..b4579a4ba924 100644
--- a/google-api-grpc/grpc-google-cloud-vision-v1p3beta1/pom.xml
+++ b/google-api-grpc/grpc-google-cloud-vision-v1p3beta1/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   grpc-google-cloud-vision-v1p3beta1
-  0.45.1-SNAPSHOT
+  0.46.0
   grpc-google-cloud-vision-v1p3beta1
   GRPC library for grpc-google-cloud-vision-v1p3beta1
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/grpc-google-cloud-websecurityscanner-v1alpha/pom.xml b/google-api-grpc/grpc-google-cloud-websecurityscanner-v1alpha/pom.xml
index cfea630afe96..717c18d51daa 100644
--- a/google-api-grpc/grpc-google-cloud-websecurityscanner-v1alpha/pom.xml
+++ b/google-api-grpc/grpc-google-cloud-websecurityscanner-v1alpha/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   grpc-google-cloud-websecurityscanner-v1alpha
-  0.45.1-SNAPSHOT
+  0.46.0
   grpc-google-cloud-websecurityscanner-v1alpha
   GRPC library for grpc-google-cloud-websecurityscanner-v1alpha
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/pom.xml b/google-api-grpc/pom.xml
index 9112d8746cee..008015ec8e40 100644
--- a/google-api-grpc/pom.xml
+++ b/google-api-grpc/pom.xml
@@ -4,7 +4,7 @@
   com.google.api.grpc
   google-api-grpc
   pom
-  0.45.1-SNAPSHOT
+  0.46.0
   Google Cloud API gRPC
   https://github.com/googleapis/google-cloud-java/tree/master/google-api-grpc
   
@@ -125,7 +125,7 @@
       
         com.google.api.grpc
         proto-google-common-protos
-        1.12.0
+        1.14.0
       
       
         com.google.api.grpc
@@ -142,517 +142,517 @@
       
         com.google.api.grpc
         proto-google-cloud-asset-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-asset-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-automl-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-automl-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-bigtable-v2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-bigtable-v2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-bigtable-admin-v2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-bigtable-admin-v2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-bigquerydatatransfer-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-bigquerydatatransfer-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-bigquerystorage-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-bigquerystorage-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-container-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-container-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-containeranalysis-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-containeranalysis-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-dataproc-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-dataproc-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-dataproc-v1beta2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-dataproc-v1beta2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-datastore-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-dlp-v2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-dlp-v2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-dialogflow-v2beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-dialogflow-v2beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-dialogflow-v2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-dialogflow-v2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-error-reporting-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-error-reporting-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-firestore-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-firestore-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-firestore-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-firestore-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-kms-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-kms-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-language-v1
-        1.44.1-SNAPSHOT
+        1.45.0
       
       
         com.google.api.grpc
         grpc-google-cloud-language-v1
-        1.44.1-SNAPSHOT
+        1.45.0
       
       
         com.google.api.grpc
         proto-google-cloud-language-v1beta2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-language-v1beta2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-logging-v2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-logging-v2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-monitoring-v3
-        1.44.1-SNAPSHOT
+        1.45.0
       
       
         com.google.api.grpc
         grpc-google-cloud-monitoring-v3
-        1.44.1-SNAPSHOT
+        1.45.0
       
       
         com.google.api.grpc
         proto-google-cloud-os-login-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-os-login-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-pubsub-v1
-        1.44.1-SNAPSHOT
+        1.45.0
       
       
         com.google.api.grpc
         grpc-google-cloud-pubsub-v1
-        1.44.1-SNAPSHOT
+        1.45.0
       
       
         com.google.api.grpc
         proto-google-cloud-redis-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-redis-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-redis-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-redis-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-scheduler-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-scheduler-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-spanner-v1
-        1.7.1-SNAPSHOT
+        1.8.0
       
       
         com.google.api.grpc
         grpc-google-cloud-spanner-v1
-        1.7.1-SNAPSHOT
+        1.8.0
       
       
         com.google.api.grpc
         proto-google-cloud-spanner-admin-database-v1
-        1.7.1-SNAPSHOT
+        1.8.0
       
       
         com.google.api.grpc
         grpc-google-cloud-spanner-admin-database-v1
-        1.7.1-SNAPSHOT
+        1.8.0
       
       
         com.google.api.grpc
         proto-google-cloud-spanner-admin-instance-v1
-        1.7.1-SNAPSHOT
+        1.8.0
       
       
         com.google.api.grpc
         grpc-google-cloud-spanner-admin-instance-v1
-        1.7.1-SNAPSHOT
+        1.8.0
       
       
         com.google.api.grpc
         proto-google-cloud-speech-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-speech-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-speech-v1p1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-speech-v1p1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-speech-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-speech-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-tasks-v2beta2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-tasks-v2beta2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-tasks-v2beta3
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-tasks-v2beta3
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-texttospeech-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-texttospeech-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-texttospeech-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-texttospeech-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-trace-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-trace-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-trace-v2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-trace-v2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-vision-v1
-        1.44.1-SNAPSHOT
+        1.45.0
       
       
         com.google.api.grpc
         grpc-google-cloud-vision-v1
-        1.44.1-SNAPSHOT
+        1.45.0
       
       
         com.google.api.grpc
         proto-google-cloud-vision-v1p1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-vision-v1p1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-vision-v1p2beta1
-        1.44.1-SNAPSHOT
+        1.45.0
       
       
         com.google.api.grpc
         grpc-google-cloud-vision-v1p2beta1
-        1.44.1-SNAPSHOT
+        1.45.0
       
       
         com.google.api.grpc
         proto-google-cloud-vision-v1p3beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-vision-v1p3beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-video-intelligence-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-video-intelligence-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-video-intelligence-v1beta2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-video-intelligence-v1beta2
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-video-intelligence-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-video-intelligence-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-video-intelligence-v1p1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-video-intelligence-v1p1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-video-intelligence-v1p2beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-video-intelligence-v1p2beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-iot-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-iot-v1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-securitycenter-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-securitycenter-v1beta1
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-websecurityscanner-v1alpha
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         grpc-google-cloud-websecurityscanner-v1alpha
-        0.45.1-SNAPSHOT
+        0.46.0
       
       
         com.google.api.grpc
         proto-google-cloud-iamcredentials-v1
-        0.7.1-alpha-SNAPSHOT
+        0.8.0-alpha
       
       
         com.google.api.grpc
         grpc-google-cloud-iamcredentials-v1
-        0.7.1-alpha-SNAPSHOT
+        0.8.0-alpha
       
     
   
diff --git a/google-api-grpc/proto-google-cloud-asset-v1beta1/pom.xml b/google-api-grpc/proto-google-cloud-asset-v1beta1/pom.xml
index 922044726956..436f72a8df5f 100644
--- a/google-api-grpc/proto-google-cloud-asset-v1beta1/pom.xml
+++ b/google-api-grpc/proto-google-cloud-asset-v1beta1/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   proto-google-cloud-asset-v1beta1
-  0.45.1-SNAPSHOT
+  0.46.0
   proto-google-cloud-asset-v1beta1
   PROTO library for proto-google-cloud-asset-v1beta1
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/proto-google-cloud-automl-v1beta1/pom.xml b/google-api-grpc/proto-google-cloud-automl-v1beta1/pom.xml
index 7a1a19b518fb..7d18daf4c020 100644
--- a/google-api-grpc/proto-google-cloud-automl-v1beta1/pom.xml
+++ b/google-api-grpc/proto-google-cloud-automl-v1beta1/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   proto-google-cloud-automl-v1beta1
-  0.45.1-SNAPSHOT
+  0.46.0
   proto-google-cloud-automl-v1beta1
   PROTO library for proto-google-cloud-automl-v1beta1
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/proto-google-cloud-bigquerydatatransfer-v1/pom.xml b/google-api-grpc/proto-google-cloud-bigquerydatatransfer-v1/pom.xml
index c0f788b2ca4a..f7f36a12ff2b 100644
--- a/google-api-grpc/proto-google-cloud-bigquerydatatransfer-v1/pom.xml
+++ b/google-api-grpc/proto-google-cloud-bigquerydatatransfer-v1/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   proto-google-cloud-bigquerydatatransfer-v1
-  0.45.1-SNAPSHOT
+  0.46.0
   proto-google-cloud-bigquerydatatransfer-v1
   PROTO library for proto-google-cloud-bigquerydatatransfer-v1
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/proto-google-cloud-bigquerystorage-v1beta1/pom.xml b/google-api-grpc/proto-google-cloud-bigquerystorage-v1beta1/pom.xml
index f813941a8202..f697f2ba3189 100644
--- a/google-api-grpc/proto-google-cloud-bigquerystorage-v1beta1/pom.xml
+++ b/google-api-grpc/proto-google-cloud-bigquerystorage-v1beta1/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   proto-google-cloud-bigquerystorage-v1beta1
-  0.45.1-SNAPSHOT
+  0.46.0
   proto-google-cloud-bigquerystorage-v1beta1
   PROTO library for proto-google-cloud-bigquerystorage-v1beta1
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/proto-google-cloud-bigtable-admin-v2/pom.xml b/google-api-grpc/proto-google-cloud-bigtable-admin-v2/pom.xml
index 36560004bed3..52d73b5148e3 100644
--- a/google-api-grpc/proto-google-cloud-bigtable-admin-v2/pom.xml
+++ b/google-api-grpc/proto-google-cloud-bigtable-admin-v2/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   proto-google-cloud-bigtable-admin-v2
-  0.45.1-SNAPSHOT
+  0.46.0
   proto-google-cloud-bigtable-admin-v2
   PROTO library for proto-google-cloud-bigtable-admin-v2
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/proto-google-cloud-bigtable-v2/pom.xml b/google-api-grpc/proto-google-cloud-bigtable-v2/pom.xml
index c53679f27b73..4ec4ce0e1181 100644
--- a/google-api-grpc/proto-google-cloud-bigtable-v2/pom.xml
+++ b/google-api-grpc/proto-google-cloud-bigtable-v2/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   proto-google-cloud-bigtable-v2
-  0.45.1-SNAPSHOT
+  0.46.0
   proto-google-cloud-bigtable-v2
   PROTO library for proto-google-cloud-bigtable-v2
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/proto-google-cloud-container-v1/pom.xml b/google-api-grpc/proto-google-cloud-container-v1/pom.xml
index 38c9f9c15ccf..8fe21aa3f0ff 100644
--- a/google-api-grpc/proto-google-cloud-container-v1/pom.xml
+++ b/google-api-grpc/proto-google-cloud-container-v1/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   proto-google-cloud-container-v1
-  0.45.1-SNAPSHOT
+  0.46.0
   proto-google-cloud-container-v1
   PROTO library for proto-google-cloud-container-v1
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/proto-google-cloud-containeranalysis-v1beta1/pom.xml b/google-api-grpc/proto-google-cloud-containeranalysis-v1beta1/pom.xml
index c8aecf23956f..61a62cb231ca 100644
--- a/google-api-grpc/proto-google-cloud-containeranalysis-v1beta1/pom.xml
+++ b/google-api-grpc/proto-google-cloud-containeranalysis-v1beta1/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   proto-google-cloud-containeranalysis-v1beta1
-  0.45.1-SNAPSHOT
+  0.46.0
   proto-google-cloud-containeranalysis-v1beta1
   PROTO library for proto-google-cloud-containeranalysis-v1beta1
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/proto-google-cloud-dataproc-v1/pom.xml b/google-api-grpc/proto-google-cloud-dataproc-v1/pom.xml
index 14fb6688a6bb..526c10812453 100644
--- a/google-api-grpc/proto-google-cloud-dataproc-v1/pom.xml
+++ b/google-api-grpc/proto-google-cloud-dataproc-v1/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   proto-google-cloud-dataproc-v1
-  0.45.1-SNAPSHOT
+  0.46.0
   proto-google-cloud-dataproc-v1
   PROTO library for proto-google-cloud-dataproc-v1
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/proto-google-cloud-dataproc-v1beta2/pom.xml b/google-api-grpc/proto-google-cloud-dataproc-v1beta2/pom.xml
index ce743fb058f0..7019b0a5598b 100644
--- a/google-api-grpc/proto-google-cloud-dataproc-v1beta2/pom.xml
+++ b/google-api-grpc/proto-google-cloud-dataproc-v1beta2/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   proto-google-cloud-dataproc-v1beta2
-  0.45.1-SNAPSHOT
+  0.46.0
   proto-google-cloud-dataproc-v1beta2
   PROTO library for proto-google-cloud-dataproc-v1beta2
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/proto-google-cloud-datastore-v1/pom.xml b/google-api-grpc/proto-google-cloud-datastore-v1/pom.xml
index 03671f64b1e5..5d087f84c1c1 100644
--- a/google-api-grpc/proto-google-cloud-datastore-v1/pom.xml
+++ b/google-api-grpc/proto-google-cloud-datastore-v1/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   proto-google-cloud-datastore-v1
-  0.45.1-SNAPSHOT
+  0.46.0
   proto-google-cloud-datastore-v1
   PROTO library for proto-google-cloud-datastore-v1
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/proto-google-cloud-dialogflow-v2/pom.xml b/google-api-grpc/proto-google-cloud-dialogflow-v2/pom.xml
index c5f2497928b8..9f5c69e48ffc 100644
--- a/google-api-grpc/proto-google-cloud-dialogflow-v2/pom.xml
+++ b/google-api-grpc/proto-google-cloud-dialogflow-v2/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   proto-google-cloud-dialogflow-v2
-  0.45.1-SNAPSHOT
+  0.46.0
   proto-google-cloud-dialogflow-v2
   PROTO library for proto-google-cloud-dialogflow-v2
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/proto-google-cloud-dialogflow-v2beta1/pom.xml b/google-api-grpc/proto-google-cloud-dialogflow-v2beta1/pom.xml
index 27da3a76c076..d83c0ac96519 100644
--- a/google-api-grpc/proto-google-cloud-dialogflow-v2beta1/pom.xml
+++ b/google-api-grpc/proto-google-cloud-dialogflow-v2beta1/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   proto-google-cloud-dialogflow-v2beta1
-  0.45.1-SNAPSHOT
+  0.46.0
   proto-google-cloud-dialogflow-v2beta1
   PROTO library for proto-google-cloud-dialogflow-v2beta1
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/pom.xml b/google-api-grpc/proto-google-cloud-dlp-v2/pom.xml
index 56324dd316e6..5d031671e68c 100644
--- a/google-api-grpc/proto-google-cloud-dlp-v2/pom.xml
+++ b/google-api-grpc/proto-google-cloud-dlp-v2/pom.xml
@@ -3,13 +3,13 @@
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   proto-google-cloud-dlp-v2
-  0.45.1-SNAPSHOT
+  0.46.0
   proto-google-cloud-dlp-v2
   PROTO library for proto-google-cloud-dlp-v2
   
     com.google.api.grpc
     google-api-grpc
-    0.45.1-SNAPSHOT
+    0.46.0
   
   
     
diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/Action.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/Action.java
index 7d032c6dc068..f8be42019833 100644
--- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/Action.java
+++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/Action.java
@@ -101,6 +101,25 @@ private Action(
               actionCase_ = 3;
               break;
             }
+          case 66:
+            {
+              com.google.privacy.dlp.v2.Action.JobNotificationEmails.Builder subBuilder = null;
+              if (actionCase_ == 8) {
+                subBuilder =
+                    ((com.google.privacy.dlp.v2.Action.JobNotificationEmails) action_).toBuilder();
+              }
+              action_ =
+                  input.readMessage(
+                      com.google.privacy.dlp.v2.Action.JobNotificationEmails.parser(),
+                      extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(
+                    (com.google.privacy.dlp.v2.Action.JobNotificationEmails) action_);
+                action_ = subBuilder.buildPartial();
+              }
+              actionCase_ = 8;
+              break;
+            }
           default:
             {
               if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
@@ -1875,209 +1894,707 @@ public com.google.privacy.dlp.v2.Action.PublishSummaryToCscc getDefaultInstanceF
     }
   }
 
-  private int actionCase_ = 0;
-  private java.lang.Object action_;
-
-  public enum ActionCase implements com.google.protobuf.Internal.EnumLite {
-    SAVE_FINDINGS(1),
-    PUB_SUB(2),
-    PUBLISH_SUMMARY_TO_CSCC(3),
-    ACTION_NOT_SET(0);
-    private final int value;
-
-    private ActionCase(int value) {
-      this.value = value;
-    }
-    /** @deprecated Use {@link #forNumber(int)} instead. */
-    @java.lang.Deprecated
-    public static ActionCase valueOf(int value) {
-      return forNumber(value);
-    }
-
-    public static ActionCase forNumber(int value) {
-      switch (value) {
-        case 1:
-          return SAVE_FINDINGS;
-        case 2:
-          return PUB_SUB;
-        case 3:
-          return PUBLISH_SUMMARY_TO_CSCC;
-        case 0:
-          return ACTION_NOT_SET;
-        default:
-          return null;
-      }
-    }
-
-    public int getNumber() {
-      return this.value;
-    }
-  };
-
-  public ActionCase getActionCase() {
-    return ActionCase.forNumber(actionCase_);
-  }
-
-  public static final int SAVE_FINDINGS_FIELD_NUMBER = 1;
-  /**
-   *
-   *
-   * 
-   * Save resulting findings in a provided location.
-   * 
- * - * .google.privacy.dlp.v2.Action.SaveFindings save_findings = 1; - */ - public boolean hasSaveFindings() { - return actionCase_ == 1; - } - /** - * - * - *
-   * Save resulting findings in a provided location.
-   * 
- * - * .google.privacy.dlp.v2.Action.SaveFindings save_findings = 1; - */ - public com.google.privacy.dlp.v2.Action.SaveFindings getSaveFindings() { - if (actionCase_ == 1) { - return (com.google.privacy.dlp.v2.Action.SaveFindings) action_; - } - return com.google.privacy.dlp.v2.Action.SaveFindings.getDefaultInstance(); - } + public interface JobNotificationEmailsOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.privacy.dlp.v2.Action.JobNotificationEmails) + com.google.protobuf.MessageOrBuilder {} /** * * *
-   * Save resulting findings in a provided location.
+   * Enable email notification to project owners and editors on jobs's
+   * completion/failure.
    * 
* - * .google.privacy.dlp.v2.Action.SaveFindings save_findings = 1; + * Protobuf type {@code google.privacy.dlp.v2.Action.JobNotificationEmails} */ - public com.google.privacy.dlp.v2.Action.SaveFindingsOrBuilder getSaveFindingsOrBuilder() { - if (actionCase_ == 1) { - return (com.google.privacy.dlp.v2.Action.SaveFindings) action_; + public static final class JobNotificationEmails extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.privacy.dlp.v2.Action.JobNotificationEmails) + JobNotificationEmailsOrBuilder { + private static final long serialVersionUID = 0L; + // Use JobNotificationEmails.newBuilder() to construct. + private JobNotificationEmails(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); } - return com.google.privacy.dlp.v2.Action.SaveFindings.getDefaultInstance(); - } - public static final int PUB_SUB_FIELD_NUMBER = 2; - /** - * - * - *
-   * Publish a notification to a pubsub topic.
-   * 
- * - * .google.privacy.dlp.v2.Action.PublishToPubSub pub_sub = 2; - */ - public boolean hasPubSub() { - return actionCase_ == 2; - } - /** - * - * - *
-   * Publish a notification to a pubsub topic.
-   * 
- * - * .google.privacy.dlp.v2.Action.PublishToPubSub pub_sub = 2; - */ - public com.google.privacy.dlp.v2.Action.PublishToPubSub getPubSub() { - if (actionCase_ == 2) { - return (com.google.privacy.dlp.v2.Action.PublishToPubSub) action_; - } - return com.google.privacy.dlp.v2.Action.PublishToPubSub.getDefaultInstance(); - } - /** - * - * - *
-   * Publish a notification to a pubsub topic.
-   * 
- * - * .google.privacy.dlp.v2.Action.PublishToPubSub pub_sub = 2; - */ - public com.google.privacy.dlp.v2.Action.PublishToPubSubOrBuilder getPubSubOrBuilder() { - if (actionCase_ == 2) { - return (com.google.privacy.dlp.v2.Action.PublishToPubSub) action_; + private JobNotificationEmails() {} + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; } - return com.google.privacy.dlp.v2.Action.PublishToPubSub.getDefaultInstance(); - } - public static final int PUBLISH_SUMMARY_TO_CSCC_FIELD_NUMBER = 3; - /** - * - * - *
-   * Publish summary to Cloud Security Command Center (Alpha).
-   * 
- * - * .google.privacy.dlp.v2.Action.PublishSummaryToCscc publish_summary_to_cscc = 3; - */ - public boolean hasPublishSummaryToCscc() { - return actionCase_ == 3; - } - /** - * - * - *
-   * Publish summary to Cloud Security Command Center (Alpha).
-   * 
- * - * .google.privacy.dlp.v2.Action.PublishSummaryToCscc publish_summary_to_cscc = 3; - */ - public com.google.privacy.dlp.v2.Action.PublishSummaryToCscc getPublishSummaryToCscc() { - if (actionCase_ == 3) { - return (com.google.privacy.dlp.v2.Action.PublishSummaryToCscc) action_; + private JobNotificationEmails( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: + { + if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } } - return com.google.privacy.dlp.v2.Action.PublishSummaryToCscc.getDefaultInstance(); - } - /** - * - * - *
-   * Publish summary to Cloud Security Command Center (Alpha).
-   * 
- * - * .google.privacy.dlp.v2.Action.PublishSummaryToCscc publish_summary_to_cscc = 3; - */ - public com.google.privacy.dlp.v2.Action.PublishSummaryToCsccOrBuilder - getPublishSummaryToCsccOrBuilder() { - if (actionCase_ == 3) { - return (com.google.privacy.dlp.v2.Action.PublishSummaryToCscc) action_; + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.privacy.dlp.v2.DlpProto + .internal_static_google_privacy_dlp_v2_Action_JobNotificationEmails_descriptor; } - return com.google.privacy.dlp.v2.Action.PublishSummaryToCscc.getDefaultInstance(); - } - private byte memoizedIsInitialized = -1; + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.privacy.dlp.v2.DlpProto + .internal_static_google_privacy_dlp_v2_Action_JobNotificationEmails_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.privacy.dlp.v2.Action.JobNotificationEmails.class, + com.google.privacy.dlp.v2.Action.JobNotificationEmails.Builder.class); + } - @java.lang.Override - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; + private byte memoizedIsInitialized = -1; - memoizedIsInitialized = 1; - return true; - } + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; - @java.lang.Override - public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (actionCase_ == 1) { - output.writeMessage(1, (com.google.privacy.dlp.v2.Action.SaveFindings) action_); - } - if (actionCase_ == 2) { - output.writeMessage(2, (com.google.privacy.dlp.v2.Action.PublishToPubSub) action_); - } - if (actionCase_ == 3) { - output.writeMessage(3, (com.google.privacy.dlp.v2.Action.PublishSummaryToCscc) action_); + memoizedIsInitialized = 1; + return true; } - unknownFields.writeTo(output); - } - @java.lang.Override + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.privacy.dlp.v2.Action.JobNotificationEmails)) { + return super.equals(obj); + } + com.google.privacy.dlp.v2.Action.JobNotificationEmails other = + (com.google.privacy.dlp.v2.Action.JobNotificationEmails) obj; + + boolean result = true; + result = result && unknownFields.equals(other.unknownFields); + return result; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.privacy.dlp.v2.Action.JobNotificationEmails parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.privacy.dlp.v2.Action.JobNotificationEmails parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.privacy.dlp.v2.Action.JobNotificationEmails parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.privacy.dlp.v2.Action.JobNotificationEmails parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.privacy.dlp.v2.Action.JobNotificationEmails parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.privacy.dlp.v2.Action.JobNotificationEmails parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.privacy.dlp.v2.Action.JobNotificationEmails parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.privacy.dlp.v2.Action.JobNotificationEmails parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.privacy.dlp.v2.Action.JobNotificationEmails parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.privacy.dlp.v2.Action.JobNotificationEmails parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.privacy.dlp.v2.Action.JobNotificationEmails parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.privacy.dlp.v2.Action.JobNotificationEmails parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.privacy.dlp.v2.Action.JobNotificationEmails prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * Enable email notification to project owners and editors on jobs's
+     * completion/failure.
+     * 
+ * + * Protobuf type {@code google.privacy.dlp.v2.Action.JobNotificationEmails} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.privacy.dlp.v2.Action.JobNotificationEmails) + com.google.privacy.dlp.v2.Action.JobNotificationEmailsOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.privacy.dlp.v2.DlpProto + .internal_static_google_privacy_dlp_v2_Action_JobNotificationEmails_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.privacy.dlp.v2.DlpProto + .internal_static_google_privacy_dlp_v2_Action_JobNotificationEmails_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.privacy.dlp.v2.Action.JobNotificationEmails.class, + com.google.privacy.dlp.v2.Action.JobNotificationEmails.Builder.class); + } + + // Construct using com.google.privacy.dlp.v2.Action.JobNotificationEmails.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} + } + + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.privacy.dlp.v2.DlpProto + .internal_static_google_privacy_dlp_v2_Action_JobNotificationEmails_descriptor; + } + + @java.lang.Override + public com.google.privacy.dlp.v2.Action.JobNotificationEmails getDefaultInstanceForType() { + return com.google.privacy.dlp.v2.Action.JobNotificationEmails.getDefaultInstance(); + } + + @java.lang.Override + public com.google.privacy.dlp.v2.Action.JobNotificationEmails build() { + com.google.privacy.dlp.v2.Action.JobNotificationEmails result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.privacy.dlp.v2.Action.JobNotificationEmails buildPartial() { + com.google.privacy.dlp.v2.Action.JobNotificationEmails result = + new com.google.privacy.dlp.v2.Action.JobNotificationEmails(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return (Builder) super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return (Builder) super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return (Builder) super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return (Builder) super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.privacy.dlp.v2.Action.JobNotificationEmails) { + return mergeFrom((com.google.privacy.dlp.v2.Action.JobNotificationEmails) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.privacy.dlp.v2.Action.JobNotificationEmails other) { + if (other == com.google.privacy.dlp.v2.Action.JobNotificationEmails.getDefaultInstance()) + return this; + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.privacy.dlp.v2.Action.JobNotificationEmails parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = + (com.google.privacy.dlp.v2.Action.JobNotificationEmails) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFieldsProto3(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.privacy.dlp.v2.Action.JobNotificationEmails) + } + + // @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.Action.JobNotificationEmails) + private static final com.google.privacy.dlp.v2.Action.JobNotificationEmails DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.privacy.dlp.v2.Action.JobNotificationEmails(); + } + + public static com.google.privacy.dlp.v2.Action.JobNotificationEmails getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public JobNotificationEmails parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new JobNotificationEmails(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.privacy.dlp.v2.Action.JobNotificationEmails getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + private int actionCase_ = 0; + private java.lang.Object action_; + + public enum ActionCase implements com.google.protobuf.Internal.EnumLite { + SAVE_FINDINGS(1), + PUB_SUB(2), + PUBLISH_SUMMARY_TO_CSCC(3), + JOB_NOTIFICATION_EMAILS(8), + ACTION_NOT_SET(0); + private final int value; + + private ActionCase(int value) { + this.value = value; + } + /** @deprecated Use {@link #forNumber(int)} instead. */ + @java.lang.Deprecated + public static ActionCase valueOf(int value) { + return forNumber(value); + } + + public static ActionCase forNumber(int value) { + switch (value) { + case 1: + return SAVE_FINDINGS; + case 2: + return PUB_SUB; + case 3: + return PUBLISH_SUMMARY_TO_CSCC; + case 8: + return JOB_NOTIFICATION_EMAILS; + case 0: + return ACTION_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public ActionCase getActionCase() { + return ActionCase.forNumber(actionCase_); + } + + public static final int SAVE_FINDINGS_FIELD_NUMBER = 1; + /** + * + * + *
+   * Save resulting findings in a provided location.
+   * 
+ * + * .google.privacy.dlp.v2.Action.SaveFindings save_findings = 1; + */ + public boolean hasSaveFindings() { + return actionCase_ == 1; + } + /** + * + * + *
+   * Save resulting findings in a provided location.
+   * 
+ * + * .google.privacy.dlp.v2.Action.SaveFindings save_findings = 1; + */ + public com.google.privacy.dlp.v2.Action.SaveFindings getSaveFindings() { + if (actionCase_ == 1) { + return (com.google.privacy.dlp.v2.Action.SaveFindings) action_; + } + return com.google.privacy.dlp.v2.Action.SaveFindings.getDefaultInstance(); + } + /** + * + * + *
+   * Save resulting findings in a provided location.
+   * 
+ * + * .google.privacy.dlp.v2.Action.SaveFindings save_findings = 1; + */ + public com.google.privacy.dlp.v2.Action.SaveFindingsOrBuilder getSaveFindingsOrBuilder() { + if (actionCase_ == 1) { + return (com.google.privacy.dlp.v2.Action.SaveFindings) action_; + } + return com.google.privacy.dlp.v2.Action.SaveFindings.getDefaultInstance(); + } + + public static final int PUB_SUB_FIELD_NUMBER = 2; + /** + * + * + *
+   * Publish a notification to a pubsub topic.
+   * 
+ * + * .google.privacy.dlp.v2.Action.PublishToPubSub pub_sub = 2; + */ + public boolean hasPubSub() { + return actionCase_ == 2; + } + /** + * + * + *
+   * Publish a notification to a pubsub topic.
+   * 
+ * + * .google.privacy.dlp.v2.Action.PublishToPubSub pub_sub = 2; + */ + public com.google.privacy.dlp.v2.Action.PublishToPubSub getPubSub() { + if (actionCase_ == 2) { + return (com.google.privacy.dlp.v2.Action.PublishToPubSub) action_; + } + return com.google.privacy.dlp.v2.Action.PublishToPubSub.getDefaultInstance(); + } + /** + * + * + *
+   * Publish a notification to a pubsub topic.
+   * 
+ * + * .google.privacy.dlp.v2.Action.PublishToPubSub pub_sub = 2; + */ + public com.google.privacy.dlp.v2.Action.PublishToPubSubOrBuilder getPubSubOrBuilder() { + if (actionCase_ == 2) { + return (com.google.privacy.dlp.v2.Action.PublishToPubSub) action_; + } + return com.google.privacy.dlp.v2.Action.PublishToPubSub.getDefaultInstance(); + } + + public static final int PUBLISH_SUMMARY_TO_CSCC_FIELD_NUMBER = 3; + /** + * + * + *
+   * Publish summary to Cloud Security Command Center (Alpha).
+   * 
+ * + * .google.privacy.dlp.v2.Action.PublishSummaryToCscc publish_summary_to_cscc = 3; + */ + public boolean hasPublishSummaryToCscc() { + return actionCase_ == 3; + } + /** + * + * + *
+   * Publish summary to Cloud Security Command Center (Alpha).
+   * 
+ * + * .google.privacy.dlp.v2.Action.PublishSummaryToCscc publish_summary_to_cscc = 3; + */ + public com.google.privacy.dlp.v2.Action.PublishSummaryToCscc getPublishSummaryToCscc() { + if (actionCase_ == 3) { + return (com.google.privacy.dlp.v2.Action.PublishSummaryToCscc) action_; + } + return com.google.privacy.dlp.v2.Action.PublishSummaryToCscc.getDefaultInstance(); + } + /** + * + * + *
+   * Publish summary to Cloud Security Command Center (Alpha).
+   * 
+ * + * .google.privacy.dlp.v2.Action.PublishSummaryToCscc publish_summary_to_cscc = 3; + */ + public com.google.privacy.dlp.v2.Action.PublishSummaryToCsccOrBuilder + getPublishSummaryToCsccOrBuilder() { + if (actionCase_ == 3) { + return (com.google.privacy.dlp.v2.Action.PublishSummaryToCscc) action_; + } + return com.google.privacy.dlp.v2.Action.PublishSummaryToCscc.getDefaultInstance(); + } + + public static final int JOB_NOTIFICATION_EMAILS_FIELD_NUMBER = 8; + /** + * + * + *
+   * Enable email notification to project owners and editors on job‘s
+   * completion/failure.
+   * 
+ * + * .google.privacy.dlp.v2.Action.JobNotificationEmails job_notification_emails = 8; + */ + public boolean hasJobNotificationEmails() { + return actionCase_ == 8; + } + /** + * + * + *
+   * Enable email notification to project owners and editors on job‘s
+   * completion/failure.
+   * 
+ * + * .google.privacy.dlp.v2.Action.JobNotificationEmails job_notification_emails = 8; + */ + public com.google.privacy.dlp.v2.Action.JobNotificationEmails getJobNotificationEmails() { + if (actionCase_ == 8) { + return (com.google.privacy.dlp.v2.Action.JobNotificationEmails) action_; + } + return com.google.privacy.dlp.v2.Action.JobNotificationEmails.getDefaultInstance(); + } + /** + * + * + *
+   * Enable email notification to project owners and editors on job‘s
+   * completion/failure.
+   * 
+ * + * .google.privacy.dlp.v2.Action.JobNotificationEmails job_notification_emails = 8; + */ + public com.google.privacy.dlp.v2.Action.JobNotificationEmailsOrBuilder + getJobNotificationEmailsOrBuilder() { + if (actionCase_ == 8) { + return (com.google.privacy.dlp.v2.Action.JobNotificationEmails) action_; + } + return com.google.privacy.dlp.v2.Action.JobNotificationEmails.getDefaultInstance(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (actionCase_ == 1) { + output.writeMessage(1, (com.google.privacy.dlp.v2.Action.SaveFindings) action_); + } + if (actionCase_ == 2) { + output.writeMessage(2, (com.google.privacy.dlp.v2.Action.PublishToPubSub) action_); + } + if (actionCase_ == 3) { + output.writeMessage(3, (com.google.privacy.dlp.v2.Action.PublishSummaryToCscc) action_); + } + if (actionCase_ == 8) { + output.writeMessage(8, (com.google.privacy.dlp.v2.Action.JobNotificationEmails) action_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; @@ -2098,6 +2615,11 @@ public int getSerializedSize() { com.google.protobuf.CodedOutputStream.computeMessageSize( 3, (com.google.privacy.dlp.v2.Action.PublishSummaryToCscc) action_); } + if (actionCase_ == 8) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 8, (com.google.privacy.dlp.v2.Action.JobNotificationEmails) action_); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -2126,6 +2648,9 @@ public boolean equals(final java.lang.Object obj) { case 3: result = result && getPublishSummaryToCscc().equals(other.getPublishSummaryToCscc()); break; + case 8: + result = result && getJobNotificationEmails().equals(other.getJobNotificationEmails()); + break; case 0: default: } @@ -2153,6 +2678,10 @@ public int hashCode() { hash = (37 * hash) + PUBLISH_SUMMARY_TO_CSCC_FIELD_NUMBER; hash = (53 * hash) + getPublishSummaryToCscc().hashCode(); break; + case 8: + hash = (37 * hash) + JOB_NOTIFICATION_EMAILS_FIELD_NUMBER; + hash = (53 * hash) + getJobNotificationEmails().hashCode(); + break; case 0: default: } @@ -2350,6 +2879,13 @@ public com.google.privacy.dlp.v2.Action buildPartial() { result.action_ = publishSummaryToCsccBuilder_.build(); } } + if (actionCase_ == 8) { + if (jobNotificationEmailsBuilder_ == null) { + result.action_ = action_; + } else { + result.action_ = jobNotificationEmailsBuilder_.build(); + } + } result.actionCase_ = actionCase_; onBuilt(); return result; @@ -2416,6 +2952,11 @@ public Builder mergeFrom(com.google.privacy.dlp.v2.Action other) { mergePublishSummaryToCscc(other.getPublishSummaryToCscc()); break; } + case JOB_NOTIFICATION_EMAILS: + { + mergeJobNotificationEmails(other.getJobNotificationEmails()); + break; + } case ACTION_NOT_SET: { break; @@ -3075,6 +3616,222 @@ public Builder clearPublishSummaryToCscc() { return publishSummaryToCsccBuilder_; } + private com.google.protobuf.SingleFieldBuilderV3< + com.google.privacy.dlp.v2.Action.JobNotificationEmails, + com.google.privacy.dlp.v2.Action.JobNotificationEmails.Builder, + com.google.privacy.dlp.v2.Action.JobNotificationEmailsOrBuilder> + jobNotificationEmailsBuilder_; + /** + * + * + *
+     * Enable email notification to project owners and editors on job‘s
+     * completion/failure.
+     * 
+ * + * .google.privacy.dlp.v2.Action.JobNotificationEmails job_notification_emails = 8; + */ + public boolean hasJobNotificationEmails() { + return actionCase_ == 8; + } + /** + * + * + *
+     * Enable email notification to project owners and editors on job‘s
+     * completion/failure.
+     * 
+ * + * .google.privacy.dlp.v2.Action.JobNotificationEmails job_notification_emails = 8; + */ + public com.google.privacy.dlp.v2.Action.JobNotificationEmails getJobNotificationEmails() { + if (jobNotificationEmailsBuilder_ == null) { + if (actionCase_ == 8) { + return (com.google.privacy.dlp.v2.Action.JobNotificationEmails) action_; + } + return com.google.privacy.dlp.v2.Action.JobNotificationEmails.getDefaultInstance(); + } else { + if (actionCase_ == 8) { + return jobNotificationEmailsBuilder_.getMessage(); + } + return com.google.privacy.dlp.v2.Action.JobNotificationEmails.getDefaultInstance(); + } + } + /** + * + * + *
+     * Enable email notification to project owners and editors on job‘s
+     * completion/failure.
+     * 
+ * + * .google.privacy.dlp.v2.Action.JobNotificationEmails job_notification_emails = 8; + */ + public Builder setJobNotificationEmails( + com.google.privacy.dlp.v2.Action.JobNotificationEmails value) { + if (jobNotificationEmailsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + action_ = value; + onChanged(); + } else { + jobNotificationEmailsBuilder_.setMessage(value); + } + actionCase_ = 8; + return this; + } + /** + * + * + *
+     * Enable email notification to project owners and editors on job‘s
+     * completion/failure.
+     * 
+ * + * .google.privacy.dlp.v2.Action.JobNotificationEmails job_notification_emails = 8; + */ + public Builder setJobNotificationEmails( + com.google.privacy.dlp.v2.Action.JobNotificationEmails.Builder builderForValue) { + if (jobNotificationEmailsBuilder_ == null) { + action_ = builderForValue.build(); + onChanged(); + } else { + jobNotificationEmailsBuilder_.setMessage(builderForValue.build()); + } + actionCase_ = 8; + return this; + } + /** + * + * + *
+     * Enable email notification to project owners and editors on job‘s
+     * completion/failure.
+     * 
+ * + * .google.privacy.dlp.v2.Action.JobNotificationEmails job_notification_emails = 8; + */ + public Builder mergeJobNotificationEmails( + com.google.privacy.dlp.v2.Action.JobNotificationEmails value) { + if (jobNotificationEmailsBuilder_ == null) { + if (actionCase_ == 8 + && action_ + != com.google.privacy.dlp.v2.Action.JobNotificationEmails.getDefaultInstance()) { + action_ = + com.google.privacy.dlp.v2.Action.JobNotificationEmails.newBuilder( + (com.google.privacy.dlp.v2.Action.JobNotificationEmails) action_) + .mergeFrom(value) + .buildPartial(); + } else { + action_ = value; + } + onChanged(); + } else { + if (actionCase_ == 8) { + jobNotificationEmailsBuilder_.mergeFrom(value); + } + jobNotificationEmailsBuilder_.setMessage(value); + } + actionCase_ = 8; + return this; + } + /** + * + * + *
+     * Enable email notification to project owners and editors on job‘s
+     * completion/failure.
+     * 
+ * + * .google.privacy.dlp.v2.Action.JobNotificationEmails job_notification_emails = 8; + */ + public Builder clearJobNotificationEmails() { + if (jobNotificationEmailsBuilder_ == null) { + if (actionCase_ == 8) { + actionCase_ = 0; + action_ = null; + onChanged(); + } + } else { + if (actionCase_ == 8) { + actionCase_ = 0; + action_ = null; + } + jobNotificationEmailsBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Enable email notification to project owners and editors on job‘s
+     * completion/failure.
+     * 
+ * + * .google.privacy.dlp.v2.Action.JobNotificationEmails job_notification_emails = 8; + */ + public com.google.privacy.dlp.v2.Action.JobNotificationEmails.Builder + getJobNotificationEmailsBuilder() { + return getJobNotificationEmailsFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Enable email notification to project owners and editors on job‘s
+     * completion/failure.
+     * 
+ * + * .google.privacy.dlp.v2.Action.JobNotificationEmails job_notification_emails = 8; + */ + public com.google.privacy.dlp.v2.Action.JobNotificationEmailsOrBuilder + getJobNotificationEmailsOrBuilder() { + if ((actionCase_ == 8) && (jobNotificationEmailsBuilder_ != null)) { + return jobNotificationEmailsBuilder_.getMessageOrBuilder(); + } else { + if (actionCase_ == 8) { + return (com.google.privacy.dlp.v2.Action.JobNotificationEmails) action_; + } + return com.google.privacy.dlp.v2.Action.JobNotificationEmails.getDefaultInstance(); + } + } + /** + * + * + *
+     * Enable email notification to project owners and editors on job‘s
+     * completion/failure.
+     * 
+ * + * .google.privacy.dlp.v2.Action.JobNotificationEmails job_notification_emails = 8; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.privacy.dlp.v2.Action.JobNotificationEmails, + com.google.privacy.dlp.v2.Action.JobNotificationEmails.Builder, + com.google.privacy.dlp.v2.Action.JobNotificationEmailsOrBuilder> + getJobNotificationEmailsFieldBuilder() { + if (jobNotificationEmailsBuilder_ == null) { + if (!(actionCase_ == 8)) { + action_ = com.google.privacy.dlp.v2.Action.JobNotificationEmails.getDefaultInstance(); + } + jobNotificationEmailsBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.privacy.dlp.v2.Action.JobNotificationEmails, + com.google.privacy.dlp.v2.Action.JobNotificationEmails.Builder, + com.google.privacy.dlp.v2.Action.JobNotificationEmailsOrBuilder>( + (com.google.privacy.dlp.v2.Action.JobNotificationEmails) action_, + getParentForChildren(), + isClean()); + action_ = null; + } + actionCase_ = 8; + onChanged(); + ; + return jobNotificationEmailsBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFieldsProto3(unknownFields); diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ActionOrBuilder.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ActionOrBuilder.java index ccab0090fd51..f42a5a0f941e 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ActionOrBuilder.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ActionOrBuilder.java @@ -101,5 +101,40 @@ public interface ActionOrBuilder */ com.google.privacy.dlp.v2.Action.PublishSummaryToCsccOrBuilder getPublishSummaryToCsccOrBuilder(); + /** + * + * + *
+   * Enable email notification to project owners and editors on job‘s
+   * completion/failure.
+   * 
+ * + * .google.privacy.dlp.v2.Action.JobNotificationEmails job_notification_emails = 8; + */ + boolean hasJobNotificationEmails(); + /** + * + * + *
+   * Enable email notification to project owners and editors on job‘s
+   * completion/failure.
+   * 
+ * + * .google.privacy.dlp.v2.Action.JobNotificationEmails job_notification_emails = 8; + */ + com.google.privacy.dlp.v2.Action.JobNotificationEmails getJobNotificationEmails(); + /** + * + * + *
+   * Enable email notification to project owners and editors on job‘s
+   * completion/failure.
+   * 
+ * + * .google.privacy.dlp.v2.Action.JobNotificationEmails job_notification_emails = 8; + */ + com.google.privacy.dlp.v2.Action.JobNotificationEmailsOrBuilder + getJobNotificationEmailsOrBuilder(); + public com.google.privacy.dlp.v2.Action.ActionCase getActionCase(); } diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ActivateJobTriggerRequest.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ActivateJobTriggerRequest.java new file mode 100644 index 000000000000..8c01e9fcf68c --- /dev/null +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ActivateJobTriggerRequest.java @@ -0,0 +1,606 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/privacy/dlp/v2/dlp.proto + +package com.google.privacy.dlp.v2; + +/** + * + * + *
+ * Request message for ActivateJobTrigger.
+ * 
+ * + * Protobuf type {@code google.privacy.dlp.v2.ActivateJobTriggerRequest} + */ +public final class ActivateJobTriggerRequest extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.privacy.dlp.v2.ActivateJobTriggerRequest) + ActivateJobTriggerRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use ActivateJobTriggerRequest.newBuilder() to construct. + private ActivateJobTriggerRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ActivateJobTriggerRequest() { + name_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private ActivateJobTriggerRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + java.lang.String s = input.readStringRequireUtf8(); + + name_ = s; + break; + } + default: + { + if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.privacy.dlp.v2.DlpProto + .internal_static_google_privacy_dlp_v2_ActivateJobTriggerRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.privacy.dlp.v2.DlpProto + .internal_static_google_privacy_dlp_v2_ActivateJobTriggerRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.privacy.dlp.v2.ActivateJobTriggerRequest.class, + com.google.privacy.dlp.v2.ActivateJobTriggerRequest.Builder.class); + } + + public static final int NAME_FIELD_NUMBER = 1; + private volatile java.lang.Object name_; + /** + * + * + *
+   * Resource name of the trigger to activate, for example
+   * `projects/dlp-test-project/jobTriggers/53234423`.
+   * 
+ * + * string name = 1; + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } + } + /** + * + * + *
+   * Resource name of the trigger to activate, for example
+   * `projects/dlp-test-project/jobTriggers/53234423`.
+   * 
+ * + * string name = 1; + */ + public com.google.protobuf.ByteString getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!getNameBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getNameBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.privacy.dlp.v2.ActivateJobTriggerRequest)) { + return super.equals(obj); + } + com.google.privacy.dlp.v2.ActivateJobTriggerRequest other = + (com.google.privacy.dlp.v2.ActivateJobTriggerRequest) obj; + + boolean result = true; + result = result && getName().equals(other.getName()); + result = result && unknownFields.equals(other.unknownFields); + return result; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.privacy.dlp.v2.ActivateJobTriggerRequest parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.privacy.dlp.v2.ActivateJobTriggerRequest parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.privacy.dlp.v2.ActivateJobTriggerRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.privacy.dlp.v2.ActivateJobTriggerRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.privacy.dlp.v2.ActivateJobTriggerRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.privacy.dlp.v2.ActivateJobTriggerRequest parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.privacy.dlp.v2.ActivateJobTriggerRequest parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.privacy.dlp.v2.ActivateJobTriggerRequest parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.privacy.dlp.v2.ActivateJobTriggerRequest parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.privacy.dlp.v2.ActivateJobTriggerRequest parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.privacy.dlp.v2.ActivateJobTriggerRequest parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.privacy.dlp.v2.ActivateJobTriggerRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.privacy.dlp.v2.ActivateJobTriggerRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Request message for ActivateJobTrigger.
+   * 
+ * + * Protobuf type {@code google.privacy.dlp.v2.ActivateJobTriggerRequest} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.privacy.dlp.v2.ActivateJobTriggerRequest) + com.google.privacy.dlp.v2.ActivateJobTriggerRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.privacy.dlp.v2.DlpProto + .internal_static_google_privacy_dlp_v2_ActivateJobTriggerRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.privacy.dlp.v2.DlpProto + .internal_static_google_privacy_dlp_v2_ActivateJobTriggerRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.privacy.dlp.v2.ActivateJobTriggerRequest.class, + com.google.privacy.dlp.v2.ActivateJobTriggerRequest.Builder.class); + } + + // Construct using com.google.privacy.dlp.v2.ActivateJobTriggerRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} + } + + @java.lang.Override + public Builder clear() { + super.clear(); + name_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.privacy.dlp.v2.DlpProto + .internal_static_google_privacy_dlp_v2_ActivateJobTriggerRequest_descriptor; + } + + @java.lang.Override + public com.google.privacy.dlp.v2.ActivateJobTriggerRequest getDefaultInstanceForType() { + return com.google.privacy.dlp.v2.ActivateJobTriggerRequest.getDefaultInstance(); + } + + @java.lang.Override + public com.google.privacy.dlp.v2.ActivateJobTriggerRequest build() { + com.google.privacy.dlp.v2.ActivateJobTriggerRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.privacy.dlp.v2.ActivateJobTriggerRequest buildPartial() { + com.google.privacy.dlp.v2.ActivateJobTriggerRequest result = + new com.google.privacy.dlp.v2.ActivateJobTriggerRequest(this); + result.name_ = name_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return (Builder) super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return (Builder) super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return (Builder) super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return (Builder) super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.privacy.dlp.v2.ActivateJobTriggerRequest) { + return mergeFrom((com.google.privacy.dlp.v2.ActivateJobTriggerRequest) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.privacy.dlp.v2.ActivateJobTriggerRequest other) { + if (other == com.google.privacy.dlp.v2.ActivateJobTriggerRequest.getDefaultInstance()) + return this; + if (!other.getName().isEmpty()) { + name_ = other.name_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.privacy.dlp.v2.ActivateJobTriggerRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = + (com.google.privacy.dlp.v2.ActivateJobTriggerRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object name_ = ""; + /** + * + * + *
+     * Resource name of the trigger to activate, for example
+     * `projects/dlp-test-project/jobTriggers/53234423`.
+     * 
+ * + * string name = 1; + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Resource name of the trigger to activate, for example
+     * `projects/dlp-test-project/jobTriggers/53234423`.
+     * 
+ * + * string name = 1; + */ + public com.google.protobuf.ByteString getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Resource name of the trigger to activate, for example
+     * `projects/dlp-test-project/jobTriggers/53234423`.
+     * 
+ * + * string name = 1; + */ + public Builder setName(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + name_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Resource name of the trigger to activate, for example
+     * `projects/dlp-test-project/jobTriggers/53234423`.
+     * 
+ * + * string name = 1; + */ + public Builder clearName() { + + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * + * + *
+     * Resource name of the trigger to activate, for example
+     * `projects/dlp-test-project/jobTriggers/53234423`.
+     * 
+ * + * string name = 1; + */ + public Builder setNameBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + name_ = value; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFieldsProto3(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.privacy.dlp.v2.ActivateJobTriggerRequest) + } + + // @@protoc_insertion_point(class_scope:google.privacy.dlp.v2.ActivateJobTriggerRequest) + private static final com.google.privacy.dlp.v2.ActivateJobTriggerRequest DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.privacy.dlp.v2.ActivateJobTriggerRequest(); + } + + public static com.google.privacy.dlp.v2.ActivateJobTriggerRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ActivateJobTriggerRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ActivateJobTriggerRequest(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.privacy.dlp.v2.ActivateJobTriggerRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ActivateJobTriggerRequestOrBuilder.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ActivateJobTriggerRequestOrBuilder.java new file mode 100644 index 000000000000..c4134932b0ac --- /dev/null +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ActivateJobTriggerRequestOrBuilder.java @@ -0,0 +1,33 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/privacy/dlp/v2/dlp.proto + +package com.google.privacy.dlp.v2; + +public interface ActivateJobTriggerRequestOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.privacy.dlp.v2.ActivateJobTriggerRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Resource name of the trigger to activate, for example
+   * `projects/dlp-test-project/jobTriggers/53234423`.
+   * 
+ * + * string name = 1; + */ + java.lang.String getName(); + /** + * + * + *
+   * Resource name of the trigger to activate, for example
+   * `projects/dlp-test-project/jobTriggers/53234423`.
+   * 
+ * + * string name = 1; + */ + com.google.protobuf.ByteString getNameBytes(); +} diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/BigQueryOptions.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/BigQueryOptions.java index 251b1bfc62d7..de9689113da9 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/BigQueryOptions.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/BigQueryOptions.java @@ -152,8 +152,8 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { * *
    * How to sample rows if not all rows are scanned. Meaningful only when used
-   * in conjunction with rows_limit. If not specified, scanning would start
-   * from the top.
+   * in conjunction with either rows_limit or rows_limit_percent. If not
+   * specified, scanning would start from the top.
    * 
* * Protobuf enum {@code google.privacy.dlp.v2.BigQueryOptions.SampleMethod} diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/CloudStorageOptions.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/CloudStorageOptions.java index 8ad583888cd1..c5491673ed5b 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/CloudStorageOptions.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/CloudStorageOptions.java @@ -299,8 +299,13 @@ public interface FileSetOrBuilder * *
      * The Cloud Storage url of the file(s) to scan, in the format
-     * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed. Exactly
-     * one of `url` or `regex_file_set` must be set.
+     * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed.
+     * If the url ends in a trailing slash, the bucket or directory represented
+     * by the url will be scanned non-recursively (content in sub-directories
+     * will not be scanned). This means that `gs://mybucket/` is equivalent to
+     * `gs://mybucket/*`, and `gs://mybucket/directory/` is equivalent to
+     * `gs://mybucket/directory/*`.
+     * Exactly one of `url` or `regex_file_set` must be set.
      * 
* * string url = 1; @@ -311,8 +316,13 @@ public interface FileSetOrBuilder * *
      * The Cloud Storage url of the file(s) to scan, in the format
-     * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed. Exactly
-     * one of `url` or `regex_file_set` must be set.
+     * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed.
+     * If the url ends in a trailing slash, the bucket or directory represented
+     * by the url will be scanned non-recursively (content in sub-directories
+     * will not be scanned). This means that `gs://mybucket/` is equivalent to
+     * `gs://mybucket/*`, and `gs://mybucket/directory/` is equivalent to
+     * `gs://mybucket/directory/*`.
+     * Exactly one of `url` or `regex_file_set` must be set.
      * 
* * string url = 1; @@ -465,8 +475,13 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { * *
      * The Cloud Storage url of the file(s) to scan, in the format
-     * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed. Exactly
-     * one of `url` or `regex_file_set` must be set.
+     * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed.
+     * If the url ends in a trailing slash, the bucket or directory represented
+     * by the url will be scanned non-recursively (content in sub-directories
+     * will not be scanned). This means that `gs://mybucket/` is equivalent to
+     * `gs://mybucket/*`, and `gs://mybucket/directory/` is equivalent to
+     * `gs://mybucket/directory/*`.
+     * Exactly one of `url` or `regex_file_set` must be set.
      * 
* * string url = 1; @@ -487,8 +502,13 @@ public java.lang.String getUrl() { * *
      * The Cloud Storage url of the file(s) to scan, in the format
-     * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed. Exactly
-     * one of `url` or `regex_file_set` must be set.
+     * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed.
+     * If the url ends in a trailing slash, the bucket or directory represented
+     * by the url will be scanned non-recursively (content in sub-directories
+     * will not be scanned). This means that `gs://mybucket/` is equivalent to
+     * `gs://mybucket/*`, and `gs://mybucket/directory/` is equivalent to
+     * `gs://mybucket/directory/*`.
+     * Exactly one of `url` or `regex_file_set` must be set.
      * 
* * string url = 1; @@ -907,8 +927,13 @@ public Builder mergeFrom( * *
        * The Cloud Storage url of the file(s) to scan, in the format
-       * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed. Exactly
-       * one of `url` or `regex_file_set` must be set.
+       * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed.
+       * If the url ends in a trailing slash, the bucket or directory represented
+       * by the url will be scanned non-recursively (content in sub-directories
+       * will not be scanned). This means that `gs://mybucket/` is equivalent to
+       * `gs://mybucket/*`, and `gs://mybucket/directory/` is equivalent to
+       * `gs://mybucket/directory/*`.
+       * Exactly one of `url` or `regex_file_set` must be set.
        * 
* * string url = 1; @@ -929,8 +954,13 @@ public java.lang.String getUrl() { * *
        * The Cloud Storage url of the file(s) to scan, in the format
-       * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed. Exactly
-       * one of `url` or `regex_file_set` must be set.
+       * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed.
+       * If the url ends in a trailing slash, the bucket or directory represented
+       * by the url will be scanned non-recursively (content in sub-directories
+       * will not be scanned). This means that `gs://mybucket/` is equivalent to
+       * `gs://mybucket/*`, and `gs://mybucket/directory/` is equivalent to
+       * `gs://mybucket/directory/*`.
+       * Exactly one of `url` or `regex_file_set` must be set.
        * 
* * string url = 1; @@ -951,8 +981,13 @@ public com.google.protobuf.ByteString getUrlBytes() { * *
        * The Cloud Storage url of the file(s) to scan, in the format
-       * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed. Exactly
-       * one of `url` or `regex_file_set` must be set.
+       * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed.
+       * If the url ends in a trailing slash, the bucket or directory represented
+       * by the url will be scanned non-recursively (content in sub-directories
+       * will not be scanned). This means that `gs://mybucket/` is equivalent to
+       * `gs://mybucket/*`, and `gs://mybucket/directory/` is equivalent to
+       * `gs://mybucket/directory/*`.
+       * Exactly one of `url` or `regex_file_set` must be set.
        * 
* * string url = 1; @@ -971,8 +1006,13 @@ public Builder setUrl(java.lang.String value) { * *
        * The Cloud Storage url of the file(s) to scan, in the format
-       * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed. Exactly
-       * one of `url` or `regex_file_set` must be set.
+       * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed.
+       * If the url ends in a trailing slash, the bucket or directory represented
+       * by the url will be scanned non-recursively (content in sub-directories
+       * will not be scanned). This means that `gs://mybucket/` is equivalent to
+       * `gs://mybucket/*`, and `gs://mybucket/directory/` is equivalent to
+       * `gs://mybucket/directory/*`.
+       * Exactly one of `url` or `regex_file_set` must be set.
        * 
* * string url = 1; @@ -988,8 +1028,13 @@ public Builder clearUrl() { * *
        * The Cloud Storage url of the file(s) to scan, in the format
-       * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed. Exactly
-       * one of `url` or `regex_file_set` must be set.
+       * `gs://<bucket>/<path>`. Trailing wildcard in the path is allowed.
+       * If the url ends in a trailing slash, the bucket or directory represented
+       * by the url will be scanned non-recursively (content in sub-directories
+       * will not be scanned). This means that `gs://mybucket/` is equivalent to
+       * `gs://mybucket/*`, and `gs://mybucket/directory/` is equivalent to
+       * `gs://mybucket/directory/*`.
+       * Exactly one of `url` or `regex_file_set` must be set.
        * 
* * string url = 1; diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/CryptoHashConfig.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/CryptoHashConfig.java index 4324f80d7328..632f83d53e7b 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/CryptoHashConfig.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/CryptoHashConfig.java @@ -10,9 +10,10 @@ * Pseudonymization method that generates surrogates via cryptographic hashing. * Uses SHA-256. * The key size must be either 32 or 64 bytes. - * Outputs a 32 byte digest as an uppercase hex string - * (for example, 41D1567F7F99F1DC2A5FAB886DEE5BEE). + * Outputs a base64 encoded representation of the hashed output + * (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=). * Currently, only string and integer values can be hashed. + * See https://cloud.google.com/dlp/docs/pseudonymization to learn more. *
* * Protobuf type {@code google.privacy.dlp.v2.CryptoHashConfig} @@ -316,9 +317,10 @@ protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.Build * Pseudonymization method that generates surrogates via cryptographic hashing. * Uses SHA-256. * The key size must be either 32 or 64 bytes. - * Outputs a 32 byte digest as an uppercase hex string - * (for example, 41D1567F7F99F1DC2A5FAB886DEE5BEE). + * Outputs a base64 encoded representation of the hashed output + * (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=). * Currently, only string and integer values can be hashed. + * See https://cloud.google.com/dlp/docs/pseudonymization to learn more. *
* * Protobuf type {@code google.privacy.dlp.v2.CryptoHashConfig} diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/CustomInfoType.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/CustomInfoType.java index 56ee117c5336..06d9c7142d55 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/CustomInfoType.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/CustomInfoType.java @@ -2348,6 +2348,40 @@ public interface RegexOrBuilder * string pattern = 1; */ com.google.protobuf.ByteString getPatternBytes(); + + /** + * + * + *
+     * The index of the submatch to extract as findings. When not
+     * specified, the entire match is returned. No more than 3 may be included.
+     * 
+ * + * repeated int32 group_indexes = 2; + */ + java.util.List getGroupIndexesList(); + /** + * + * + *
+     * The index of the submatch to extract as findings. When not
+     * specified, the entire match is returned. No more than 3 may be included.
+     * 
+ * + * repeated int32 group_indexes = 2; + */ + int getGroupIndexesCount(); + /** + * + * + *
+     * The index of the submatch to extract as findings. When not
+     * specified, the entire match is returned. No more than 3 may be included.
+     * 
+ * + * repeated int32 group_indexes = 2; + */ + int getGroupIndexes(int index); } /** * @@ -2370,6 +2404,7 @@ private Regex(com.google.protobuf.GeneratedMessageV3.Builder builder) { private Regex() { pattern_ = ""; + groupIndexes_ = java.util.Collections.emptyList(); } @java.lang.Override @@ -2403,6 +2438,30 @@ private Regex( pattern_ = s; break; } + case 16: + { + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + groupIndexes_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000002; + } + groupIndexes_.add(input.readInt32()); + break; + } + case 18: + { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) + && input.getBytesUntilLimit() > 0) { + groupIndexes_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000002; + } + while (input.getBytesUntilLimit() > 0) { + groupIndexes_.add(input.readInt32()); + } + input.popLimit(limit); + break; + } default: { if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { @@ -2417,6 +2476,9 @@ private Regex( } catch (java.io.IOException e) { throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); } finally { + if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + groupIndexes_ = java.util.Collections.unmodifiableList(groupIndexes_); + } this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); } @@ -2437,6 +2499,7 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { com.google.privacy.dlp.v2.CustomInfoType.Regex.Builder.class); } + private int bitField0_; public static final int PATTERN_FIELD_NUMBER = 1; private volatile java.lang.Object pattern_; /** @@ -2484,6 +2547,50 @@ public com.google.protobuf.ByteString getPatternBytes() { } } + public static final int GROUP_INDEXES_FIELD_NUMBER = 2; + private java.util.List groupIndexes_; + /** + * + * + *
+     * The index of the submatch to extract as findings. When not
+     * specified, the entire match is returned. No more than 3 may be included.
+     * 
+ * + * repeated int32 group_indexes = 2; + */ + public java.util.List getGroupIndexesList() { + return groupIndexes_; + } + /** + * + * + *
+     * The index of the submatch to extract as findings. When not
+     * specified, the entire match is returned. No more than 3 may be included.
+     * 
+ * + * repeated int32 group_indexes = 2; + */ + public int getGroupIndexesCount() { + return groupIndexes_.size(); + } + /** + * + * + *
+     * The index of the submatch to extract as findings. When not
+     * specified, the entire match is returned. No more than 3 may be included.
+     * 
+ * + * repeated int32 group_indexes = 2; + */ + public int getGroupIndexes(int index) { + return groupIndexes_.get(index); + } + + private int groupIndexesMemoizedSerializedSize = -1; + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -2498,9 +2605,17 @@ public final boolean isInitialized() { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + getSerializedSize(); if (!getPatternBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, pattern_); } + if (getGroupIndexesList().size() > 0) { + output.writeUInt32NoTag(18); + output.writeUInt32NoTag(groupIndexesMemoizedSerializedSize); + } + for (int i = 0; i < groupIndexes_.size(); i++) { + output.writeInt32NoTag(groupIndexes_.get(i)); + } unknownFields.writeTo(output); } @@ -2513,6 +2628,19 @@ public int getSerializedSize() { if (!getPatternBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, pattern_); } + { + int dataSize = 0; + for (int i = 0; i < groupIndexes_.size(); i++) { + dataSize += + com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(groupIndexes_.get(i)); + } + size += dataSize; + if (!getGroupIndexesList().isEmpty()) { + size += 1; + size += com.google.protobuf.CodedOutputStream.computeInt32SizeNoTag(dataSize); + } + groupIndexesMemoizedSerializedSize = dataSize; + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -2531,6 +2659,7 @@ public boolean equals(final java.lang.Object obj) { boolean result = true; result = result && getPattern().equals(other.getPattern()); + result = result && getGroupIndexesList().equals(other.getGroupIndexesList()); result = result && unknownFields.equals(other.unknownFields); return result; } @@ -2544,6 +2673,10 @@ public int hashCode() { hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + PATTERN_FIELD_NUMBER; hash = (53 * hash) + getPattern().hashCode(); + if (getGroupIndexesCount() > 0) { + hash = (37 * hash) + GROUP_INDEXES_FIELD_NUMBER; + hash = (53 * hash) + getGroupIndexesList().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -2693,6 +2826,8 @@ public Builder clear() { super.clear(); pattern_ = ""; + groupIndexes_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); return this; } @@ -2720,7 +2855,15 @@ public com.google.privacy.dlp.v2.CustomInfoType.Regex build() { public com.google.privacy.dlp.v2.CustomInfoType.Regex buildPartial() { com.google.privacy.dlp.v2.CustomInfoType.Regex result = new com.google.privacy.dlp.v2.CustomInfoType.Regex(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; result.pattern_ = pattern_; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + groupIndexes_ = java.util.Collections.unmodifiableList(groupIndexes_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.groupIndexes_ = groupIndexes_; + result.bitField0_ = to_bitField0_; onBuilt(); return result; } @@ -2777,6 +2920,16 @@ public Builder mergeFrom(com.google.privacy.dlp.v2.CustomInfoType.Regex other) { pattern_ = other.pattern_; onChanged(); } + if (!other.groupIndexes_.isEmpty()) { + if (groupIndexes_.isEmpty()) { + groupIndexes_ = other.groupIndexes_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureGroupIndexesIsMutable(); + groupIndexes_.addAll(other.groupIndexes_); + } + onChanged(); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -2806,6 +2959,8 @@ public Builder mergeFrom( return this; } + private int bitField0_; + private java.lang.Object pattern_ = ""; /** * @@ -2910,6 +3065,118 @@ public Builder setPatternBytes(com.google.protobuf.ByteString value) { return this; } + private java.util.List groupIndexes_ = java.util.Collections.emptyList(); + + private void ensureGroupIndexesIsMutable() { + if (!((bitField0_ & 0x00000002) == 0x00000002)) { + groupIndexes_ = new java.util.ArrayList(groupIndexes_); + bitField0_ |= 0x00000002; + } + } + /** + * + * + *
+       * The index of the submatch to extract as findings. When not
+       * specified, the entire match is returned. No more than 3 may be included.
+       * 
+ * + * repeated int32 group_indexes = 2; + */ + public java.util.List getGroupIndexesList() { + return java.util.Collections.unmodifiableList(groupIndexes_); + } + /** + * + * + *
+       * The index of the submatch to extract as findings. When not
+       * specified, the entire match is returned. No more than 3 may be included.
+       * 
+ * + * repeated int32 group_indexes = 2; + */ + public int getGroupIndexesCount() { + return groupIndexes_.size(); + } + /** + * + * + *
+       * The index of the submatch to extract as findings. When not
+       * specified, the entire match is returned. No more than 3 may be included.
+       * 
+ * + * repeated int32 group_indexes = 2; + */ + public int getGroupIndexes(int index) { + return groupIndexes_.get(index); + } + /** + * + * + *
+       * The index of the submatch to extract as findings. When not
+       * specified, the entire match is returned. No more than 3 may be included.
+       * 
+ * + * repeated int32 group_indexes = 2; + */ + public Builder setGroupIndexes(int index, int value) { + ensureGroupIndexesIsMutable(); + groupIndexes_.set(index, value); + onChanged(); + return this; + } + /** + * + * + *
+       * The index of the submatch to extract as findings. When not
+       * specified, the entire match is returned. No more than 3 may be included.
+       * 
+ * + * repeated int32 group_indexes = 2; + */ + public Builder addGroupIndexes(int value) { + ensureGroupIndexesIsMutable(); + groupIndexes_.add(value); + onChanged(); + return this; + } + /** + * + * + *
+       * The index of the submatch to extract as findings. When not
+       * specified, the entire match is returned. No more than 3 may be included.
+       * 
+ * + * repeated int32 group_indexes = 2; + */ + public Builder addAllGroupIndexes(java.lang.Iterable values) { + ensureGroupIndexesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, groupIndexes_); + onChanged(); + return this; + } + /** + * + * + *
+       * The index of the submatch to extract as findings. When not
+       * specified, the entire match is returned. No more than 3 may be included.
+       * 
+ * + * repeated int32 group_indexes = 2; + */ + public Builder clearGroupIndexes() { + groupIndexes_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/DlpProto.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/DlpProto.java index 7f58d356dd37..126534709ee3 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/DlpProto.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/DlpProto.java @@ -468,6 +468,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_privacy_dlp_v2_Action_PublishSummaryToCscc_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_privacy_dlp_v2_Action_PublishSummaryToCscc_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_privacy_dlp_v2_Action_JobNotificationEmails_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_privacy_dlp_v2_Action_JobNotificationEmails_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_privacy_dlp_v2_CreateInspectTemplateRequest_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable @@ -496,6 +500,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_privacy_dlp_v2_CreateJobTriggerRequest_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_privacy_dlp_v2_CreateJobTriggerRequest_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_privacy_dlp_v2_ActivateJobTriggerRequest_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_privacy_dlp_v2_ActivateJobTriggerRequest_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_privacy_dlp_v2_UpdateJobTriggerRequest_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable @@ -778,649 +786,658 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "nfig\032\177\n\006Result\022\027\n\017processed_bytes\030\001 \001(\003\022" + "\035\n\025total_estimated_bytes\030\002 \001(\003\022=\n\017info_t" + "ype_stats\030\003 \003(\0132$.google.privacy.dlp.v2." - + "InfoTypeStats\"{\n\023InfoTypeDescription\022\014\n\004" - + "name\030\001 \001(\t\022\024\n\014display_name\030\002 \001(\t\022@\n\014supp" - + "orted_by\030\003 \003(\0162*.google.privacy.dlp.v2.I" - + "nfoTypeSupportedBy\"=\n\024ListInfoTypesReque" - + "st\022\025\n\rlanguage_code\030\001 \001(\t\022\016\n\006filter\030\002 \001(" - + "\t\"W\n\025ListInfoTypesResponse\022>\n\ninfo_types" - + "\030\001 \003(\0132*.google.privacy.dlp.v2.InfoTypeD" - + "escription\"\301\001\n\025RiskAnalysisJobConfig\022<\n\016" - + "privacy_metric\030\001 \001(\0132$.google.privacy.dl" - + "p.v2.PrivacyMetric\022:\n\014source_table\030\002 \001(\013" - + "2$.google.privacy.dlp.v2.BigQueryTable\022." - + "\n\007actions\030\003 \003(\0132\035.google.privacy.dlp.v2." - + "Action\"\267\001\n\007QuasiId\022-\n\005field\030\001 \001(\0132\036.goog" - + "le.privacy.dlp.v2.FieldId\0224\n\tinfo_type\030\002" - + " \001(\0132\037.google.privacy.dlp.v2.InfoTypeH\000\022" - + "\024\n\ncustom_tag\030\003 \001(\tH\000\022*\n\010inferred\030\004 \001(\0132" - + "\026.google.protobuf.EmptyH\000B\005\n\003tag\"\257\002\n\020Sta" - + "tisticalTable\0223\n\005table\030\003 \001(\0132$.google.pr" - + "ivacy.dlp.v2.BigQueryTable\022O\n\tquasi_ids\030" - + "\001 \003(\0132<.google.privacy.dlp.v2.Statistica" - + "lTable.QuasiIdentifierField\022:\n\022relative_" - + "frequency\030\002 \001(\0132\036.google.privacy.dlp.v2." - + "FieldId\032Y\n\024QuasiIdentifierField\022-\n\005field" - + "\030\001 \001(\0132\036.google.privacy.dlp.v2.FieldId\022\022" - + "\n\ncustom_tag\030\002 \001(\t\"\365\016\n\rPrivacyMetric\022[\n\026" - + "numerical_stats_config\030\001 \001(\01329.google.pr" - + "ivacy.dlp.v2.PrivacyMetric.NumericalStat" - + "sConfigH\000\022_\n\030categorical_stats_config\030\002 " - + "\001(\0132;.google.privacy.dlp.v2.PrivacyMetri" - + "c.CategoricalStatsConfigH\000\022S\n\022k_anonymit" - + "y_config\030\003 \001(\01325.google.privacy.dlp.v2.P" - + "rivacyMetric.KAnonymityConfigH\000\022S\n\022l_div" - + "ersity_config\030\004 \001(\01325.google.privacy.dlp" - + ".v2.PrivacyMetric.LDiversityConfigH\000\022\\\n\027" - + "k_map_estimation_config\030\005 \001(\01329.google.p" - + "rivacy.dlp.v2.PrivacyMetric.KMapEstimati" - + "onConfigH\000\022n\n delta_presence_estimation_" - + "config\030\006 \001(\0132B.google.privacy.dlp.v2.Pri" - + "vacyMetric.DeltaPresenceEstimationConfig" - + "H\000\032E\n\024NumericalStatsConfig\022-\n\005field\030\001 \001(" - + "\0132\036.google.privacy.dlp.v2.FieldId\032G\n\026Cat" - + "egoricalStatsConfig\022-\n\005field\030\001 \001(\0132\036.goo" - + "gle.privacy.dlp.v2.FieldId\032y\n\020KAnonymity" - + "Config\0221\n\tquasi_ids\030\001 \003(\0132\036.google.priva" - + "cy.dlp.v2.FieldId\0222\n\tentity_id\030\002 \001(\0132\037.g" - + "oogle.privacy.dlp.v2.EntityId\032\202\001\n\020LDiver" - + "sityConfig\0221\n\tquasi_ids\030\001 \003(\0132\036.google.p" - + "rivacy.dlp.v2.FieldId\022;\n\023sensitive_attri" - + "bute\030\002 \001(\0132\036.google.privacy.dlp.v2.Field" - + "Id\032\350\005\n\024KMapEstimationConfig\022X\n\tquasi_ids" - + "\030\001 \003(\0132E.google.privacy.dlp.v2.PrivacyMe" - + "tric.KMapEstimationConfig.TaggedField\022\023\n" - + "\013region_code\030\002 \001(\t\022b\n\020auxiliary_tables\030\003" - + " \003(\0132H.google.privacy.dlp.v2.PrivacyMetr" - + "ic.KMapEstimationConfig.AuxiliaryTable\032\273" - + "\001\n\013TaggedField\022-\n\005field\030\001 \001(\0132\036.google.p" - + "rivacy.dlp.v2.FieldId\0224\n\tinfo_type\030\002 \001(\013" - + "2\037.google.privacy.dlp.v2.InfoTypeH\000\022\024\n\nc" - + "ustom_tag\030\003 \001(\tH\000\022*\n\010inferred\030\004 \001(\0132\026.go" - + "ogle.protobuf.EmptyH\000B\005\n\003tag\032\276\002\n\016Auxilia" - + "ryTable\0223\n\005table\030\003 \001(\0132$.google.privacy." - + "dlp.v2.BigQueryTable\022h\n\tquasi_ids\030\001 \003(\0132" - + "U.google.privacy.dlp.v2.PrivacyMetric.KM" - + "apEstimationConfig.AuxiliaryTable.QuasiI" - + "dField\022:\n\022relative_frequency\030\002 \001(\0132\036.goo" - + "gle.privacy.dlp.v2.FieldId\032Q\n\014QuasiIdFie" - + "ld\022-\n\005field\030\001 \001(\0132\036.google.privacy.dlp.v" - + "2.FieldId\022\022\n\ncustom_tag\030\002 \001(\t\032\252\001\n\035DeltaP" - + "resenceEstimationConfig\0221\n\tquasi_ids\030\001 \003" - + "(\0132\036.google.privacy.dlp.v2.QuasiId\022\023\n\013re" - + "gion_code\030\002 \001(\t\022A\n\020auxiliary_tables\030\003 \003(" - + "\0132\'.google.privacy.dlp.v2.StatisticalTab" - + "leB\006\n\004type\"\362\035\n\034AnalyzeDataSourceRiskDeta" - + "ils\022F\n\030requested_privacy_metric\030\001 \001(\0132$." - + "google.privacy.dlp.v2.PrivacyMetric\022D\n\026r" - + "equested_source_table\030\002 \001(\0132$.google.pri" - + "vacy.dlp.v2.BigQueryTable\022j\n\026numerical_s" - + "tats_result\030\003 \001(\0132H.google.privacy.dlp.v" - + "2.AnalyzeDataSourceRiskDetails.Numerical" - + "StatsResultH\000\022n\n\030categorical_stats_resul" - + "t\030\004 \001(\0132J.google.privacy.dlp.v2.AnalyzeD" - + "ataSourceRiskDetails.CategoricalStatsRes" - + "ultH\000\022b\n\022k_anonymity_result\030\005 \001(\0132D.goog" - + "le.privacy.dlp.v2.AnalyzeDataSourceRiskD" - + "etails.KAnonymityResultH\000\022b\n\022l_diversity" - + "_result\030\006 \001(\0132D.google.privacy.dlp.v2.An" - + "alyzeDataSourceRiskDetails.LDiversityRes" - + "ultH\000\022k\n\027k_map_estimation_result\030\007 \001(\0132H" - + ".google.privacy.dlp.v2.AnalyzeDataSource" - + "RiskDetails.KMapEstimationResultH\000\022}\n de" - + "lta_presence_estimation_result\030\t \001(\0132Q.g" - + "oogle.privacy.dlp.v2.AnalyzeDataSourceRi" - + "skDetails.DeltaPresenceEstimationResultH" - + "\000\032\257\001\n\024NumericalStatsResult\022/\n\tmin_value\030" - + "\001 \001(\0132\034.google.privacy.dlp.v2.Value\022/\n\tm" - + "ax_value\030\002 \001(\0132\034.google.privacy.dlp.v2.V" - + "alue\0225\n\017quantile_values\030\004 \003(\0132\034.google.p" - + "rivacy.dlp.v2.Value\032\215\003\n\026CategoricalStats" - + "Result\022\225\001\n!value_frequency_histogram_buc" - + "kets\030\005 \003(\0132j.google.privacy.dlp.v2.Analy" - + "zeDataSourceRiskDetails.CategoricalStats" - + "Result.CategoricalStatsHistogramBucket\032\332" - + "\001\n\037CategoricalStatsHistogramBucket\022#\n\033va" - + "lue_frequency_lower_bound\030\001 \001(\003\022#\n\033value" - + "_frequency_upper_bound\030\002 \001(\003\022\023\n\013bucket_s" - + "ize\030\003 \001(\003\022<\n\rbucket_values\030\004 \003(\0132%.googl" - + "e.privacy.dlp.v2.ValueFrequency\022\032\n\022bucke" - + "t_value_count\030\005 \001(\003\032\265\004\n\020KAnonymityResult" - + "\022\213\001\n#equivalence_class_histogram_buckets" - + "\030\005 \003(\0132^.google.privacy.dlp.v2.AnalyzeDa" - + "taSourceRiskDetails.KAnonymityResult.KAn" - + "onymityHistogramBucket\032t\n\032KAnonymityEqui" - + "valenceClass\0226\n\020quasi_ids_values\030\001 \003(\0132\034" - + ".google.privacy.dlp.v2.Value\022\036\n\026equivale" - + "nce_class_size\030\002 \001(\003\032\234\002\n\031KAnonymityHisto" - + "gramBucket\022*\n\"equivalence_class_size_low" - + "er_bound\030\001 \001(\003\022*\n\"equivalence_class_size" - + "_upper_bound\030\002 \001(\003\022\023\n\013bucket_size\030\003 \001(\003\022" - + "v\n\rbucket_values\030\004 \003(\0132_.google.privacy." - + "dlp.v2.AnalyzeDataSourceRiskDetails.KAno" - + "nymityResult.KAnonymityEquivalenceClass\022" - + "\032\n\022bucket_value_count\030\005 \001(\003\032\260\005\n\020LDiversi" - + "tyResult\022\223\001\n+sensitive_value_frequency_h" - + "istogram_buckets\030\005 \003(\0132^.google.privacy." - + "dlp.v2.AnalyzeDataSourceRiskDetails.LDiv" - + "ersityResult.LDiversityHistogramBucket\032\340" - + "\001\n\032LDiversityEquivalenceClass\0226\n\020quasi_i" - + "ds_values\030\001 \003(\0132\034.google.privacy.dlp.v2." - + "Value\022\036\n\026equivalence_class_size\030\002 \001(\003\022%\n" - + "\035num_distinct_sensitive_values\030\003 \001(\003\022C\n\024" - + "top_sensitive_values\030\004 \003(\0132%.google.priv" - + "acy.dlp.v2.ValueFrequency\032\242\002\n\031LDiversity" - + "HistogramBucket\022-\n%sensitive_value_frequ" - + "ency_lower_bound\030\001 \001(\003\022-\n%sensitive_valu" - + "e_frequency_upper_bound\030\002 \001(\003\022\023\n\013bucket_" - + "size\030\003 \001(\003\022v\n\rbucket_values\030\004 \003(\0132_.goog" - + "le.privacy.dlp.v2.AnalyzeDataSourceRiskD" - + "etails.LDiversityResult.LDiversityEquiva" - + "lenceClass\022\032\n\022bucket_value_count\030\005 \001(\003\032\225" - + "\004\n\024KMapEstimationResult\022\212\001\n\032k_map_estima" - + "tion_histogram\030\001 \003(\0132f.google.privacy.dl" + + "InfoTypeStats\"\220\001\n\023InfoTypeDescription\022\014\n" + + "\004name\030\001 \001(\t\022\024\n\014display_name\030\002 \001(\t\022@\n\014sup" + + "ported_by\030\003 \003(\0162*.google.privacy.dlp.v2." + + "InfoTypeSupportedBy\022\023\n\013description\030\004 \001(\t" + + "\"=\n\024ListInfoTypesRequest\022\025\n\rlanguage_cod" + + "e\030\001 \001(\t\022\016\n\006filter\030\002 \001(\t\"W\n\025ListInfoTypes" + + "Response\022>\n\ninfo_types\030\001 \003(\0132*.google.pr" + + "ivacy.dlp.v2.InfoTypeDescription\"\301\001\n\025Ris" + + "kAnalysisJobConfig\022<\n\016privacy_metric\030\001 \001" + + "(\0132$.google.privacy.dlp.v2.PrivacyMetric" + + "\022:\n\014source_table\030\002 \001(\0132$.google.privacy." + + "dlp.v2.BigQueryTable\022.\n\007actions\030\003 \003(\0132\035." + + "google.privacy.dlp.v2.Action\"\267\001\n\007QuasiId" + + "\022-\n\005field\030\001 \001(\0132\036.google.privacy.dlp.v2." + + "FieldId\0224\n\tinfo_type\030\002 \001(\0132\037.google.priv" + + "acy.dlp.v2.InfoTypeH\000\022\024\n\ncustom_tag\030\003 \001(" + + "\tH\000\022*\n\010inferred\030\004 \001(\0132\026.google.protobuf." + + "EmptyH\000B\005\n\003tag\"\257\002\n\020StatisticalTable\0223\n\005t" + + "able\030\003 \001(\0132$.google.privacy.dlp.v2.BigQu" + + "eryTable\022O\n\tquasi_ids\030\001 \003(\0132<.google.pri" + + "vacy.dlp.v2.StatisticalTable.QuasiIdenti" + + "fierField\022:\n\022relative_frequency\030\002 \001(\0132\036." + + "google.privacy.dlp.v2.FieldId\032Y\n\024QuasiId" + + "entifierField\022-\n\005field\030\001 \001(\0132\036.google.pr" + + "ivacy.dlp.v2.FieldId\022\022\n\ncustom_tag\030\002 \001(\t" + + "\"\365\016\n\rPrivacyMetric\022[\n\026numerical_stats_co" + + "nfig\030\001 \001(\01329.google.privacy.dlp.v2.Priva" + + "cyMetric.NumericalStatsConfigH\000\022_\n\030categ" + + "orical_stats_config\030\002 \001(\0132;.google.priva" + + "cy.dlp.v2.PrivacyMetric.CategoricalStats" + + "ConfigH\000\022S\n\022k_anonymity_config\030\003 \001(\01325.g" + + "oogle.privacy.dlp.v2.PrivacyMetric.KAnon" + + "ymityConfigH\000\022S\n\022l_diversity_config\030\004 \001(" + + "\01325.google.privacy.dlp.v2.PrivacyMetric." + + "LDiversityConfigH\000\022\\\n\027k_map_estimation_c" + + "onfig\030\005 \001(\01329.google.privacy.dlp.v2.Priv" + + "acyMetric.KMapEstimationConfigH\000\022n\n delt" + + "a_presence_estimation_config\030\006 \001(\0132B.goo" + + "gle.privacy.dlp.v2.PrivacyMetric.DeltaPr" + + "esenceEstimationConfigH\000\032E\n\024NumericalSta" + + "tsConfig\022-\n\005field\030\001 \001(\0132\036.google.privacy" + + ".dlp.v2.FieldId\032G\n\026CategoricalStatsConfi" + + "g\022-\n\005field\030\001 \001(\0132\036.google.privacy.dlp.v2" + + ".FieldId\032y\n\020KAnonymityConfig\0221\n\tquasi_id" + + "s\030\001 \003(\0132\036.google.privacy.dlp.v2.FieldId\022" + + "2\n\tentity_id\030\002 \001(\0132\037.google.privacy.dlp." + + "v2.EntityId\032\202\001\n\020LDiversityConfig\0221\n\tquas" + + "i_ids\030\001 \003(\0132\036.google.privacy.dlp.v2.Fiel" + + "dId\022;\n\023sensitive_attribute\030\002 \001(\0132\036.googl" + + "e.privacy.dlp.v2.FieldId\032\350\005\n\024KMapEstimat" + + "ionConfig\022X\n\tquasi_ids\030\001 \003(\0132E.google.pr" + + "ivacy.dlp.v2.PrivacyMetric.KMapEstimatio" + + "nConfig.TaggedField\022\023\n\013region_code\030\002 \001(\t" + + "\022b\n\020auxiliary_tables\030\003 \003(\0132H.google.priv" + + "acy.dlp.v2.PrivacyMetric.KMapEstimationC" + + "onfig.AuxiliaryTable\032\273\001\n\013TaggedField\022-\n\005" + + "field\030\001 \001(\0132\036.google.privacy.dlp.v2.Fiel" + + "dId\0224\n\tinfo_type\030\002 \001(\0132\037.google.privacy." + + "dlp.v2.InfoTypeH\000\022\024\n\ncustom_tag\030\003 \001(\tH\000\022" + + "*\n\010inferred\030\004 \001(\0132\026.google.protobuf.Empt" + + "yH\000B\005\n\003tag\032\276\002\n\016AuxiliaryTable\0223\n\005table\030\003" + + " \001(\0132$.google.privacy.dlp.v2.BigQueryTab" + + "le\022h\n\tquasi_ids\030\001 \003(\0132U.google.privacy.d" + + "lp.v2.PrivacyMetric.KMapEstimationConfig" + + ".AuxiliaryTable.QuasiIdField\022:\n\022relative" + + "_frequency\030\002 \001(\0132\036.google.privacy.dlp.v2" + + ".FieldId\032Q\n\014QuasiIdField\022-\n\005field\030\001 \001(\0132" + + "\036.google.privacy.dlp.v2.FieldId\022\022\n\ncusto" + + "m_tag\030\002 \001(\t\032\252\001\n\035DeltaPresenceEstimationC" + + "onfig\0221\n\tquasi_ids\030\001 \003(\0132\036.google.privac" + + "y.dlp.v2.QuasiId\022\023\n\013region_code\030\002 \001(\t\022A\n" + + "\020auxiliary_tables\030\003 \003(\0132\'.google.privacy" + + ".dlp.v2.StatisticalTableB\006\n\004type\"\362\035\n\034Ana" + + "lyzeDataSourceRiskDetails\022F\n\030requested_p" + + "rivacy_metric\030\001 \001(\0132$.google.privacy.dlp" + + ".v2.PrivacyMetric\022D\n\026requested_source_ta" + + "ble\030\002 \001(\0132$.google.privacy.dlp.v2.BigQue" + + "ryTable\022j\n\026numerical_stats_result\030\003 \001(\0132" + + "H.google.privacy.dlp.v2.AnalyzeDataSourc" + + "eRiskDetails.NumericalStatsResultH\000\022n\n\030c" + + "ategorical_stats_result\030\004 \001(\0132J.google.p" + + "rivacy.dlp.v2.AnalyzeDataSourceRiskDetai" + + "ls.CategoricalStatsResultH\000\022b\n\022k_anonymi" + + "ty_result\030\005 \001(\0132D.google.privacy.dlp.v2." + + "AnalyzeDataSourceRiskDetails.KAnonymityR" + + "esultH\000\022b\n\022l_diversity_result\030\006 \001(\0132D.go" + + "ogle.privacy.dlp.v2.AnalyzeDataSourceRis" + + "kDetails.LDiversityResultH\000\022k\n\027k_map_est" + + "imation_result\030\007 \001(\0132H.google.privacy.dl" + "p.v2.AnalyzeDataSourceRiskDetails.KMapEs" - + "timationResult.KMapEstimationHistogramBu" - + "cket\032r\n\033KMapEstimationQuasiIdValues\0226\n\020q" - + "uasi_ids_values\030\001 \003(\0132\034.google.privacy.d" - + "lp.v2.Value\022\033\n\023estimated_anonymity\030\002 \001(\003" - + "\032\373\001\n\035KMapEstimationHistogramBucket\022\025\n\rmi" - + "n_anonymity\030\001 \001(\003\022\025\n\rmax_anonymity\030\002 \001(\003" - + "\022\023\n\013bucket_size\030\005 \001(\003\022{\n\rbucket_values\030\006" - + " \003(\0132d.google.privacy.dlp.v2.AnalyzeData" - + "SourceRiskDetails.KMapEstimationResult.K" - + "MapEstimationQuasiIdValues\022\032\n\022bucket_val" - + "ue_count\030\007 \001(\003\032\344\004\n\035DeltaPresenceEstimati" - + "onResult\022\245\001\n#delta_presence_estimation_h" - + "istogram\030\001 \003(\0132x.google.privacy.dlp.v2.A" - + "nalyzeDataSourceRiskDetails.DeltaPresenc" - + "eEstimationResult.DeltaPresenceEstimatio" - + "nHistogramBucket\032}\n$DeltaPresenceEstimat" - + "ionQuasiIdValues\0226\n\020quasi_ids_values\030\001 \003" - + "(\0132\034.google.privacy.dlp.v2.Value\022\035\n\025esti" - + "mated_probability\030\002 \001(\001\032\233\002\n&DeltaPresenc" - + "eEstimationHistogramBucket\022\027\n\017min_probab" - + "ility\030\001 \001(\001\022\027\n\017max_probability\030\002 \001(\001\022\023\n\013" - + "bucket_size\030\005 \001(\003\022\215\001\n\rbucket_values\030\006 \003(" - + "\0132v.google.privacy.dlp.v2.AnalyzeDataSou" - + "rceRiskDetails.DeltaPresenceEstimationRe" - + "sult.DeltaPresenceEstimationQuasiIdValue" - + "s\022\032\n\022bucket_value_count\030\007 \001(\003B\010\n\006result\"" - + "L\n\016ValueFrequency\022+\n\005value\030\001 \001(\0132\034.googl" - + "e.privacy.dlp.v2.Value\022\r\n\005count\030\002 \001(\003\"\263\002" - + "\n\005Value\022\027\n\rinteger_value\030\001 \001(\003H\000\022\025\n\013floa" - + "t_value\030\002 \001(\001H\000\022\026\n\014string_value\030\003 \001(\tH\000\022" - + "\027\n\rboolean_value\030\004 \001(\010H\000\0225\n\017timestamp_va" - + "lue\030\005 \001(\0132\032.google.protobuf.TimestampH\000\022" - + ",\n\ntime_value\030\006 \001(\0132\026.google.type.TimeOf" - + "DayH\000\022\'\n\ndate_value\030\007 \001(\0132\021.google.type." - + "DateH\000\0223\n\021day_of_week_value\030\010 \001(\0162\026.goog" - + "le.type.DayOfWeekH\000B\006\n\004type\"Q\n\tQuoteInfo" - + "\0224\n\tdate_time\030\002 \001(\0132\037.google.privacy.dlp" - + ".v2.DateTimeH\000B\016\n\014parsed_quote\"\337\001\n\010DateT" - + "ime\022\037\n\004date\030\001 \001(\0132\021.google.type.Date\022+\n\013" - + "day_of_week\030\002 \001(\0162\026.google.type.DayOfWee" - + "k\022$\n\004time\030\003 \001(\0132\026.google.type.TimeOfDay\022" - + ";\n\ttime_zone\030\004 \001(\0132(.google.privacy.dlp." - + "v2.DateTime.TimeZone\032\"\n\010TimeZone\022\026\n\016offs" - + "et_minutes\030\001 \001(\005\"\311\001\n\020DeidentifyConfig\022S\n" - + "\031info_type_transformations\030\001 \001(\0132..googl" - + "e.privacy.dlp.v2.InfoTypeTransformations" - + "H\000\022N\n\026record_transformations\030\002 \001(\0132,.goo" - + "gle.privacy.dlp.v2.RecordTransformations" - + "H\000B\020\n\016transformation\"\234\006\n\027PrimitiveTransf" - + "ormation\022C\n\016replace_config\030\001 \001(\0132).googl" - + "e.privacy.dlp.v2.ReplaceValueConfigH\000\022<\n" - + "\rredact_config\030\002 \001(\0132#.google.privacy.dl" - + "p.v2.RedactConfigH\000\022K\n\025character_mask_co" - + "nfig\030\003 \001(\0132*.google.privacy.dlp.v2.Chara" - + "cterMaskConfigH\000\022Y\n\035crypto_replace_ffx_f" - + "pe_config\030\004 \001(\01320.google.privacy.dlp.v2." - + "CryptoReplaceFfxFpeConfigH\000\022V\n\033fixed_siz" - + "e_bucketing_config\030\005 \001(\0132/.google.privac" - + "y.dlp.v2.FixedSizeBucketingConfigH\000\022B\n\020b" - + "ucketing_config\030\006 \001(\0132&.google.privacy.d" - + "lp.v2.BucketingConfigH\000\022Y\n\035replace_with_" - + "info_type_config\030\007 \001(\01320.google.privacy." - + "dlp.v2.ReplaceWithInfoTypeConfigH\000\022A\n\020ti" - + "me_part_config\030\010 \001(\0132%.google.privacy.dl" - + "p.v2.TimePartConfigH\000\022E\n\022crypto_hash_con" - + "fig\030\t \001(\0132\'.google.privacy.dlp.v2.Crypto" - + "HashConfigH\000\022C\n\021date_shift_config\030\013 \001(\0132" - + "&.google.privacy.dlp.v2.DateShiftConfigH" - + "\000B\020\n\016transformation\"\334\001\n\016TimePartConfig\022G" - + "\n\017part_to_extract\030\001 \001(\0162..google.privacy" - + ".dlp.v2.TimePartConfig.TimePart\"\200\001\n\010Time" - + "Part\022\031\n\025TIME_PART_UNSPECIFIED\020\000\022\010\n\004YEAR\020" - + "\001\022\t\n\005MONTH\020\002\022\020\n\014DAY_OF_MONTH\020\003\022\017\n\013DAY_OF" - + "_WEEK\020\004\022\020\n\014WEEK_OF_YEAR\020\005\022\017\n\013HOUR_OF_DAY" - + "\020\006\"H\n\020CryptoHashConfig\0224\n\ncrypto_key\030\001 \001" - + "(\0132 .google.privacy.dlp.v2.CryptoKey\"E\n\022" - + "ReplaceValueConfig\022/\n\tnew_value\030\001 \001(\0132\034." - + "google.privacy.dlp.v2.Value\"\033\n\031ReplaceWi" - + "thInfoTypeConfig\"\016\n\014RedactConfig\"\266\002\n\rCha" - + "rsToIgnore\022\034\n\022characters_to_skip\030\001 \001(\tH\000" - + "\022_\n\033common_characters_to_ignore\030\002 \001(\01628." - + "google.privacy.dlp.v2.CharsToIgnore.Comm" - + "onCharsToIgnoreH\000\"\227\001\n\023CommonCharsToIgnor" - + "e\022&\n\"COMMON_CHARS_TO_IGNORE_UNSPECIFIED\020" - + "\000\022\013\n\007NUMERIC\020\001\022\024\n\020ALPHA_UPPER_CASE\020\002\022\024\n\020" - + "ALPHA_LOWER_CASE\020\003\022\017\n\013PUNCTUATION\020\004\022\016\n\nW" - + "HITESPACE\020\005B\014\n\ncharacters\"\243\001\n\023CharacterM" - + "askConfig\022\031\n\021masking_character\030\001 \001(\t\022\026\n\016" - + "number_to_mask\030\002 \001(\005\022\025\n\rreverse_order\030\003 " - + "\001(\010\022B\n\024characters_to_ignore\030\004 \003(\0132$.goog" - + "le.privacy.dlp.v2.CharsToIgnore\"\225\001\n\030Fixe" - + "dSizeBucketingConfig\0221\n\013lower_bound\030\001 \001(" - + "\0132\034.google.privacy.dlp.v2.Value\0221\n\013upper" - + "_bound\030\002 \001(\0132\034.google.privacy.dlp.v2.Val" - + "ue\022\023\n\013bucket_size\030\003 \001(\001\"\353\001\n\017BucketingCon" - + "fig\022>\n\007buckets\030\001 \003(\0132-.google.privacy.dl" - + "p.v2.BucketingConfig.Bucket\032\227\001\n\006Bucket\022)" - + "\n\003min\030\001 \001(\0132\034.google.privacy.dlp.v2.Valu" - + "e\022)\n\003max\030\002 \001(\0132\034.google.privacy.dlp.v2.V" - + "alue\0227\n\021replacement_value\030\003 \001(\0132\034.google" - + ".privacy.dlp.v2.Value\"\364\003\n\031CryptoReplaceF", - "fxFpeConfig\0224\n\ncrypto_key\030\001 \001(\0132 .google" - + ".privacy.dlp.v2.CryptoKey\022/\n\007context\030\002 \001" - + "(\0132\036.google.privacy.dlp.v2.FieldId\022c\n\017co" - + "mmon_alphabet\030\004 \001(\0162H.google.privacy.dlp" - + ".v2.CryptoReplaceFfxFpeConfig.FfxCommonN" - + "ativeAlphabetH\000\022\031\n\017custom_alphabet\030\005 \001(\t" - + "H\000\022\017\n\005radix\030\006 \001(\005H\000\022<\n\023surrogate_info_ty" - + "pe\030\010 \001(\0132\037.google.privacy.dlp.v2.InfoTyp" - + "e\"\224\001\n\027FfxCommonNativeAlphabet\022*\n&FFX_COM" - + "MON_NATIVE_ALPHABET_UNSPECIFIED\020\000\022\013\n\007NUM" - + "ERIC\020\001\022\017\n\013HEXADECIMAL\020\002\022\034\n\030UPPER_CASE_AL" - + "PHA_NUMERIC\020\003\022\021\n\rALPHA_NUMERIC\020\004B\n\n\010alph" - + "abet\"\330\001\n\tCryptoKey\022>\n\ttransient\030\001 \001(\0132)." - + "google.privacy.dlp.v2.TransientCryptoKey" - + "H\000\022>\n\tunwrapped\030\002 \001(\0132).google.privacy.d" - + "lp.v2.UnwrappedCryptoKeyH\000\022A\n\013kms_wrappe" - + "d\030\003 \001(\0132*.google.privacy.dlp.v2.KmsWrapp" - + "edCryptoKeyH\000B\010\n\006source\"\"\n\022TransientCryp" - + "toKey\022\014\n\004name\030\001 \001(\t\"!\n\022UnwrappedCryptoKe" - + "y\022\013\n\003key\030\001 \001(\014\"C\n\023KmsWrappedCryptoKey\022\023\n" - + "\013wrapped_key\030\001 \001(\014\022\027\n\017crypto_key_name\030\002 " - + "\001(\t\"\270\001\n\017DateShiftConfig\022\030\n\020upper_bound_d" - + "ays\030\001 \001(\005\022\030\n\020lower_bound_days\030\002 \001(\005\022/\n\007c" - + "ontext\030\003 \001(\0132\036.google.privacy.dlp.v2.Fie" - + "ldId\0226\n\ncrypto_key\030\004 \001(\0132 .google.privac" - + "y.dlp.v2.CryptoKeyH\000B\010\n\006method\"\233\002\n\027InfoT" - + "ypeTransformations\022^\n\017transformations\030\001 " - + "\003(\0132E.google.privacy.dlp.v2.InfoTypeTran" - + "sformations.InfoTypeTransformation\032\237\001\n\026I" - + "nfoTypeTransformation\0223\n\ninfo_types\030\001 \003(" - + "\0132\037.google.privacy.dlp.v2.InfoType\022P\n\030pr" - + "imitive_transformation\030\002 \001(\0132..google.pr" - + "ivacy.dlp.v2.PrimitiveTransformation\"\273\002\n" - + "\023FieldTransformation\022.\n\006fields\030\001 \003(\0132\036.g" - + "oogle.privacy.dlp.v2.FieldId\0229\n\tconditio" - + "n\030\003 \001(\0132&.google.privacy.dlp.v2.RecordCo" - + "ndition\022R\n\030primitive_transformation\030\004 \001(" - + "\0132..google.privacy.dlp.v2.PrimitiveTrans" - + "formationH\000\022S\n\031info_type_transformations" - + "\030\005 \001(\0132..google.privacy.dlp.v2.InfoTypeT" - + "ransformationsH\000B\020\n\016transformation\"\251\001\n\025R" - + "ecordTransformations\022I\n\025field_transforma" - + "tions\030\001 \003(\0132*.google.privacy.dlp.v2.Fiel" - + "dTransformation\022E\n\023record_suppressions\030\002" - + " \003(\0132(.google.privacy.dlp.v2.RecordSuppr" - + "ession\"N\n\021RecordSuppression\0229\n\tcondition" - + "\030\001 \001(\0132&.google.privacy.dlp.v2.RecordCon" - + "dition\"\322\004\n\017RecordCondition\022G\n\013expression" - + "s\030\003 \001(\01322.google.privacy.dlp.v2.RecordCo" - + "ndition.Expressions\032\244\001\n\tCondition\022-\n\005fie" - + "ld\030\001 \001(\0132\036.google.privacy.dlp.v2.FieldId" - + "\022;\n\010operator\030\003 \001(\0162).google.privacy.dlp." - + "v2.RelationalOperator\022+\n\005value\030\004 \001(\0132\034.g" - + "oogle.privacy.dlp.v2.Value\032R\n\nConditions" - + "\022D\n\nconditions\030\001 \003(\01320.google.privacy.dl" - + "p.v2.RecordCondition.Condition\032\372\001\n\013Expre" - + "ssions\022\\\n\020logical_operator\030\001 \001(\0162B.googl" - + "e.privacy.dlp.v2.RecordCondition.Express" - + "ions.LogicalOperator\022G\n\nconditions\030\003 \001(\013" - + "21.google.privacy.dlp.v2.RecordCondition" - + ".ConditionsH\000\"<\n\017LogicalOperator\022 \n\034LOGI" - + "CAL_OPERATOR_UNSPECIFIED\020\000\022\007\n\003AND\020\001B\006\n\004t" - + "ype\"\203\001\n\026TransformationOverview\022\031\n\021transf" - + "ormed_bytes\030\002 \001(\003\022N\n\030transformation_summ" - + "aries\030\003 \003(\0132,.google.privacy.dlp.v2.Tran" - + "sformationSummary\"\237\005\n\025TransformationSumm" - + "ary\0222\n\tinfo_type\030\001 \001(\0132\037.google.privacy." - + "dlp.v2.InfoType\022-\n\005field\030\002 \001(\0132\036.google." - + "privacy.dlp.v2.FieldId\022F\n\016transformation" - + "\030\003 \001(\0132..google.privacy.dlp.v2.Primitive" - + "Transformation\022I\n\025field_transformations\030" - + "\005 \003(\0132*.google.privacy.dlp.v2.FieldTrans" - + "formation\022A\n\017record_suppress\030\006 \001(\0132(.goo" - + "gle.privacy.dlp.v2.RecordSuppression\022K\n\007" - + "results\030\004 \003(\0132:.google.privacy.dlp.v2.Tr" - + "ansformationSummary.SummaryResult\022\031\n\021tra" - + "nsformed_bytes\030\007 \001(\003\032\204\001\n\rSummaryResult\022\r" - + "\n\005count\030\001 \001(\003\022S\n\004code\030\002 \001(\0162E.google.pri" - + "vacy.dlp.v2.TransformationSummary.Transf" - + "ormationResultCode\022\017\n\007details\030\003 \001(\t\"^\n\030T" - + "ransformationResultCode\022*\n&TRANSFORMATIO" - + "N_RESULT_CODE_UNSPECIFIED\020\000\022\013\n\007SUCCESS\020\001" - + "\022\t\n\005ERROR\020\002\"U\n\010Schedule\022?\n\032recurrence_pe" - + "riod_duration\030\001 \001(\0132\031.google.protobuf.Du" - + "rationH\000B\010\n\006option\"\352\001\n\017InspectTemplate\022\014" - + "\n\004name\030\001 \001(\t\022\024\n\014display_name\030\002 \001(\t\022\023\n\013de" - + "scription\030\003 \001(\t\022/\n\013create_time\030\004 \001(\0132\032.g" - + "oogle.protobuf.Timestamp\022/\n\013update_time\030" - + "\005 \001(\0132\032.google.protobuf.Timestamp\022<\n\016ins" - + "pect_config\030\006 \001(\0132$.google.privacy.dlp.v" - + "2.InspectConfig\"\363\001\n\022DeidentifyTemplate\022\014" - + "\n\004name\030\001 \001(\t\022\024\n\014display_name\030\002 \001(\t\022\023\n\013de" - + "scription\030\003 \001(\t\022/\n\013create_time\030\004 \001(\0132\032.g" - + "oogle.protobuf.Timestamp\022/\n\013update_time\030" - + "\005 \001(\0132\032.google.protobuf.Timestamp\022B\n\021dei" - + "dentify_config\030\006 \001(\0132\'.google.privacy.dl" - + "p.v2.DeidentifyConfig\"\\\n\005Error\022#\n\007detail" - + "s\030\001 \001(\0132\022.google.rpc.Status\022.\n\ntimestamp" - + "s\030\002 \003(\0132\032.google.protobuf.Timestamp\"\333\004\n\n" - + "JobTrigger\022\014\n\004name\030\001 \001(\t\022\024\n\014display_name" - + "\030\002 \001(\t\022\023\n\013description\030\003 \001(\t\022>\n\013inspect_j" - + "ob\030\004 \001(\0132\'.google.privacy.dlp.v2.Inspect" - + "JobConfigH\000\022;\n\010triggers\030\005 \003(\0132).google.p" - + "rivacy.dlp.v2.JobTrigger.Trigger\022,\n\006erro" - + "rs\030\006 \003(\0132\034.google.privacy.dlp.v2.Error\022/" - + "\n\013create_time\030\007 \001(\0132\032.google.protobuf.Ti" - + "mestamp\022/\n\013update_time\030\010 \001(\0132\032.google.pr" - + "otobuf.Timestamp\0221\n\rlast_run_time\030\t \001(\0132" - + "\032.google.protobuf.Timestamp\0228\n\006status\030\n " - + "\001(\0162(.google.privacy.dlp.v2.JobTrigger.S" - + "tatus\032I\n\007Trigger\0223\n\010schedule\030\001 \001(\0132\037.goo" - + "gle.privacy.dlp.v2.ScheduleH\000B\t\n\007trigger" - + "\"H\n\006Status\022\026\n\022STATUS_UNSPECIFIED\020\000\022\013\n\007HE" - + "ALTHY\020\001\022\n\n\006PAUSED\020\002\022\r\n\tCANCELLED\020\003B\005\n\003jo" - + "b\"\375\002\n\006Action\022C\n\rsave_findings\030\001 \001(\0132*.go" - + "ogle.privacy.dlp.v2.Action.SaveFindingsH" - + "\000\022@\n\007pub_sub\030\002 \001(\0132-.google.privacy.dlp." - + "v2.Action.PublishToPubSubH\000\022U\n\027publish_s" - + "ummary_to_cscc\030\003 \001(\01322.google.privacy.dl" - + "p.v2.Action.PublishSummaryToCsccH\000\032Q\n\014Sa" - + "veFindings\022A\n\routput_config\030\001 \001(\0132*.goog" - + "le.privacy.dlp.v2.OutputStorageConfig\032 \n" - + "\017PublishToPubSub\022\r\n\005topic\030\001 \001(\t\032\026\n\024Publi" - + "shSummaryToCsccB\010\n\006action\"\205\001\n\034CreateInsp" - + "ectTemplateRequest\022\016\n\006parent\030\001 \001(\t\022@\n\020in" - + "spect_template\030\002 \001(\0132&.google.privacy.dl" - + "p.v2.InspectTemplate\022\023\n\013template_id\030\003 \001(" - + "\t\"\237\001\n\034UpdateInspectTemplateRequest\022\014\n\004na" - + "me\030\001 \001(\t\022@\n\020inspect_template\030\002 \001(\0132&.goo" - + "gle.privacy.dlp.v2.InspectTemplate\022/\n\013up" - + "date_mask\030\003 \001(\0132\032.google.protobuf.FieldM" - + "ask\")\n\031GetInspectTemplateRequest\022\014\n\004name" - + "\030\001 \001(\t\"f\n\033ListInspectTemplatesRequest\022\016\n" - + "\006parent\030\001 \001(\t\022\022\n\npage_token\030\002 \001(\t\022\021\n\tpag" - + "e_size\030\003 \001(\005\022\020\n\010order_by\030\004 \001(\t\"z\n\034ListIn" - + "spectTemplatesResponse\022A\n\021inspect_templa" - + "tes\030\001 \003(\0132&.google.privacy.dlp.v2.Inspec" - + "tTemplate\022\027\n\017next_page_token\030\002 \001(\t\",\n\034De" - + "leteInspectTemplateRequest\022\014\n\004name\030\001 \001(\t" - + "\"u\n\027CreateJobTriggerRequest\022\016\n\006parent\030\001 " - + "\001(\t\0226\n\013job_trigger\030\002 \001(\0132!.google.privac" - + "y.dlp.v2.JobTrigger\022\022\n\ntrigger_id\030\003 \001(\t\"" - + "\220\001\n\027UpdateJobTriggerRequest\022\014\n\004name\030\001 \001(" - + "\t\0226\n\013job_trigger\030\002 \001(\0132!.google.privacy." - + "dlp.v2.JobTrigger\022/\n\013update_mask\030\003 \001(\0132\032" - + ".google.protobuf.FieldMask\"$\n\024GetJobTrig" - + "gerRequest\022\014\n\004name\030\001 \001(\t\"\276\001\n\023CreateDlpJo" - + "bRequest\022\016\n\006parent\030\001 \001(\t\022>\n\013inspect_job\030" - + "\002 \001(\0132\'.google.privacy.dlp.v2.InspectJob" - + "ConfigH\000\022@\n\010risk_job\030\003 \001(\0132,.google.priv" - + "acy.dlp.v2.RiskAnalysisJobConfigH\000\022\016\n\006jo" - + "b_id\030\004 \001(\tB\005\n\003job\"a\n\026ListJobTriggersRequ" - + "est\022\016\n\006parent\030\001 \001(\t\022\022\n\npage_token\030\002 \001(\t\022" - + "\021\n\tpage_size\030\003 \001(\005\022\020\n\010order_by\030\004 \001(\t\"k\n\027" - + "ListJobTriggersResponse\0227\n\014job_triggers\030" - + "\001 \003(\0132!.google.privacy.dlp.v2.JobTrigger" - + "\022\027\n\017next_page_token\030\002 \001(\t\"\'\n\027DeleteJobTr" - + "iggerRequest\022\014\n\004name\030\001 \001(\t\"\335\001\n\020InspectJo" - + "bConfig\022<\n\016storage_config\030\001 \001(\0132$.google" - + ".privacy.dlp.v2.StorageConfig\022<\n\016inspect" - + "_config\030\002 \001(\0132$.google.privacy.dlp.v2.In" - + "spectConfig\022\035\n\025inspect_template_name\030\003 \001" - + "(\t\022.\n\007actions\030\004 \003(\0132\035.google.privacy.dlp" - + ".v2.Action\"\336\004\n\006DlpJob\022\014\n\004name\030\001 \001(\t\022/\n\004t" - + "ype\030\002 \001(\0162!.google.privacy.dlp.v2.DlpJob" - + "Type\0225\n\005state\030\003 \001(\0162&.google.privacy.dlp" - + ".v2.DlpJob.JobState\022K\n\014risk_details\030\004 \001(" - + "\01323.google.privacy.dlp.v2.AnalyzeDataSou" - + "rceRiskDetailsH\000\022J\n\017inspect_details\030\005 \001(" - + "\0132/.google.privacy.dlp.v2.InspectDataSou" - + "rceDetailsH\000\022/\n\013create_time\030\006 \001(\0132\032.goog" - + "le.protobuf.Timestamp\022.\n\nstart_time\030\007 \001(" - + "\0132\032.google.protobuf.Timestamp\022,\n\010end_tim" - + "e\030\010 \001(\0132\032.google.protobuf.Timestamp\022\030\n\020j" - + "ob_trigger_name\030\n \001(\t\022,\n\006errors\030\013 \003(\0132\034." - + "google.privacy.dlp.v2.Error\"c\n\010JobState\022" - + "\031\n\025JOB_STATE_UNSPECIFIED\020\000\022\013\n\007PENDING\020\001\022" - + "\013\n\007RUNNING\020\002\022\010\n\004DONE\020\003\022\014\n\010CANCELED\020\004\022\n\n\006" - + "FAILED\020\005B\t\n\007details\" \n\020GetDlpJobRequest\022" - + "\014\n\004name\030\001 \001(\t\"\236\001\n\022ListDlpJobsRequest\022\016\n\006" - + "parent\030\004 \001(\t\022\016\n\006filter\030\001 \001(\t\022\021\n\tpage_siz" - + "e\030\002 \001(\005\022\022\n\npage_token\030\003 \001(\t\022/\n\004type\030\005 \001(" - + "\0162!.google.privacy.dlp.v2.DlpJobType\022\020\n\010" - + "order_by\030\006 \001(\t\"[\n\023ListDlpJobsResponse\022+\n" - + "\004jobs\030\001 \003(\0132\035.google.privacy.dlp.v2.DlpJ" - + "ob\022\027\n\017next_page_token\030\002 \001(\t\"#\n\023CancelDlp" - + "JobRequest\022\014\n\004name\030\001 \001(\t\"#\n\023DeleteDlpJob" - + "Request\022\014\n\004name\030\001 \001(\t\"\216\001\n\037CreateDeidenti" - + "fyTemplateRequest\022\016\n\006parent\030\001 \001(\t\022F\n\023dei" - + "dentify_template\030\002 \001(\0132).google.privacy." - + "dlp.v2.DeidentifyTemplate\022\023\n\013template_id" - + "\030\003 \001(\t\"\250\001\n\037UpdateDeidentifyTemplateReque" - + "st\022\014\n\004name\030\001 \001(\t\022F\n\023deidentify_template\030" - + "\002 \001(\0132).google.privacy.dlp.v2.Deidentify" - + "Template\022/\n\013update_mask\030\003 \001(\0132\032.google.p" - + "rotobuf.FieldMask\",\n\034GetDeidentifyTempla" - + "teRequest\022\014\n\004name\030\001 \001(\t\"i\n\036ListDeidentif" - + "yTemplatesRequest\022\016\n\006parent\030\001 \001(\t\022\022\n\npag" - + "e_token\030\002 \001(\t\022\021\n\tpage_size\030\003 \001(\005\022\020\n\010orde" - + "r_by\030\004 \001(\t\"\203\001\n\037ListDeidentifyTemplatesRe" - + "sponse\022G\n\024deidentify_templates\030\001 \003(\0132).g" - + "oogle.privacy.dlp.v2.DeidentifyTemplate\022" - + "\027\n\017next_page_token\030\002 \001(\t\"/\n\037DeleteDeiden" - + "tifyTemplateRequest\022\014\n\004name\030\001 \001(\t\"\364\001\n\033La" - + "rgeCustomDictionaryConfig\022<\n\013output_path" - + "\030\001 \001(\0132\'.google.privacy.dlp.v2.CloudStor" - + "agePath\022L\n\026cloud_storage_file_set\030\002 \001(\0132" - + "*.google.privacy.dlp.v2.CloudStorageFile" - + "SetH\000\022?\n\017big_query_field\030\003 \001(\0132$.google." - + "privacy.dlp.v2.BigQueryFieldH\000B\010\n\006source" - + "\"\240\001\n\024StoredInfoTypeConfig\022\024\n\014display_nam" - + "e\030\001 \001(\t\022\023\n\013description\030\002 \001(\t\022U\n\027large_cu" - + "stom_dictionary\030\003 \001(\01322.google.privacy.d" - + "lp.v2.LargeCustomDictionaryConfigH\000B\006\n\004t" - + "ype\"\356\001\n\025StoredInfoTypeVersion\022;\n\006config\030" - + "\001 \001(\0132+.google.privacy.dlp.v2.StoredInfo" - + "TypeConfig\022/\n\013create_time\030\002 \001(\0132\032.google" - + ".protobuf.Timestamp\0229\n\005state\030\003 \001(\0162*.goo" - + "gle.privacy.dlp.v2.StoredInfoTypeState\022," - + "\n\006errors\030\004 \003(\0132\034.google.privacy.dlp.v2.E" - + "rror\"\255\001\n\016StoredInfoType\022\014\n\004name\030\001 \001(\t\022E\n" - + "\017current_version\030\002 \001(\0132,.google.privacy." - + "dlp.v2.StoredInfoTypeVersion\022F\n\020pending_" - + "versions\030\003 \003(\0132,.google.privacy.dlp.v2.S" - + "toredInfoTypeVersion\"\207\001\n\033CreateStoredInf" - + "oTypeRequest\022\016\n\006parent\030\001 \001(\t\022;\n\006config\030\002" - + " \001(\0132+.google.privacy.dlp.v2.StoredInfoT" - + "ypeConfig\022\033\n\023stored_info_type_id\030\003 \001(\t\"\231" - + "\001\n\033UpdateStoredInfoTypeRequest\022\014\n\004name\030\001" - + " \001(\t\022;\n\006config\030\002 \001(\0132+.google.privacy.dl" - + "p.v2.StoredInfoTypeConfig\022/\n\013update_mask" - + "\030\003 \001(\0132\032.google.protobuf.FieldMask\"(\n\030Ge" - + "tStoredInfoTypeRequest\022\014\n\004name\030\001 \001(\t\"e\n\032" - + "ListStoredInfoTypesRequest\022\016\n\006parent\030\001 \001" - + "(\t\022\022\n\npage_token\030\002 \001(\t\022\021\n\tpage_size\030\003 \001(" - + "\005\022\020\n\010order_by\030\004 \001(\t\"x\n\033ListStoredInfoTyp" - + "esResponse\022@\n\021stored_info_types\030\001 \003(\0132%." - + "google.privacy.dlp.v2.StoredInfoType\022\027\n\017" - + "next_page_token\030\002 \001(\t\"+\n\033DeleteStoredInf" - + "oTypeRequest\022\014\n\004name\030\001 \001(\t*M\n\rContentOpt" - + "ion\022\027\n\023CONTENT_UNSPECIFIED\020\000\022\020\n\014CONTENT_" - + "TEXT\020\001\022\021\n\rCONTENT_IMAGE\020\002*\215\001\n\014MatchingTy" - + "pe\022\035\n\031MATCHING_TYPE_UNSPECIFIED\020\000\022\034\n\030MAT" - + "CHING_TYPE_FULL_MATCH\020\001\022\037\n\033MATCHING_TYPE" - + "_PARTIAL_MATCH\020\002\022\037\n\033MATCHING_TYPE_INVERS" - + "E_MATCH\020\003*P\n\023InfoTypeSupportedBy\022\031\n\025ENUM" - + "_TYPE_UNSPECIFIED\020\000\022\013\n\007INSPECT\020\001\022\021\n\rRISK" - + "_ANALYSIS\020\002*\273\001\n\022RelationalOperator\022#\n\037RE" - + "LATIONAL_OPERATOR_UNSPECIFIED\020\000\022\014\n\010EQUAL" - + "_TO\020\001\022\020\n\014NOT_EQUAL_TO\020\002\022\020\n\014GREATER_THAN\020" - + "\003\022\r\n\tLESS_THAN\020\004\022\032\n\026GREATER_THAN_OR_EQUA" - + "LS\020\005\022\027\n\023LESS_THAN_OR_EQUALS\020\006\022\n\n\006EXISTS\020" - + "\007*R\n\nDlpJobType\022\034\n\030DLP_JOB_TYPE_UNSPECIF" - + "IED\020\000\022\017\n\013INSPECT_JOB\020\001\022\025\n\021RISK_ANALYSIS_" - + "JOB\020\002*n\n\023StoredInfoTypeState\022&\n\"STORED_I" - + "NFO_TYPE_STATE_UNSPECIFIED\020\000\022\013\n\007PENDING\020" - + "\001\022\t\n\005READY\020\002\022\n\n\006FAILED\020\003\022\013\n\007INVALID\020\0042\251+" - + "\n\nDlpService\022\241\001\n\016InspectContent\022,.google" - + ".privacy.dlp.v2.InspectContentRequest\032-." - + "google.privacy.dlp.v2.InspectContentResp" - + "onse\"2\202\323\344\223\002,\"\'/v2/{parent=projects/*}/co" - + "ntent:inspect:\001*\022\225\001\n\013RedactImage\022).googl" - + "e.privacy.dlp.v2.RedactImageRequest\032*.go" - + "ogle.privacy.dlp.v2.RedactImageResponse\"" - + "/\202\323\344\223\002)\"$/v2/{parent=projects/*}/image:r" - + "edact:\001*\022\255\001\n\021DeidentifyContent\022/.google." - + "privacy.dlp.v2.DeidentifyContentRequest\032" - + "0.google.privacy.dlp.v2.DeidentifyConten" - + "tResponse\"5\202\323\344\223\002/\"*/v2/{parent=projects/" - + "*}/content:deidentify:\001*\022\255\001\n\021ReidentifyC" - + "ontent\022/.google.privacy.dlp.v2.Reidentif" - + "yContentRequest\0320.google.privacy.dlp.v2." - + "ReidentifyContentResponse\"5\202\323\344\223\002/\"*/v2/{" - + "parent=projects/*}/content:reidentify:\001*" - + "\022\201\001\n\rListInfoTypes\022+.google.privacy.dlp." - + "v2.ListInfoTypesRequest\032,.google.privacy" - + ".dlp.v2.ListInfoTypesResponse\"\025\202\323\344\223\002\017\022\r/" - + "v2/infoTypes\022\335\001\n\025CreateInspectTemplate\0223" - + ".google.privacy.dlp.v2.CreateInspectTemp" - + "lateRequest\032&.google.privacy.dlp.v2.Insp" - + "ectTemplate\"g\202\323\344\223\002a\"-/v2/{parent=organiz" - + "ations/*}/inspectTemplates:\001*Z-\"(/v2/{pa" - + "rent=projects/*}/inspectTemplates:\001*\022\335\001\n" - + "\025UpdateInspectTemplate\0223.google.privacy." - + "dlp.v2.UpdateInspectTemplateRequest\032&.go" - + "ogle.privacy.dlp.v2.InspectTemplate\"g\202\323\344" - + "\223\002a2-/v2/{name=organizations/*/inspectTe" - + "mplates/*}:\001*Z-2(/v2/{name=projects/*/in" - + "spectTemplates/*}:\001*\022\321\001\n\022GetInspectTempl" - + "ate\0220.google.privacy.dlp.v2.GetInspectTe" - + "mplateRequest\032&.google.privacy.dlp.v2.In" - + "spectTemplate\"a\202\323\344\223\002[\022-/v2/{name=organiz" - + "ations/*/inspectTemplates/*}Z*\022(/v2/{nam" - + "e=projects/*/inspectTemplates/*}\022\342\001\n\024Lis" - + "tInspectTemplates\0222.google.privacy.dlp.v" - + "2.ListInspectTemplatesRequest\0323.google.p" - + "rivacy.dlp.v2.ListInspectTemplatesRespon" - + "se\"a\202\323\344\223\002[\022-/v2/{parent=organizations/*}" - + "/inspectTemplatesZ*\022(/v2/{parent=project" - + "s/*}/inspectTemplates\022\307\001\n\025DeleteInspectT" - + "emplate\0223.google.privacy.dlp.v2.DeleteIn" - + "spectTemplateRequest\032\026.google.protobuf.E" - + "mpty\"a\202\323\344\223\002[*-/v2/{name=organizations/*/" - + "inspectTemplates/*}Z**(/v2/{name=project" - + "s/*/inspectTemplates/*}\022\354\001\n\030CreateDeiden" - + "tifyTemplate\0226.google.privacy.dlp.v2.Cre" - + "ateDeidentifyTemplateRequest\032).google.pr" - + "ivacy.dlp.v2.DeidentifyTemplate\"m\202\323\344\223\002g\"" - + "0/v2/{parent=organizations/*}/deidentify" - + "Templates:\001*Z0\"+/v2/{parent=projects/*}/" - + "deidentifyTemplates:\001*\022\354\001\n\030UpdateDeident" - + "ifyTemplate\0226.google.privacy.dlp.v2.Upda" - + "teDeidentifyTemplateRequest\032).google.pri" - + "vacy.dlp.v2.DeidentifyTemplate\"m\202\323\344\223\002g20" - + "/v2/{name=organizations/*/deidentifyTemp" - + "lates/*}:\001*Z02+/v2/{name=projects/*/deid" - + "entifyTemplates/*}:\001*\022\340\001\n\025GetDeidentifyT" - + "emplate\0223.google.privacy.dlp.v2.GetDeide" - + "ntifyTemplateRequest\032).google.privacy.dl" - + "p.v2.DeidentifyTemplate\"g\202\323\344\223\002a\0220/v2/{na" - + "me=organizations/*/deidentifyTemplates/*" - + "}Z-\022+/v2/{name=projects/*/deidentifyTemp" - + "lates/*}\022\361\001\n\027ListDeidentifyTemplates\0225.g" - + "oogle.privacy.dlp.v2.ListDeidentifyTempl" - + "atesRequest\0326.google.privacy.dlp.v2.List" - + "DeidentifyTemplatesResponse\"g\202\323\344\223\002a\0220/v2" - + "/{parent=organizations/*}/deidentifyTemp" - + "latesZ-\022+/v2/{parent=projects/*}/deident" - + "ifyTemplates\022\323\001\n\030DeleteDeidentifyTemplat" - + "e\0226.google.privacy.dlp.v2.DeleteDeidenti" - + "fyTemplateRequest\032\026.google.protobuf.Empt" - + "y\"g\202\323\344\223\002a*0/v2/{name=organizations/*/dei" - + "dentifyTemplates/*}Z-*+/v2/{name=project" - + "s/*/deidentifyTemplates/*}\022\225\001\n\020CreateJob" - + "Trigger\022..google.privacy.dlp.v2.CreateJo" - + "bTriggerRequest\032!.google.privacy.dlp.v2." - + "JobTrigger\".\202\323\344\223\002(\"#/v2/{parent=projects" - + "/*}/jobTriggers:\001*\022\225\001\n\020UpdateJobTrigger\022" - + "..google.privacy.dlp.v2.UpdateJobTrigger" - + "Request\032!.google.privacy.dlp.v2.JobTrigg" - + "er\".\202\323\344\223\002(2#/v2/{name=projects/*/jobTrig" - + "gers/*}:\001*\022\214\001\n\rGetJobTrigger\022+.google.pr" - + "ivacy.dlp.v2.GetJobTriggerRequest\032!.goog" - + "le.privacy.dlp.v2.JobTrigger\"+\202\323\344\223\002%\022#/v" - + "2/{name=projects/*/jobTriggers/*}\022\235\001\n\017Li" - + "stJobTriggers\022-.google.privacy.dlp.v2.Li" - + "stJobTriggersRequest\032..google.privacy.dl" - + "p.v2.ListJobTriggersResponse\"+\202\323\344\223\002%\022#/v" - + "2/{parent=projects/*}/jobTriggers\022\207\001\n\020De" - + "leteJobTrigger\022..google.privacy.dlp.v2.D" - + "eleteJobTriggerRequest\032\026.google.protobuf" - + ".Empty\"+\202\323\344\223\002%*#/v2/{name=projects/*/job" - + "Triggers/*}\022\205\001\n\014CreateDlpJob\022*.google.pr" - + "ivacy.dlp.v2.CreateDlpJobRequest\032\035.googl" - + "e.privacy.dlp.v2.DlpJob\"*\202\323\344\223\002$\"\037/v2/{pa" - + "rent=projects/*}/dlpJobs:\001*\022\215\001\n\013ListDlpJ" - + "obs\022).google.privacy.dlp.v2.ListDlpJobsR" - + "equest\032*.google.privacy.dlp.v2.ListDlpJo" - + "bsResponse\"\'\202\323\344\223\002!\022\037/v2/{parent=projects" - + "/*}/dlpJobs\022|\n\tGetDlpJob\022\'.google.privac" - + "y.dlp.v2.GetDlpJobRequest\032\035.google.priva" - + "cy.dlp.v2.DlpJob\"\'\202\323\344\223\002!\022\037/v2/{name=proj" - + "ects/*/dlpJobs/*}\022{\n\014DeleteDlpJob\022*.goog" - + "le.privacy.dlp.v2.DeleteDlpJobRequest\032\026." - + "google.protobuf.Empty\"\'\202\323\344\223\002!*\037/v2/{name" - + "=projects/*/dlpJobs/*}\022\205\001\n\014CancelDlpJob\022" - + "*.google.privacy.dlp.v2.CancelDlpJobRequ" - + "est\032\026.google.protobuf.Empty\"1\202\323\344\223\002+\"&/v2" - + "/{name=projects/*/dlpJobs/*}:cancel:\001*\022\330" - + "\001\n\024CreateStoredInfoType\0222.google.privacy" - + ".dlp.v2.CreateStoredInfoTypeRequest\032%.go" - + "ogle.privacy.dlp.v2.StoredInfoType\"e\202\323\344\223" - + "\002_\",/v2/{parent=organizations/*}/storedI" - + "nfoTypes:\001*Z,\"\'/v2/{parent=projects/*}/s" - + "toredInfoTypes:\001*\022\330\001\n\024UpdateStoredInfoTy" - + "pe\0222.google.privacy.dlp.v2.UpdateStoredI" - + "nfoTypeRequest\032%.google.privacy.dlp.v2.S" - + "toredInfoType\"e\202\323\344\223\002_2,/v2/{name=organiz" - + "ations/*/storedInfoTypes/*}:\001*Z,2\'/v2/{n" - + "ame=projects/*/storedInfoTypes/*}:\001*\022\314\001\n" - + "\021GetStoredInfoType\022/.google.privacy.dlp." - + "v2.GetStoredInfoTypeRequest\032%.google.pri" - + "vacy.dlp.v2.StoredInfoType\"_\202\323\344\223\002Y\022,/v2/" - + "{name=organizations/*/storedInfoTypes/*}" - + "Z)\022\'/v2/{name=projects/*/storedInfoTypes" - + "/*}\022\335\001\n\023ListStoredInfoTypes\0221.google.pri" - + "vacy.dlp.v2.ListStoredInfoTypesRequest\0322" - + ".google.privacy.dlp.v2.ListStoredInfoTyp" - + "esResponse\"_\202\323\344\223\002Y\022,/v2/{parent=organiza" - + "tions/*}/storedInfoTypesZ)\022\'/v2/{parent=" - + "projects/*}/storedInfoTypes\022\303\001\n\024DeleteSt" - + "oredInfoType\0222.google.privacy.dlp.v2.Del" - + "eteStoredInfoTypeRequest\032\026.google.protob" - + "uf.Empty\"_\202\323\344\223\002Y*,/v2/{name=organization" - + "s/*/storedInfoTypes/*}Z)*\'/v2/{name=proj" - + "ects/*/storedInfoTypes/*}B\215\001\n\031com.google" - + ".privacy.dlp.v2B\010DlpProtoP\001Z8google.gola" - + "ng.org/genproto/googleapis/privacy/dlp/v" - + "2;dlp\252\002\023Google.Cloud.Dlp.V2\312\002\023Google\\Clo" - + "ud\\Dlp\\V2b\006proto3" + + "timationResultH\000\022}\n delta_presence_estim" + + "ation_result\030\t \001(\0132Q.google.privacy.dlp." + + "v2.AnalyzeDataSourceRiskDetails.DeltaPre" + + "senceEstimationResultH\000\032\257\001\n\024NumericalSta" + + "tsResult\022/\n\tmin_value\030\001 \001(\0132\034.google.pri" + + "vacy.dlp.v2.Value\022/\n\tmax_value\030\002 \001(\0132\034.g" + + "oogle.privacy.dlp.v2.Value\0225\n\017quantile_v" + + "alues\030\004 \003(\0132\034.google.privacy.dlp.v2.Valu" + + "e\032\215\003\n\026CategoricalStatsResult\022\225\001\n!value_f" + + "requency_histogram_buckets\030\005 \003(\0132j.googl" + + "e.privacy.dlp.v2.AnalyzeDataSourceRiskDe" + + "tails.CategoricalStatsResult.Categorical" + + "StatsHistogramBucket\032\332\001\n\037CategoricalStat" + + "sHistogramBucket\022#\n\033value_frequency_lowe" + + "r_bound\030\001 \001(\003\022#\n\033value_frequency_upper_b" + + "ound\030\002 \001(\003\022\023\n\013bucket_size\030\003 \001(\003\022<\n\rbucke" + + "t_values\030\004 \003(\0132%.google.privacy.dlp.v2.V" + + "alueFrequency\022\032\n\022bucket_value_count\030\005 \001(" + + "\003\032\265\004\n\020KAnonymityResult\022\213\001\n#equivalence_c" + + "lass_histogram_buckets\030\005 \003(\0132^.google.pr" + + "ivacy.dlp.v2.AnalyzeDataSourceRiskDetail" + + "s.KAnonymityResult.KAnonymityHistogramBu" + + "cket\032t\n\032KAnonymityEquivalenceClass\0226\n\020qu" + + "asi_ids_values\030\001 \003(\0132\034.google.privacy.dl" + + "p.v2.Value\022\036\n\026equivalence_class_size\030\002 \001" + + "(\003\032\234\002\n\031KAnonymityHistogramBucket\022*\n\"equi" + + "valence_class_size_lower_bound\030\001 \001(\003\022*\n\"" + + "equivalence_class_size_upper_bound\030\002 \001(\003" + + "\022\023\n\013bucket_size\030\003 \001(\003\022v\n\rbucket_values\030\004" + + " \003(\0132_.google.privacy.dlp.v2.AnalyzeData" + + "SourceRiskDetails.KAnonymityResult.KAnon" + + "ymityEquivalenceClass\022\032\n\022bucket_value_co" + + "unt\030\005 \001(\003\032\260\005\n\020LDiversityResult\022\223\001\n+sensi" + + "tive_value_frequency_histogram_buckets\030\005" + + " \003(\0132^.google.privacy.dlp.v2.AnalyzeData" + + "SourceRiskDetails.LDiversityResult.LDive" + + "rsityHistogramBucket\032\340\001\n\032LDiversityEquiv" + + "alenceClass\0226\n\020quasi_ids_values\030\001 \003(\0132\034." + + "google.privacy.dlp.v2.Value\022\036\n\026equivalen" + + "ce_class_size\030\002 \001(\003\022%\n\035num_distinct_sens" + + "itive_values\030\003 \001(\003\022C\n\024top_sensitive_valu" + + "es\030\004 \003(\0132%.google.privacy.dlp.v2.ValueFr" + + "equency\032\242\002\n\031LDiversityHistogramBucket\022-\n" + + "%sensitive_value_frequency_lower_bound\030\001" + + " \001(\003\022-\n%sensitive_value_frequency_upper_" + + "bound\030\002 \001(\003\022\023\n\013bucket_size\030\003 \001(\003\022v\n\rbuck" + + "et_values\030\004 \003(\0132_.google.privacy.dlp.v2." + + "AnalyzeDataSourceRiskDetails.LDiversityR" + + "esult.LDiversityEquivalenceClass\022\032\n\022buck" + + "et_value_count\030\005 \001(\003\032\225\004\n\024KMapEstimationR" + + "esult\022\212\001\n\032k_map_estimation_histogram\030\001 \003" + + "(\0132f.google.privacy.dlp.v2.AnalyzeDataSo" + + "urceRiskDetails.KMapEstimationResult.KMa" + + "pEstimationHistogramBucket\032r\n\033KMapEstima" + + "tionQuasiIdValues\0226\n\020quasi_ids_values\030\001 " + + "\003(\0132\034.google.privacy.dlp.v2.Value\022\033\n\023est" + + "imated_anonymity\030\002 \001(\003\032\373\001\n\035KMapEstimatio" + + "nHistogramBucket\022\025\n\rmin_anonymity\030\001 \001(\003\022" + + "\025\n\rmax_anonymity\030\002 \001(\003\022\023\n\013bucket_size\030\005 " + + "\001(\003\022{\n\rbucket_values\030\006 \003(\0132d.google.priv" + + "acy.dlp.v2.AnalyzeDataSourceRiskDetails." + + "KMapEstimationResult.KMapEstimationQuasi" + + "IdValues\022\032\n\022bucket_value_count\030\007 \001(\003\032\344\004\n" + + "\035DeltaPresenceEstimationResult\022\245\001\n#delta" + + "_presence_estimation_histogram\030\001 \003(\0132x.g" + + "oogle.privacy.dlp.v2.AnalyzeDataSourceRi" + + "skDetails.DeltaPresenceEstimationResult." + + "DeltaPresenceEstimationHistogramBucket\032}" + + "\n$DeltaPresenceEstimationQuasiIdValues\0226" + + "\n\020quasi_ids_values\030\001 \003(\0132\034.google.privac" + + "y.dlp.v2.Value\022\035\n\025estimated_probability\030" + + "\002 \001(\001\032\233\002\n&DeltaPresenceEstimationHistogr" + + "amBucket\022\027\n\017min_probability\030\001 \001(\001\022\027\n\017max" + + "_probability\030\002 \001(\001\022\023\n\013bucket_size\030\005 \001(\003\022" + + "\215\001\n\rbucket_values\030\006 \003(\0132v.google.privacy" + + ".dlp.v2.AnalyzeDataSourceRiskDetails.Del" + + "taPresenceEstimationResult.DeltaPresence" + + "EstimationQuasiIdValues\022\032\n\022bucket_value_" + + "count\030\007 \001(\003B\010\n\006result\"L\n\016ValueFrequency\022" + + "+\n\005value\030\001 \001(\0132\034.google.privacy.dlp.v2.V" + + "alue\022\r\n\005count\030\002 \001(\003\"\263\002\n\005Value\022\027\n\rinteger" + + "_value\030\001 \001(\003H\000\022\025\n\013float_value\030\002 \001(\001H\000\022\026\n" + + "\014string_value\030\003 \001(\tH\000\022\027\n\rboolean_value\030\004" + + " \001(\010H\000\0225\n\017timestamp_value\030\005 \001(\0132\032.google" + + ".protobuf.TimestampH\000\022,\n\ntime_value\030\006 \001(" + + "\0132\026.google.type.TimeOfDayH\000\022\'\n\ndate_valu" + + "e\030\007 \001(\0132\021.google.type.DateH\000\0223\n\021day_of_w" + + "eek_value\030\010 \001(\0162\026.google.type.DayOfWeekH" + + "\000B\006\n\004type\"Q\n\tQuoteInfo\0224\n\tdate_time\030\002 \001(" + + "\0132\037.google.privacy.dlp.v2.DateTimeH\000B\016\n\014" + + "parsed_quote\"\337\001\n\010DateTime\022\037\n\004date\030\001 \001(\0132" + + "\021.google.type.Date\022+\n\013day_of_week\030\002 \001(\0162" + + "\026.google.type.DayOfWeek\022$\n\004time\030\003 \001(\0132\026." + + "google.type.TimeOfDay\022;\n\ttime_zone\030\004 \001(\013" + + "2(.google.privacy.dlp.v2.DateTime.TimeZo" + + "ne\032\"\n\010TimeZone\022\026\n\016offset_minutes\030\001 \001(\005\"\311" + + "\001\n\020DeidentifyConfig\022S\n\031info_type_transfo" + + "rmations\030\001 \001(\0132..google.privacy.dlp.v2.I" + + "nfoTypeTransformationsH\000\022N\n\026record_trans" + + "formations\030\002 \001(\0132,.google.privacy.dlp.v2" + + ".RecordTransformationsH\000B\020\n\016transformati" + + "on\"\234\006\n\027PrimitiveTransformation\022C\n\016replac" + + "e_config\030\001 \001(\0132).google.privacy.dlp.v2.R" + + "eplaceValueConfigH\000\022<\n\rredact_config\030\002 \001" + + "(\0132#.google.privacy.dlp.v2.RedactConfigH" + + "\000\022K\n\025character_mask_config\030\003 \001(\0132*.googl" + + "e.privacy.dlp.v2.CharacterMaskConfigH\000\022Y" + + "\n\035crypto_replace_ffx_fpe_config\030\004 \001(\01320." + + "google.privacy.dlp.v2.CryptoReplaceFfxFp" + + "eConfigH\000\022V\n\033fixed_size_bucketing_config" + + "\030\005 \001(\0132/.google.privacy.dlp.v2.FixedSize" + + "BucketingConfigH\000\022B\n\020bucketing_config\030\006 " + + "\001(\0132&.google.privacy.dlp.v2.BucketingCon" + + "figH\000\022Y\n\035replace_with_info_type_config\030\007" + + " \001(\01320.google.privacy.dlp.v2.ReplaceWith" + + "InfoTypeConfigH\000\022A\n\020time_part_config\030\010 \001" + + "(\0132%.google.privacy.dlp.v2.TimePartConfi" + + "gH\000\022E\n\022crypto_hash_config\030\t \001(\0132\'.google" + + ".privacy.dlp.v2.CryptoHashConfigH\000\022C\n\021da" + + "te_shift_config\030\013 \001(\0132&.google.privacy.d" + + "lp.v2.DateShiftConfigH\000B\020\n\016transformatio" + + "n\"\334\001\n\016TimePartConfig\022G\n\017part_to_extract\030" + + "\001 \001(\0162..google.privacy.dlp.v2.TimePartCo" + + "nfig.TimePart\"\200\001\n\010TimePart\022\031\n\025TIME_PART_" + + "UNSPECIFIED\020\000\022\010\n\004YEAR\020\001\022\t\n\005MONTH\020\002\022\020\n\014DA" + + "Y_OF_MONTH\020\003\022\017\n\013DAY_OF_WEEK\020\004\022\020\n\014WEEK_OF" + + "_YEAR\020\005\022\017\n\013HOUR_OF_DAY\020\006\"H\n\020CryptoHashCo" + + "nfig\0224\n\ncrypto_key\030\001 \001(\0132 .google.privac" + + "y.dlp.v2.CryptoKey\"E\n\022ReplaceValueConfig" + + "\022/\n\tnew_value\030\001 \001(\0132\034.google.privacy.dlp" + + ".v2.Value\"\033\n\031ReplaceWithInfoTypeConfig\"\016" + + "\n\014RedactConfig\"\266\002\n\rCharsToIgnore\022\034\n\022char" + + "acters_to_skip\030\001 \001(\tH\000\022_\n\033common_charact" + + "ers_to_ignore\030\002 \001(\01628.google.privacy.dlp" + + ".v2.CharsToIgnore.CommonCharsToIgnoreH\000\"" + + "\227\001\n\023CommonCharsToIgnore\022&\n\"COMMON_CHARS_" + + "TO_IGNORE_UNSPECIFIED\020\000\022\013\n\007NUMERIC\020\001\022\024\n\020" + + "ALPHA_UPPER_CASE\020\002\022\024\n\020ALPHA_LOWER_CASE\020\003" + + "\022\017\n\013PUNCTUATION\020\004\022\016\n\nWHITESPACE\020\005B\014\n\ncha" + + "racters\"\243\001\n\023CharacterMaskConfig\022\031\n\021maski" + + "ng_character\030\001 \001(\t\022\026\n\016number_to_mask\030\002 \001" + + "(\005\022\025\n\rreverse_order\030\003 \001(\010\022B\n\024characters_" + + "to_ignore\030\004 \003(\0132$.google.privacy.dlp.v2." + + "CharsToIgnore\"\225\001\n\030FixedSizeBucketingConf" + + "ig\0221\n\013lower_bound\030\001 \001(\0132\034.google.privacy" + + ".dlp.v2.Value\0221\n\013upper_bound\030\002 \001(\0132\034.goo" + + "gle.privacy.dlp.v2.Value\022\023\n\013bucket_size\030" + + "\003 \001(\001\"\353\001\n\017BucketingConfig\022>\n\007buckets\030\001 \003" + + "(\0132-.google.privacy.dlp.v2.BucketingConf" + + "ig.Bucket\032\227\001\n\006Bucket\022)\n\003min\030\001 \001(\0132\034.goog" + + "le.privacy.dlp.v2.Value\022)\n\003max\030\002 \001(\0132\034.g" + + "oogle.privacy.dlp.v2.Value\0227\n\021replacemen" + + "t_value\030\003 \001(\0132\034.google.privacy.dlp.v2.Va", + "lue\"\364\003\n\031CryptoReplaceFfxFpeConfig\0224\n\ncry" + + "pto_key\030\001 \001(\0132 .google.privacy.dlp.v2.Cr" + + "yptoKey\022/\n\007context\030\002 \001(\0132\036.google.privac" + + "y.dlp.v2.FieldId\022c\n\017common_alphabet\030\004 \001(" + + "\0162H.google.privacy.dlp.v2.CryptoReplaceF" + + "fxFpeConfig.FfxCommonNativeAlphabetH\000\022\031\n" + + "\017custom_alphabet\030\005 \001(\tH\000\022\017\n\005radix\030\006 \001(\005H" + + "\000\022<\n\023surrogate_info_type\030\010 \001(\0132\037.google." + + "privacy.dlp.v2.InfoType\"\224\001\n\027FfxCommonNat" + + "iveAlphabet\022*\n&FFX_COMMON_NATIVE_ALPHABE" + + "T_UNSPECIFIED\020\000\022\013\n\007NUMERIC\020\001\022\017\n\013HEXADECI" + + "MAL\020\002\022\034\n\030UPPER_CASE_ALPHA_NUMERIC\020\003\022\021\n\rA" + + "LPHA_NUMERIC\020\004B\n\n\010alphabet\"\330\001\n\tCryptoKey" + + "\022>\n\ttransient\030\001 \001(\0132).google.privacy.dlp" + + ".v2.TransientCryptoKeyH\000\022>\n\tunwrapped\030\002 " + + "\001(\0132).google.privacy.dlp.v2.UnwrappedCry" + + "ptoKeyH\000\022A\n\013kms_wrapped\030\003 \001(\0132*.google.p" + + "rivacy.dlp.v2.KmsWrappedCryptoKeyH\000B\010\n\006s" + + "ource\"\"\n\022TransientCryptoKey\022\014\n\004name\030\001 \001(" + + "\t\"!\n\022UnwrappedCryptoKey\022\013\n\003key\030\001 \001(\014\"C\n\023" + + "KmsWrappedCryptoKey\022\023\n\013wrapped_key\030\001 \001(\014" + + "\022\027\n\017crypto_key_name\030\002 \001(\t\"\270\001\n\017DateShiftC" + + "onfig\022\030\n\020upper_bound_days\030\001 \001(\005\022\030\n\020lower" + + "_bound_days\030\002 \001(\005\022/\n\007context\030\003 \001(\0132\036.goo" + + "gle.privacy.dlp.v2.FieldId\0226\n\ncrypto_key" + + "\030\004 \001(\0132 .google.privacy.dlp.v2.CryptoKey" + + "H\000B\010\n\006method\"\233\002\n\027InfoTypeTransformations" + + "\022^\n\017transformations\030\001 \003(\0132E.google.priva" + + "cy.dlp.v2.InfoTypeTransformations.InfoTy" + + "peTransformation\032\237\001\n\026InfoTypeTransformat" + + "ion\0223\n\ninfo_types\030\001 \003(\0132\037.google.privacy" + + ".dlp.v2.InfoType\022P\n\030primitive_transforma" + + "tion\030\002 \001(\0132..google.privacy.dlp.v2.Primi" + + "tiveTransformation\"\273\002\n\023FieldTransformati" + + "on\022.\n\006fields\030\001 \003(\0132\036.google.privacy.dlp." + + "v2.FieldId\0229\n\tcondition\030\003 \001(\0132&.google.p" + + "rivacy.dlp.v2.RecordCondition\022R\n\030primiti" + + "ve_transformation\030\004 \001(\0132..google.privacy" + + ".dlp.v2.PrimitiveTransformationH\000\022S\n\031inf" + + "o_type_transformations\030\005 \001(\0132..google.pr" + + "ivacy.dlp.v2.InfoTypeTransformationsH\000B\020" + + "\n\016transformation\"\251\001\n\025RecordTransformatio" + + "ns\022I\n\025field_transformations\030\001 \003(\0132*.goog" + + "le.privacy.dlp.v2.FieldTransformation\022E\n" + + "\023record_suppressions\030\002 \003(\0132(.google.priv" + + "acy.dlp.v2.RecordSuppression\"N\n\021RecordSu" + + "ppression\0229\n\tcondition\030\001 \001(\0132&.google.pr" + + "ivacy.dlp.v2.RecordCondition\"\322\004\n\017RecordC" + + "ondition\022G\n\013expressions\030\003 \001(\01322.google.p" + + "rivacy.dlp.v2.RecordCondition.Expression" + + "s\032\244\001\n\tCondition\022-\n\005field\030\001 \001(\0132\036.google." + + "privacy.dlp.v2.FieldId\022;\n\010operator\030\003 \001(\016" + + "2).google.privacy.dlp.v2.RelationalOpera" + + "tor\022+\n\005value\030\004 \001(\0132\034.google.privacy.dlp." + + "v2.Value\032R\n\nConditions\022D\n\nconditions\030\001 \003" + + "(\01320.google.privacy.dlp.v2.RecordConditi" + + "on.Condition\032\372\001\n\013Expressions\022\\\n\020logical_" + + "operator\030\001 \001(\0162B.google.privacy.dlp.v2.R" + + "ecordCondition.Expressions.LogicalOperat" + + "or\022G\n\nconditions\030\003 \001(\01321.google.privacy." + + "dlp.v2.RecordCondition.ConditionsH\000\"<\n\017L" + + "ogicalOperator\022 \n\034LOGICAL_OPERATOR_UNSPE" + + "CIFIED\020\000\022\007\n\003AND\020\001B\006\n\004type\"\203\001\n\026Transforma" + + "tionOverview\022\031\n\021transformed_bytes\030\002 \001(\003\022" + + "N\n\030transformation_summaries\030\003 \003(\0132,.goog" + + "le.privacy.dlp.v2.TransformationSummary\"" + + "\237\005\n\025TransformationSummary\0222\n\tinfo_type\030\001" + + " \001(\0132\037.google.privacy.dlp.v2.InfoType\022-\n" + + "\005field\030\002 \001(\0132\036.google.privacy.dlp.v2.Fie" + + "ldId\022F\n\016transformation\030\003 \001(\0132..google.pr" + + "ivacy.dlp.v2.PrimitiveTransformation\022I\n\025" + + "field_transformations\030\005 \003(\0132*.google.pri" + + "vacy.dlp.v2.FieldTransformation\022A\n\017recor" + + "d_suppress\030\006 \001(\0132(.google.privacy.dlp.v2" + + ".RecordSuppression\022K\n\007results\030\004 \003(\0132:.go" + + "ogle.privacy.dlp.v2.TransformationSummar" + + "y.SummaryResult\022\031\n\021transformed_bytes\030\007 \001" + + "(\003\032\204\001\n\rSummaryResult\022\r\n\005count\030\001 \001(\003\022S\n\004c" + + "ode\030\002 \001(\0162E.google.privacy.dlp.v2.Transf" + + "ormationSummary.TransformationResultCode" + + "\022\017\n\007details\030\003 \001(\t\"^\n\030TransformationResul" + + "tCode\022*\n&TRANSFORMATION_RESULT_CODE_UNSP" + + "ECIFIED\020\000\022\013\n\007SUCCESS\020\001\022\t\n\005ERROR\020\002\"U\n\010Sch" + + "edule\022?\n\032recurrence_period_duration\030\001 \001(" + + "\0132\031.google.protobuf.DurationH\000B\010\n\006option" + + "\"\352\001\n\017InspectTemplate\022\014\n\004name\030\001 \001(\t\022\024\n\014di" + + "splay_name\030\002 \001(\t\022\023\n\013description\030\003 \001(\t\022/\n" + + "\013create_time\030\004 \001(\0132\032.google.protobuf.Tim" + + "estamp\022/\n\013update_time\030\005 \001(\0132\032.google.pro" + + "tobuf.Timestamp\022<\n\016inspect_config\030\006 \001(\0132" + + "$.google.privacy.dlp.v2.InspectConfig\"\363\001" + + "\n\022DeidentifyTemplate\022\014\n\004name\030\001 \001(\t\022\024\n\014di" + + "splay_name\030\002 \001(\t\022\023\n\013description\030\003 \001(\t\022/\n" + + "\013create_time\030\004 \001(\0132\032.google.protobuf.Tim" + + "estamp\022/\n\013update_time\030\005 \001(\0132\032.google.pro" + + "tobuf.Timestamp\022B\n\021deidentify_config\030\006 \001" + + "(\0132\'.google.privacy.dlp.v2.DeidentifyCon" + + "fig\"\\\n\005Error\022#\n\007details\030\001 \001(\0132\022.google.r" + + "pc.Status\022.\n\ntimestamps\030\002 \003(\0132\032.google.p" + + "rotobuf.Timestamp\"\333\004\n\nJobTrigger\022\014\n\004name" + + "\030\001 \001(\t\022\024\n\014display_name\030\002 \001(\t\022\023\n\013descript" + + "ion\030\003 \001(\t\022>\n\013inspect_job\030\004 \001(\0132\'.google." + + "privacy.dlp.v2.InspectJobConfigH\000\022;\n\010tri" + + "ggers\030\005 \003(\0132).google.privacy.dlp.v2.JobT" + + "rigger.Trigger\022,\n\006errors\030\006 \003(\0132\034.google." + + "privacy.dlp.v2.Error\022/\n\013create_time\030\007 \001(" + + "\0132\032.google.protobuf.Timestamp\022/\n\013update_" + + "time\030\010 \001(\0132\032.google.protobuf.Timestamp\0221" + + "\n\rlast_run_time\030\t \001(\0132\032.google.protobuf." + + "Timestamp\0228\n\006status\030\n \001(\0162(.google.priva" + + "cy.dlp.v2.JobTrigger.Status\032I\n\007Trigger\0223" + + "\n\010schedule\030\001 \001(\0132\037.google.privacy.dlp.v2" + + ".ScheduleH\000B\t\n\007trigger\"H\n\006Status\022\026\n\022STAT" + + "US_UNSPECIFIED\020\000\022\013\n\007HEALTHY\020\001\022\n\n\006PAUSED\020" + + "\002\022\r\n\tCANCELLED\020\003B\005\n\003job\"\356\003\n\006Action\022C\n\rsa" + + "ve_findings\030\001 \001(\0132*.google.privacy.dlp.v" + + "2.Action.SaveFindingsH\000\022@\n\007pub_sub\030\002 \001(\013" + + "2-.google.privacy.dlp.v2.Action.PublishT" + + "oPubSubH\000\022U\n\027publish_summary_to_cscc\030\003 \001" + + "(\01322.google.privacy.dlp.v2.Action.Publis" + + "hSummaryToCsccH\000\022V\n\027job_notification_ema" + + "ils\030\010 \001(\01323.google.privacy.dlp.v2.Action" + + ".JobNotificationEmailsH\000\032Q\n\014SaveFindings" + + "\022A\n\routput_config\030\001 \001(\0132*.google.privacy" + + ".dlp.v2.OutputStorageConfig\032 \n\017PublishTo" + + "PubSub\022\r\n\005topic\030\001 \001(\t\032\026\n\024PublishSummaryT" + + "oCscc\032\027\n\025JobNotificationEmailsB\010\n\006action" + + "\"\205\001\n\034CreateInspectTemplateRequest\022\016\n\006par" + + "ent\030\001 \001(\t\022@\n\020inspect_template\030\002 \001(\0132&.go" + + "ogle.privacy.dlp.v2.InspectTemplate\022\023\n\013t" + + "emplate_id\030\003 \001(\t\"\237\001\n\034UpdateInspectTempla" + + "teRequest\022\014\n\004name\030\001 \001(\t\022@\n\020inspect_templ" + + "ate\030\002 \001(\0132&.google.privacy.dlp.v2.Inspec" + + "tTemplate\022/\n\013update_mask\030\003 \001(\0132\032.google." + + "protobuf.FieldMask\")\n\031GetInspectTemplate" + + "Request\022\014\n\004name\030\001 \001(\t\"f\n\033ListInspectTemp" + + "latesRequest\022\016\n\006parent\030\001 \001(\t\022\022\n\npage_tok" + + "en\030\002 \001(\t\022\021\n\tpage_size\030\003 \001(\005\022\020\n\010order_by\030" + + "\004 \001(\t\"z\n\034ListInspectTemplatesResponse\022A\n" + + "\021inspect_templates\030\001 \003(\0132&.google.privac" + + "y.dlp.v2.InspectTemplate\022\027\n\017next_page_to" + + "ken\030\002 \001(\t\",\n\034DeleteInspectTemplateReques" + + "t\022\014\n\004name\030\001 \001(\t\"u\n\027CreateJobTriggerReque" + + "st\022\016\n\006parent\030\001 \001(\t\0226\n\013job_trigger\030\002 \001(\0132" + + "!.google.privacy.dlp.v2.JobTrigger\022\022\n\ntr" + + "igger_id\030\003 \001(\t\")\n\031ActivateJobTriggerRequ" + + "est\022\014\n\004name\030\001 \001(\t\"\220\001\n\027UpdateJobTriggerRe" + + "quest\022\014\n\004name\030\001 \001(\t\0226\n\013job_trigger\030\002 \001(\013" + + "2!.google.privacy.dlp.v2.JobTrigger\022/\n\013u" + + "pdate_mask\030\003 \001(\0132\032.google.protobuf.Field" + + "Mask\"$\n\024GetJobTriggerRequest\022\014\n\004name\030\001 \001" + + "(\t\"\276\001\n\023CreateDlpJobRequest\022\016\n\006parent\030\001 \001" + + "(\t\022>\n\013inspect_job\030\002 \001(\0132\'.google.privacy" + + ".dlp.v2.InspectJobConfigH\000\022@\n\010risk_job\030\003" + + " \001(\0132,.google.privacy.dlp.v2.RiskAnalysi" + + "sJobConfigH\000\022\016\n\006job_id\030\004 \001(\tB\005\n\003job\"q\n\026L" + + "istJobTriggersRequest\022\016\n\006parent\030\001 \001(\t\022\022\n" + + "\npage_token\030\002 \001(\t\022\021\n\tpage_size\030\003 \001(\005\022\020\n\010" + + "order_by\030\004 \001(\t\022\016\n\006filter\030\005 \001(\t\"k\n\027ListJo" + + "bTriggersResponse\0227\n\014job_triggers\030\001 \003(\0132" + + "!.google.privacy.dlp.v2.JobTrigger\022\027\n\017ne" + + "xt_page_token\030\002 \001(\t\"\'\n\027DeleteJobTriggerR" + + "equest\022\014\n\004name\030\001 \001(\t\"\335\001\n\020InspectJobConfi" + + "g\022<\n\016storage_config\030\001 \001(\0132$.google.priva" + + "cy.dlp.v2.StorageConfig\022<\n\016inspect_confi" + + "g\030\002 \001(\0132$.google.privacy.dlp.v2.InspectC" + + "onfig\022\035\n\025inspect_template_name\030\003 \001(\t\022.\n\007" + + "actions\030\004 \003(\0132\035.google.privacy.dlp.v2.Ac" + + "tion\"\336\004\n\006DlpJob\022\014\n\004name\030\001 \001(\t\022/\n\004type\030\002 " + + "\001(\0162!.google.privacy.dlp.v2.DlpJobType\0225" + + "\n\005state\030\003 \001(\0162&.google.privacy.dlp.v2.Dl" + + "pJob.JobState\022K\n\014risk_details\030\004 \001(\01323.go" + + "ogle.privacy.dlp.v2.AnalyzeDataSourceRis" + + "kDetailsH\000\022J\n\017inspect_details\030\005 \001(\0132/.go" + + "ogle.privacy.dlp.v2.InspectDataSourceDet" + + "ailsH\000\022/\n\013create_time\030\006 \001(\0132\032.google.pro" + + "tobuf.Timestamp\022.\n\nstart_time\030\007 \001(\0132\032.go" + + "ogle.protobuf.Timestamp\022,\n\010end_time\030\010 \001(" + + "\0132\032.google.protobuf.Timestamp\022\030\n\020job_tri" + + "gger_name\030\n \001(\t\022,\n\006errors\030\013 \003(\0132\034.google" + + ".privacy.dlp.v2.Error\"c\n\010JobState\022\031\n\025JOB" + + "_STATE_UNSPECIFIED\020\000\022\013\n\007PENDING\020\001\022\013\n\007RUN" + + "NING\020\002\022\010\n\004DONE\020\003\022\014\n\010CANCELED\020\004\022\n\n\006FAILED" + + "\020\005B\t\n\007details\" \n\020GetDlpJobRequest\022\014\n\004nam" + + "e\030\001 \001(\t\"\236\001\n\022ListDlpJobsRequest\022\016\n\006parent" + + "\030\004 \001(\t\022\016\n\006filter\030\001 \001(\t\022\021\n\tpage_size\030\002 \001(" + + "\005\022\022\n\npage_token\030\003 \001(\t\022/\n\004type\030\005 \001(\0162!.go" + + "ogle.privacy.dlp.v2.DlpJobType\022\020\n\010order_" + + "by\030\006 \001(\t\"[\n\023ListDlpJobsResponse\022+\n\004jobs\030" + + "\001 \003(\0132\035.google.privacy.dlp.v2.DlpJob\022\027\n\017" + + "next_page_token\030\002 \001(\t\"#\n\023CancelDlpJobReq" + + "uest\022\014\n\004name\030\001 \001(\t\"#\n\023DeleteDlpJobReques" + + "t\022\014\n\004name\030\001 \001(\t\"\216\001\n\037CreateDeidentifyTemp" + + "lateRequest\022\016\n\006parent\030\001 \001(\t\022F\n\023deidentif" + + "y_template\030\002 \001(\0132).google.privacy.dlp.v2" + + ".DeidentifyTemplate\022\023\n\013template_id\030\003 \001(\t" + + "\"\250\001\n\037UpdateDeidentifyTemplateRequest\022\014\n\004" + + "name\030\001 \001(\t\022F\n\023deidentify_template\030\002 \001(\0132" + + ").google.privacy.dlp.v2.DeidentifyTempla" + + "te\022/\n\013update_mask\030\003 \001(\0132\032.google.protobu" + + "f.FieldMask\",\n\034GetDeidentifyTemplateRequ" + + "est\022\014\n\004name\030\001 \001(\t\"i\n\036ListDeidentifyTempl" + + "atesRequest\022\016\n\006parent\030\001 \001(\t\022\022\n\npage_toke" + + "n\030\002 \001(\t\022\021\n\tpage_size\030\003 \001(\005\022\020\n\010order_by\030\004" + + " \001(\t\"\203\001\n\037ListDeidentifyTemplatesResponse" + + "\022G\n\024deidentify_templates\030\001 \003(\0132).google." + + "privacy.dlp.v2.DeidentifyTemplate\022\027\n\017nex" + + "t_page_token\030\002 \001(\t\"/\n\037DeleteDeidentifyTe" + + "mplateRequest\022\014\n\004name\030\001 \001(\t\"\364\001\n\033LargeCus" + + "tomDictionaryConfig\022<\n\013output_path\030\001 \001(\013" + + "2\'.google.privacy.dlp.v2.CloudStoragePat" + + "h\022L\n\026cloud_storage_file_set\030\002 \001(\0132*.goog" + + "le.privacy.dlp.v2.CloudStorageFileSetH\000\022" + + "?\n\017big_query_field\030\003 \001(\0132$.google.privac" + + "y.dlp.v2.BigQueryFieldH\000B\010\n\006source\"\240\001\n\024S" + + "toredInfoTypeConfig\022\024\n\014display_name\030\001 \001(" + + "\t\022\023\n\013description\030\002 \001(\t\022U\n\027large_custom_d" + + "ictionary\030\003 \001(\01322.google.privacy.dlp.v2." + + "LargeCustomDictionaryConfigH\000B\006\n\004type\"\356\001" + + "\n\025StoredInfoTypeVersion\022;\n\006config\030\001 \001(\0132" + + "+.google.privacy.dlp.v2.StoredInfoTypeCo" + + "nfig\022/\n\013create_time\030\002 \001(\0132\032.google.proto" + + "buf.Timestamp\0229\n\005state\030\003 \001(\0162*.google.pr" + + "ivacy.dlp.v2.StoredInfoTypeState\022,\n\006erro" + + "rs\030\004 \003(\0132\034.google.privacy.dlp.v2.Error\"\255" + + "\001\n\016StoredInfoType\022\014\n\004name\030\001 \001(\t\022E\n\017curre" + + "nt_version\030\002 \001(\0132,.google.privacy.dlp.v2" + + ".StoredInfoTypeVersion\022F\n\020pending_versio" + + "ns\030\003 \003(\0132,.google.privacy.dlp.v2.StoredI" + + "nfoTypeVersion\"\207\001\n\033CreateStoredInfoTypeR" + + "equest\022\016\n\006parent\030\001 \001(\t\022;\n\006config\030\002 \001(\0132+" + + ".google.privacy.dlp.v2.StoredInfoTypeCon" + + "fig\022\033\n\023stored_info_type_id\030\003 \001(\t\"\231\001\n\033Upd" + + "ateStoredInfoTypeRequest\022\014\n\004name\030\001 \001(\t\022;" + + "\n\006config\030\002 \001(\0132+.google.privacy.dlp.v2.S" + + "toredInfoTypeConfig\022/\n\013update_mask\030\003 \001(\013" + + "2\032.google.protobuf.FieldMask\"(\n\030GetStore" + + "dInfoTypeRequest\022\014\n\004name\030\001 \001(\t\"e\n\032ListSt" + + "oredInfoTypesRequest\022\016\n\006parent\030\001 \001(\t\022\022\n\n" + + "page_token\030\002 \001(\t\022\021\n\tpage_size\030\003 \001(\005\022\020\n\010o" + + "rder_by\030\004 \001(\t\"x\n\033ListStoredInfoTypesResp" + + "onse\022@\n\021stored_info_types\030\001 \003(\0132%.google" + + ".privacy.dlp.v2.StoredInfoType\022\027\n\017next_p" + + "age_token\030\002 \001(\t\"+\n\033DeleteStoredInfoTypeR" + + "equest\022\014\n\004name\030\001 \001(\t*M\n\rContentOption\022\027\n" + + "\023CONTENT_UNSPECIFIED\020\000\022\020\n\014CONTENT_TEXT\020\001" + + "\022\021\n\rCONTENT_IMAGE\020\002*\215\001\n\014MatchingType\022\035\n\031" + + "MATCHING_TYPE_UNSPECIFIED\020\000\022\034\n\030MATCHING_" + + "TYPE_FULL_MATCH\020\001\022\037\n\033MATCHING_TYPE_PARTI" + + "AL_MATCH\020\002\022\037\n\033MATCHING_TYPE_INVERSE_MATC" + + "H\020\003*P\n\023InfoTypeSupportedBy\022\031\n\025ENUM_TYPE_" + + "UNSPECIFIED\020\000\022\013\n\007INSPECT\020\001\022\021\n\rRISK_ANALY" + + "SIS\020\002*\273\001\n\022RelationalOperator\022#\n\037RELATION" + + "AL_OPERATOR_UNSPECIFIED\020\000\022\014\n\010EQUAL_TO\020\001\022" + + "\020\n\014NOT_EQUAL_TO\020\002\022\020\n\014GREATER_THAN\020\003\022\r\n\tL" + + "ESS_THAN\020\004\022\032\n\026GREATER_THAN_OR_EQUALS\020\005\022\027" + + "\n\023LESS_THAN_OR_EQUALS\020\006\022\n\n\006EXISTS\020\007*R\n\nD" + + "lpJobType\022\034\n\030DLP_JOB_TYPE_UNSPECIFIED\020\000\022" + + "\017\n\013INSPECT_JOB\020\001\022\025\n\021RISK_ANALYSIS_JOB\020\002*" + + "n\n\023StoredInfoTypeState\022&\n\"STORED_INFO_TY" + + "PE_STATE_UNSPECIFIED\020\000\022\013\n\007PENDING\020\001\022\t\n\005R" + + "EADY\020\002\022\n\n\006FAILED\020\003\022\013\n\007INVALID\020\0042\312,\n\nDlpS" + + "ervice\022\241\001\n\016InspectContent\022,.google.priva" + + "cy.dlp.v2.InspectContentRequest\032-.google" + + ".privacy.dlp.v2.InspectContentResponse\"2" + + "\202\323\344\223\002,\"\'/v2/{parent=projects/*}/content:" + + "inspect:\001*\022\225\001\n\013RedactImage\022).google.priv" + + "acy.dlp.v2.RedactImageRequest\032*.google.p" + + "rivacy.dlp.v2.RedactImageResponse\"/\202\323\344\223\002" + + ")\"$/v2/{parent=projects/*}/image:redact:" + + "\001*\022\255\001\n\021DeidentifyContent\022/.google.privac" + + "y.dlp.v2.DeidentifyContentRequest\0320.goog" + + "le.privacy.dlp.v2.DeidentifyContentRespo" + + "nse\"5\202\323\344\223\002/\"*/v2/{parent=projects/*}/con" + + "tent:deidentify:\001*\022\255\001\n\021ReidentifyContent" + + "\022/.google.privacy.dlp.v2.ReidentifyConte" + + "ntRequest\0320.google.privacy.dlp.v2.Reiden" + + "tifyContentResponse\"5\202\323\344\223\002/\"*/v2/{parent" + + "=projects/*}/content:reidentify:\001*\022\201\001\n\rL" + + "istInfoTypes\022+.google.privacy.dlp.v2.Lis" + + "tInfoTypesRequest\032,.google.privacy.dlp.v" + + "2.ListInfoTypesResponse\"\025\202\323\344\223\002\017\022\r/v2/inf" + + "oTypes\022\335\001\n\025CreateInspectTemplate\0223.googl" + + "e.privacy.dlp.v2.CreateInspectTemplateRe" + + "quest\032&.google.privacy.dlp.v2.InspectTem" + + "plate\"g\202\323\344\223\002a\"-/v2/{parent=organizations" + + "/*}/inspectTemplates:\001*Z-\"(/v2/{parent=p" + + "rojects/*}/inspectTemplates:\001*\022\335\001\n\025Updat" + + "eInspectTemplate\0223.google.privacy.dlp.v2" + + ".UpdateInspectTemplateRequest\032&.google.p" + + "rivacy.dlp.v2.InspectTemplate\"g\202\323\344\223\002a2-/" + + "v2/{name=organizations/*/inspectTemplate" + + "s/*}:\001*Z-2(/v2/{name=projects/*/inspectT" + + "emplates/*}:\001*\022\321\001\n\022GetInspectTemplate\0220." + + "google.privacy.dlp.v2.GetInspectTemplate" + + "Request\032&.google.privacy.dlp.v2.InspectT" + + "emplate\"a\202\323\344\223\002[\022-/v2/{name=organizations" + + "/*/inspectTemplates/*}Z*\022(/v2/{name=proj" + + "ects/*/inspectTemplates/*}\022\342\001\n\024ListInspe" + + "ctTemplates\0222.google.privacy.dlp.v2.List" + + "InspectTemplatesRequest\0323.google.privacy" + + ".dlp.v2.ListInspectTemplatesResponse\"a\202\323" + + "\344\223\002[\022-/v2/{parent=organizations/*}/inspe" + + "ctTemplatesZ*\022(/v2/{parent=projects/*}/i" + + "nspectTemplates\022\307\001\n\025DeleteInspectTemplat" + + "e\0223.google.privacy.dlp.v2.DeleteInspectT" + + "emplateRequest\032\026.google.protobuf.Empty\"a" + + "\202\323\344\223\002[*-/v2/{name=organizations/*/inspec" + + "tTemplates/*}Z**(/v2/{name=projects/*/in" + + "spectTemplates/*}\022\354\001\n\030CreateDeidentifyTe" + + "mplate\0226.google.privacy.dlp.v2.CreateDei" + + "dentifyTemplateRequest\032).google.privacy." + + "dlp.v2.DeidentifyTemplate\"m\202\323\344\223\002g\"0/v2/{" + + "parent=organizations/*}/deidentifyTempla" + + "tes:\001*Z0\"+/v2/{parent=projects/*}/deiden" + + "tifyTemplates:\001*\022\354\001\n\030UpdateDeidentifyTem" + + "plate\0226.google.privacy.dlp.v2.UpdateDeid" + + "entifyTemplateRequest\032).google.privacy.d" + + "lp.v2.DeidentifyTemplate\"m\202\323\344\223\002g20/v2/{n" + + "ame=organizations/*/deidentifyTemplates/" + + "*}:\001*Z02+/v2/{name=projects/*/deidentify" + + "Templates/*}:\001*\022\340\001\n\025GetDeidentifyTemplat" + + "e\0223.google.privacy.dlp.v2.GetDeidentifyT" + + "emplateRequest\032).google.privacy.dlp.v2.D" + + "eidentifyTemplate\"g\202\323\344\223\002a\0220/v2/{name=org" + + "anizations/*/deidentifyTemplates/*}Z-\022+/" + + "v2/{name=projects/*/deidentifyTemplates/" + + "*}\022\361\001\n\027ListDeidentifyTemplates\0225.google." + + "privacy.dlp.v2.ListDeidentifyTemplatesRe" + + "quest\0326.google.privacy.dlp.v2.ListDeiden" + + "tifyTemplatesResponse\"g\202\323\344\223\002a\0220/v2/{pare" + + "nt=organizations/*}/deidentifyTemplatesZ" + + "-\022+/v2/{parent=projects/*}/deidentifyTem" + + "plates\022\323\001\n\030DeleteDeidentifyTemplate\0226.go" + + "ogle.privacy.dlp.v2.DeleteDeidentifyTemp" + + "lateRequest\032\026.google.protobuf.Empty\"g\202\323\344" + + "\223\002a*0/v2/{name=organizations/*/deidentif" + + "yTemplates/*}Z-*+/v2/{name=projects/*/de" + + "identifyTemplates/*}\022\225\001\n\020CreateJobTrigge" + + "r\022..google.privacy.dlp.v2.CreateJobTrigg" + + "erRequest\032!.google.privacy.dlp.v2.JobTri" + + "gger\".\202\323\344\223\002(\"#/v2/{parent=projects/*}/jo" + + "bTriggers:\001*\022\225\001\n\020UpdateJobTrigger\022..goog" + + "le.privacy.dlp.v2.UpdateJobTriggerReques" + + "t\032!.google.privacy.dlp.v2.JobTrigger\".\202\323" + + "\344\223\002(2#/v2/{name=projects/*/jobTriggers/*" + + "}:\001*\022\214\001\n\rGetJobTrigger\022+.google.privacy." + + "dlp.v2.GetJobTriggerRequest\032!.google.pri" + + "vacy.dlp.v2.JobTrigger\"+\202\323\344\223\002%\022#/v2/{nam" + + "e=projects/*/jobTriggers/*}\022\235\001\n\017ListJobT" + + "riggers\022-.google.privacy.dlp.v2.ListJobT" + + "riggersRequest\032..google.privacy.dlp.v2.L" + + "istJobTriggersResponse\"+\202\323\344\223\002%\022#/v2/{par" + + "ent=projects/*}/jobTriggers\022\207\001\n\020DeleteJo" + + "bTrigger\022..google.privacy.dlp.v2.DeleteJ" + + "obTriggerRequest\032\026.google.protobuf.Empty" + + "\"+\202\323\344\223\002%*#/v2/{name=projects/*/jobTrigge" + + "rs/*}\022\236\001\n\022ActivateJobTrigger\0220.google.pr" + + "ivacy.dlp.v2.ActivateJobTriggerRequest\032\035" + + ".google.privacy.dlp.v2.DlpJob\"7\202\323\344\223\0021\",/" + + "v2/{name=projects/*/jobTriggers/*}:activ" + + "ate:\001*\022\205\001\n\014CreateDlpJob\022*.google.privacy" + + ".dlp.v2.CreateDlpJobRequest\032\035.google.pri" + + "vacy.dlp.v2.DlpJob\"*\202\323\344\223\002$\"\037/v2/{parent=" + + "projects/*}/dlpJobs:\001*\022\215\001\n\013ListDlpJobs\022)" + + ".google.privacy.dlp.v2.ListDlpJobsReques" + + "t\032*.google.privacy.dlp.v2.ListDlpJobsRes" + + "ponse\"\'\202\323\344\223\002!\022\037/v2/{parent=projects/*}/d" + + "lpJobs\022|\n\tGetDlpJob\022\'.google.privacy.dlp" + + ".v2.GetDlpJobRequest\032\035.google.privacy.dl" + + "p.v2.DlpJob\"\'\202\323\344\223\002!\022\037/v2/{name=projects/" + + "*/dlpJobs/*}\022{\n\014DeleteDlpJob\022*.google.pr" + + "ivacy.dlp.v2.DeleteDlpJobRequest\032\026.googl" + + "e.protobuf.Empty\"\'\202\323\344\223\002!*\037/v2/{name=proj" + + "ects/*/dlpJobs/*}\022\205\001\n\014CancelDlpJob\022*.goo" + + "gle.privacy.dlp.v2.CancelDlpJobRequest\032\026" + + ".google.protobuf.Empty\"1\202\323\344\223\002+\"&/v2/{nam" + + "e=projects/*/dlpJobs/*}:cancel:\001*\022\330\001\n\024Cr" + + "eateStoredInfoType\0222.google.privacy.dlp." + + "v2.CreateStoredInfoTypeRequest\032%.google." + + "privacy.dlp.v2.StoredInfoType\"e\202\323\344\223\002_\",/" + + "v2/{parent=organizations/*}/storedInfoTy" + + "pes:\001*Z,\"\'/v2/{parent=projects/*}/stored" + + "InfoTypes:\001*\022\330\001\n\024UpdateStoredInfoType\0222." + + "google.privacy.dlp.v2.UpdateStoredInfoTy" + + "peRequest\032%.google.privacy.dlp.v2.Stored" + + "InfoType\"e\202\323\344\223\002_2,/v2/{name=organization" + + "s/*/storedInfoTypes/*}:\001*Z,2\'/v2/{name=p" + + "rojects/*/storedInfoTypes/*}:\001*\022\314\001\n\021GetS" + + "toredInfoType\022/.google.privacy.dlp.v2.Ge" + + "tStoredInfoTypeRequest\032%.google.privacy." + + "dlp.v2.StoredInfoType\"_\202\323\344\223\002Y\022,/v2/{name" + + "=organizations/*/storedInfoTypes/*}Z)\022\'/" + + "v2/{name=projects/*/storedInfoTypes/*}\022\335" + + "\001\n\023ListStoredInfoTypes\0221.google.privacy." + + "dlp.v2.ListStoredInfoTypesRequest\0322.goog" + + "le.privacy.dlp.v2.ListStoredInfoTypesRes" + + "ponse\"_\202\323\344\223\002Y\022,/v2/{parent=organizations" + + "/*}/storedInfoTypesZ)\022\'/v2/{parent=proje" + + "cts/*}/storedInfoTypes\022\303\001\n\024DeleteStoredI", + "nfoType\0222.google.privacy.dlp.v2.DeleteSt" + + "oredInfoTypeRequest\032\026.google.protobuf.Em" + + "pty\"_\202\323\344\223\002Y*,/v2/{name=organizations/*/s" + + "toredInfoTypes/*}Z)*\'/v2/{name=projects/" + + "*/storedInfoTypes/*}B\215\001\n\031com.google.priv" + + "acy.dlp.v2B\010DlpProtoP\001Z8google.golang.or" + + "g/genproto/googleapis/privacy/dlp/v2;dlp" + + "\252\002\023Google.Cloud.Dlp.V2\312\002\023Google\\Cloud\\Dl" + + "p\\V2b\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -1768,7 +1785,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_InfoTypeDescription_descriptor, new java.lang.String[] { - "Name", "DisplayName", "SupportedBy", + "Name", "DisplayName", "SupportedBy", "Description", }); internal_static_google_privacy_dlp_v2_ListInfoTypesRequest_descriptor = getDescriptor().getMessageTypes().get(31); @@ -2469,7 +2486,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_Action_descriptor, new java.lang.String[] { - "SaveFindings", "PubSub", "PublishSummaryToCscc", "Action", + "SaveFindings", "PubSub", "PublishSummaryToCscc", "JobNotificationEmails", "Action", }); internal_static_google_privacy_dlp_v2_Action_SaveFindings_descriptor = internal_static_google_privacy_dlp_v2_Action_descriptor.getNestedTypes().get(0); @@ -2493,6 +2510,12 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_Action_PublishSummaryToCscc_descriptor, new java.lang.String[] {}); + internal_static_google_privacy_dlp_v2_Action_JobNotificationEmails_descriptor = + internal_static_google_privacy_dlp_v2_Action_descriptor.getNestedTypes().get(3); + internal_static_google_privacy_dlp_v2_Action_JobNotificationEmails_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_privacy_dlp_v2_Action_JobNotificationEmails_descriptor, + new java.lang.String[] {}); internal_static_google_privacy_dlp_v2_CreateInspectTemplateRequest_descriptor = getDescriptor().getMessageTypes().get(72); internal_static_google_privacy_dlp_v2_CreateInspectTemplateRequest_fieldAccessorTable = @@ -2549,8 +2572,16 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( new java.lang.String[] { "Parent", "JobTrigger", "TriggerId", }); - internal_static_google_privacy_dlp_v2_UpdateJobTriggerRequest_descriptor = + internal_static_google_privacy_dlp_v2_ActivateJobTriggerRequest_descriptor = getDescriptor().getMessageTypes().get(79); + internal_static_google_privacy_dlp_v2_ActivateJobTriggerRequest_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_privacy_dlp_v2_ActivateJobTriggerRequest_descriptor, + new java.lang.String[] { + "Name", + }); + internal_static_google_privacy_dlp_v2_UpdateJobTriggerRequest_descriptor = + getDescriptor().getMessageTypes().get(80); internal_static_google_privacy_dlp_v2_UpdateJobTriggerRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_UpdateJobTriggerRequest_descriptor, @@ -2558,7 +2589,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Name", "JobTrigger", "UpdateMask", }); internal_static_google_privacy_dlp_v2_GetJobTriggerRequest_descriptor = - getDescriptor().getMessageTypes().get(80); + getDescriptor().getMessageTypes().get(81); internal_static_google_privacy_dlp_v2_GetJobTriggerRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_GetJobTriggerRequest_descriptor, @@ -2566,7 +2597,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Name", }); internal_static_google_privacy_dlp_v2_CreateDlpJobRequest_descriptor = - getDescriptor().getMessageTypes().get(81); + getDescriptor().getMessageTypes().get(82); internal_static_google_privacy_dlp_v2_CreateDlpJobRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_CreateDlpJobRequest_descriptor, @@ -2574,15 +2605,15 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Parent", "InspectJob", "RiskJob", "JobId", "Job", }); internal_static_google_privacy_dlp_v2_ListJobTriggersRequest_descriptor = - getDescriptor().getMessageTypes().get(82); + getDescriptor().getMessageTypes().get(83); internal_static_google_privacy_dlp_v2_ListJobTriggersRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_ListJobTriggersRequest_descriptor, new java.lang.String[] { - "Parent", "PageToken", "PageSize", "OrderBy", + "Parent", "PageToken", "PageSize", "OrderBy", "Filter", }); internal_static_google_privacy_dlp_v2_ListJobTriggersResponse_descriptor = - getDescriptor().getMessageTypes().get(83); + getDescriptor().getMessageTypes().get(84); internal_static_google_privacy_dlp_v2_ListJobTriggersResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_ListJobTriggersResponse_descriptor, @@ -2590,7 +2621,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "JobTriggers", "NextPageToken", }); internal_static_google_privacy_dlp_v2_DeleteJobTriggerRequest_descriptor = - getDescriptor().getMessageTypes().get(84); + getDescriptor().getMessageTypes().get(85); internal_static_google_privacy_dlp_v2_DeleteJobTriggerRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_DeleteJobTriggerRequest_descriptor, @@ -2598,7 +2629,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Name", }); internal_static_google_privacy_dlp_v2_InspectJobConfig_descriptor = - getDescriptor().getMessageTypes().get(85); + getDescriptor().getMessageTypes().get(86); internal_static_google_privacy_dlp_v2_InspectJobConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_InspectJobConfig_descriptor, @@ -2606,7 +2637,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "StorageConfig", "InspectConfig", "InspectTemplateName", "Actions", }); internal_static_google_privacy_dlp_v2_DlpJob_descriptor = - getDescriptor().getMessageTypes().get(86); + getDescriptor().getMessageTypes().get(87); internal_static_google_privacy_dlp_v2_DlpJob_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_DlpJob_descriptor, @@ -2624,7 +2655,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Details", }); internal_static_google_privacy_dlp_v2_GetDlpJobRequest_descriptor = - getDescriptor().getMessageTypes().get(87); + getDescriptor().getMessageTypes().get(88); internal_static_google_privacy_dlp_v2_GetDlpJobRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_GetDlpJobRequest_descriptor, @@ -2632,7 +2663,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Name", }); internal_static_google_privacy_dlp_v2_ListDlpJobsRequest_descriptor = - getDescriptor().getMessageTypes().get(88); + getDescriptor().getMessageTypes().get(89); internal_static_google_privacy_dlp_v2_ListDlpJobsRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_ListDlpJobsRequest_descriptor, @@ -2640,7 +2671,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Parent", "Filter", "PageSize", "PageToken", "Type", "OrderBy", }); internal_static_google_privacy_dlp_v2_ListDlpJobsResponse_descriptor = - getDescriptor().getMessageTypes().get(89); + getDescriptor().getMessageTypes().get(90); internal_static_google_privacy_dlp_v2_ListDlpJobsResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_ListDlpJobsResponse_descriptor, @@ -2648,7 +2679,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Jobs", "NextPageToken", }); internal_static_google_privacy_dlp_v2_CancelDlpJobRequest_descriptor = - getDescriptor().getMessageTypes().get(90); + getDescriptor().getMessageTypes().get(91); internal_static_google_privacy_dlp_v2_CancelDlpJobRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_CancelDlpJobRequest_descriptor, @@ -2656,7 +2687,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Name", }); internal_static_google_privacy_dlp_v2_DeleteDlpJobRequest_descriptor = - getDescriptor().getMessageTypes().get(91); + getDescriptor().getMessageTypes().get(92); internal_static_google_privacy_dlp_v2_DeleteDlpJobRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_DeleteDlpJobRequest_descriptor, @@ -2664,7 +2695,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Name", }); internal_static_google_privacy_dlp_v2_CreateDeidentifyTemplateRequest_descriptor = - getDescriptor().getMessageTypes().get(92); + getDescriptor().getMessageTypes().get(93); internal_static_google_privacy_dlp_v2_CreateDeidentifyTemplateRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_CreateDeidentifyTemplateRequest_descriptor, @@ -2672,7 +2703,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Parent", "DeidentifyTemplate", "TemplateId", }); internal_static_google_privacy_dlp_v2_UpdateDeidentifyTemplateRequest_descriptor = - getDescriptor().getMessageTypes().get(93); + getDescriptor().getMessageTypes().get(94); internal_static_google_privacy_dlp_v2_UpdateDeidentifyTemplateRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_UpdateDeidentifyTemplateRequest_descriptor, @@ -2680,7 +2711,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Name", "DeidentifyTemplate", "UpdateMask", }); internal_static_google_privacy_dlp_v2_GetDeidentifyTemplateRequest_descriptor = - getDescriptor().getMessageTypes().get(94); + getDescriptor().getMessageTypes().get(95); internal_static_google_privacy_dlp_v2_GetDeidentifyTemplateRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_GetDeidentifyTemplateRequest_descriptor, @@ -2688,7 +2719,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Name", }); internal_static_google_privacy_dlp_v2_ListDeidentifyTemplatesRequest_descriptor = - getDescriptor().getMessageTypes().get(95); + getDescriptor().getMessageTypes().get(96); internal_static_google_privacy_dlp_v2_ListDeidentifyTemplatesRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_ListDeidentifyTemplatesRequest_descriptor, @@ -2696,7 +2727,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Parent", "PageToken", "PageSize", "OrderBy", }); internal_static_google_privacy_dlp_v2_ListDeidentifyTemplatesResponse_descriptor = - getDescriptor().getMessageTypes().get(96); + getDescriptor().getMessageTypes().get(97); internal_static_google_privacy_dlp_v2_ListDeidentifyTemplatesResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_ListDeidentifyTemplatesResponse_descriptor, @@ -2704,7 +2735,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "DeidentifyTemplates", "NextPageToken", }); internal_static_google_privacy_dlp_v2_DeleteDeidentifyTemplateRequest_descriptor = - getDescriptor().getMessageTypes().get(97); + getDescriptor().getMessageTypes().get(98); internal_static_google_privacy_dlp_v2_DeleteDeidentifyTemplateRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_DeleteDeidentifyTemplateRequest_descriptor, @@ -2712,7 +2743,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Name", }); internal_static_google_privacy_dlp_v2_LargeCustomDictionaryConfig_descriptor = - getDescriptor().getMessageTypes().get(98); + getDescriptor().getMessageTypes().get(99); internal_static_google_privacy_dlp_v2_LargeCustomDictionaryConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_LargeCustomDictionaryConfig_descriptor, @@ -2720,7 +2751,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "OutputPath", "CloudStorageFileSet", "BigQueryField", "Source", }); internal_static_google_privacy_dlp_v2_StoredInfoTypeConfig_descriptor = - getDescriptor().getMessageTypes().get(99); + getDescriptor().getMessageTypes().get(100); internal_static_google_privacy_dlp_v2_StoredInfoTypeConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_StoredInfoTypeConfig_descriptor, @@ -2728,7 +2759,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "DisplayName", "Description", "LargeCustomDictionary", "Type", }); internal_static_google_privacy_dlp_v2_StoredInfoTypeVersion_descriptor = - getDescriptor().getMessageTypes().get(100); + getDescriptor().getMessageTypes().get(101); internal_static_google_privacy_dlp_v2_StoredInfoTypeVersion_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_StoredInfoTypeVersion_descriptor, @@ -2736,7 +2767,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Config", "CreateTime", "State", "Errors", }); internal_static_google_privacy_dlp_v2_StoredInfoType_descriptor = - getDescriptor().getMessageTypes().get(101); + getDescriptor().getMessageTypes().get(102); internal_static_google_privacy_dlp_v2_StoredInfoType_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_StoredInfoType_descriptor, @@ -2744,7 +2775,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Name", "CurrentVersion", "PendingVersions", }); internal_static_google_privacy_dlp_v2_CreateStoredInfoTypeRequest_descriptor = - getDescriptor().getMessageTypes().get(102); + getDescriptor().getMessageTypes().get(103); internal_static_google_privacy_dlp_v2_CreateStoredInfoTypeRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_CreateStoredInfoTypeRequest_descriptor, @@ -2752,7 +2783,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Parent", "Config", "StoredInfoTypeId", }); internal_static_google_privacy_dlp_v2_UpdateStoredInfoTypeRequest_descriptor = - getDescriptor().getMessageTypes().get(103); + getDescriptor().getMessageTypes().get(104); internal_static_google_privacy_dlp_v2_UpdateStoredInfoTypeRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_UpdateStoredInfoTypeRequest_descriptor, @@ -2760,7 +2791,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Name", "Config", "UpdateMask", }); internal_static_google_privacy_dlp_v2_GetStoredInfoTypeRequest_descriptor = - getDescriptor().getMessageTypes().get(104); + getDescriptor().getMessageTypes().get(105); internal_static_google_privacy_dlp_v2_GetStoredInfoTypeRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_GetStoredInfoTypeRequest_descriptor, @@ -2768,7 +2799,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Name", }); internal_static_google_privacy_dlp_v2_ListStoredInfoTypesRequest_descriptor = - getDescriptor().getMessageTypes().get(105); + getDescriptor().getMessageTypes().get(106); internal_static_google_privacy_dlp_v2_ListStoredInfoTypesRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_ListStoredInfoTypesRequest_descriptor, @@ -2776,7 +2807,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Parent", "PageToken", "PageSize", "OrderBy", }); internal_static_google_privacy_dlp_v2_ListStoredInfoTypesResponse_descriptor = - getDescriptor().getMessageTypes().get(106); + getDescriptor().getMessageTypes().get(107); internal_static_google_privacy_dlp_v2_ListStoredInfoTypesResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_ListStoredInfoTypesResponse_descriptor, @@ -2784,7 +2815,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "StoredInfoTypes", "NextPageToken", }); internal_static_google_privacy_dlp_v2_DeleteStoredInfoTypeRequest_descriptor = - getDescriptor().getMessageTypes().get(107); + getDescriptor().getMessageTypes().get(108); internal_static_google_privacy_dlp_v2_DeleteStoredInfoTypeRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_DeleteStoredInfoTypeRequest_descriptor, diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/DlpStorage.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/DlpStorage.java index 1011ed469b5b..e7201a6a3d5e 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/DlpStorage.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/DlpStorage.java @@ -150,7 +150,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "ions.proto\032\037google/protobuf/timestamp.pr" + "oto\"\030\n\010InfoType\022\014\n\004name\030\001 \001(\t\"K\n\nStoredT" + "ype\022\014\n\004name\030\001 \001(\t\022/\n\013create_time\030\002 \001(\0132\032" - + ".google.protobuf.Timestamp\"\261\013\n\016CustomInf" + + ".google.protobuf.Timestamp\"\310\013\n\016CustomInf" + "oType\0222\n\tinfo_type\030\001 \001(\0132\037.google.privac" + "y.dlp.v2.InfoType\0225\n\nlikelihood\030\006 \001(\0162!." + "google.privacy.dlp.v2.Likelihood\022F\n\ndict" @@ -169,98 +169,99 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "tomInfoType.Dictionary.WordListH\000\022E\n\022clo" + "ud_storage_path\030\003 \001(\0132\'.google.privacy.d" + "lp.v2.CloudStoragePathH\000\032\031\n\010WordList\022\r\n\005" - + "words\030\001 \003(\tB\010\n\006source\032\030\n\005Regex\022\017\n\007patter" - + "n\030\001 \001(\t\032\017\n\rSurrogateType\032\276\004\n\rDetectionRu" - + "le\022W\n\014hotword_rule\030\001 \001(\0132?.google.privac" - + "y.dlp.v2.CustomInfoType.DetectionRule.Ho" - + "twordRuleH\000\0328\n\tProximity\022\025\n\rwindow_befor" - + "e\030\001 \001(\005\022\024\n\014window_after\030\002 \001(\005\032\202\001\n\024Likeli" - + "hoodAdjustment\022=\n\020fixed_likelihood\030\001 \001(\016" - + "2!.google.privacy.dlp.v2.LikelihoodH\000\022\035\n" - + "\023relative_likelihood\030\002 \001(\005H\000B\014\n\nadjustme" - + "nt\032\214\002\n\013HotwordRule\022B\n\rhotword_regex\030\001 \001(" - + "\0132+.google.privacy.dlp.v2.CustomInfoType" - + ".Regex\022P\n\tproximity\030\002 \001(\0132=.google.priva" - + "cy.dlp.v2.CustomInfoType.DetectionRule.P" - + "roximity\022g\n\025likelihood_adjustment\030\003 \001(\0132" - + "H.google.privacy.dlp.v2.CustomInfoType.D" - + "etectionRule.LikelihoodAdjustmentB\006\n\004typ" - + "e\"K\n\rExclusionType\022\036\n\032EXCLUSION_TYPE_UNS" - + "PECIFIED\020\000\022\032\n\026EXCLUSION_TYPE_EXCLUDE\020\001B\006" - + "\n\004type\"\027\n\007FieldId\022\014\n\004name\030\001 \001(\t\"7\n\013Parti" - + "tionId\022\022\n\nproject_id\030\002 \001(\t\022\024\n\014namespace_" - + "id\030\004 \001(\t\"\036\n\016KindExpression\022\014\n\004name\030\001 \001(\t" - + "\"\201\001\n\020DatastoreOptions\0228\n\014partition_id\030\001 " - + "\001(\0132\".google.privacy.dlp.v2.PartitionId\022" - + "3\n\004kind\030\002 \001(\0132%.google.privacy.dlp.v2.Ki" - + "ndExpression\"]\n\030CloudStorageRegexFileSet" - + "\022\023\n\013bucket_name\030\001 \001(\t\022\025\n\rinclude_regex\030\002" - + " \003(\t\022\025\n\rexclude_regex\030\003 \003(\t\"\354\003\n\023CloudSto" - + "rageOptions\022D\n\010file_set\030\001 \001(\01322.google.p" - + "rivacy.dlp.v2.CloudStorageOptions.FileSe" - + "t\022\034\n\024bytes_limit_per_file\030\004 \001(\003\022$\n\034bytes" - + "_limit_per_file_percent\030\010 \001(\005\0223\n\nfile_ty" - + "pes\030\005 \003(\0162\037.google.privacy.dlp.v2.FileTy" - + "pe\022N\n\rsample_method\030\006 \001(\01627.google.priva" - + "cy.dlp.v2.CloudStorageOptions.SampleMeth" - + "od\022\033\n\023files_limit_percent\030\007 \001(\005\032_\n\007FileS" - + "et\022\013\n\003url\030\001 \001(\t\022G\n\016regex_file_set\030\002 \001(\0132" - + "/.google.privacy.dlp.v2.CloudStorageRege" - + "xFileSet\"H\n\014SampleMethod\022\035\n\031SAMPLE_METHO" - + "D_UNSPECIFIED\020\000\022\007\n\003TOP\020\001\022\020\n\014RANDOM_START" - + "\020\002\"\"\n\023CloudStorageFileSet\022\013\n\003url\030\001 \001(\t\" " - + "\n\020CloudStoragePath\022\014\n\004path\030\001 \001(\t\"\213\003\n\017Big" - + "QueryOptions\022=\n\017table_reference\030\001 \001(\0132$." - + "google.privacy.dlp.v2.BigQueryTable\022:\n\022i" - + "dentifying_fields\030\002 \003(\0132\036.google.privacy" - + ".dlp.v2.FieldId\022\022\n\nrows_limit\030\003 \001(\003\022\032\n\022r" - + "ows_limit_percent\030\006 \001(\005\022J\n\rsample_method" - + "\030\004 \001(\01623.google.privacy.dlp.v2.BigQueryO" - + "ptions.SampleMethod\0227\n\017excluded_fields\030\005" - + " \003(\0132\036.google.privacy.dlp.v2.FieldId\"H\n\014" - + "SampleMethod\022\035\n\031SAMPLE_METHOD_UNSPECIFIE" - + "D\020\000\022\007\n\003TOP\020\001\022\020\n\014RANDOM_START\020\002\"\232\004\n\rStora" - + "geConfig\022D\n\021datastore_options\030\002 \001(\0132\'.go" - + "ogle.privacy.dlp.v2.DatastoreOptionsH\000\022K" - + "\n\025cloud_storage_options\030\003 \001(\0132*.google.p" - + "rivacy.dlp.v2.CloudStorageOptionsH\000\022C\n\021b" - + "ig_query_options\030\004 \001(\0132&.google.privacy." - + "dlp.v2.BigQueryOptionsH\000\022L\n\017timespan_con" - + "fig\030\006 \001(\01323.google.privacy.dlp.v2.Storag" - + "eConfig.TimespanConfig\032\332\001\n\016TimespanConfi" - + "g\022.\n\nstart_time\030\001 \001(\0132\032.google.protobuf." - + "Timestamp\022,\n\010end_time\030\002 \001(\0132\032.google.pro" - + "tobuf.Timestamp\0227\n\017timestamp_field\030\003 \001(\013" - + "2\036.google.privacy.dlp.v2.FieldId\0221\n)enab" - + "le_auto_population_of_timespan_config\030\004 " - + "\001(\010B\006\n\004type\"`\n\013BigQueryKey\022=\n\017table_refe" - + "rence\030\001 \001(\0132$.google.privacy.dlp.v2.BigQ" - + "ueryTable\022\022\n\nrow_number\030\002 \001(\003\">\n\014Datasto" - + "reKey\022.\n\nentity_key\030\001 \001(\0132\032.google.priva" - + "cy.dlp.v2.Key\"\273\001\n\003Key\0228\n\014partition_id\030\001 " - + "\001(\0132\".google.privacy.dlp.v2.PartitionId\022" - + "4\n\004path\030\002 \003(\0132&.google.privacy.dlp.v2.Ke" - + "y.PathElement\032D\n\013PathElement\022\014\n\004kind\030\001 \001" - + "(\t\022\014\n\002id\030\002 \001(\003H\000\022\016\n\004name\030\003 \001(\tH\000B\t\n\007id_t" - + "ype\"\216\001\n\tRecordKey\022<\n\rdatastore_key\030\002 \001(\013" - + "2#.google.privacy.dlp.v2.DatastoreKeyH\000\022" - + ";\n\rbig_query_key\030\003 \001(\0132\".google.privacy." - + "dlp.v2.BigQueryKeyH\000B\006\n\004type\"I\n\rBigQuery" - + "Table\022\022\n\nproject_id\030\001 \001(\t\022\022\n\ndataset_id\030" - + "\002 \001(\t\022\020\n\010table_id\030\003 \001(\t\"s\n\rBigQueryField" - + "\0223\n\005table\030\001 \001(\0132$.google.privacy.dlp.v2." - + "BigQueryTable\022-\n\005field\030\002 \001(\0132\036.google.pr" - + "ivacy.dlp.v2.FieldId\"9\n\010EntityId\022-\n\005fiel" - + "d\030\001 \001(\0132\036.google.privacy.dlp.v2.FieldId*" - + "t\n\nLikelihood\022\032\n\026LIKELIHOOD_UNSPECIFIED\020" - + "\000\022\021\n\rVERY_UNLIKELY\020\001\022\014\n\010UNLIKELY\020\002\022\014\n\010PO" - + "SSIBLE\020\003\022\n\n\006LIKELY\020\004\022\017\n\013VERY_LIKELY\020\005*E\n" - + "\010FileType\022\031\n\025FILE_TYPE_UNSPECIFIED\020\000\022\017\n\013" - + "BINARY_FILE\020\001\022\r\n\tTEXT_FILE\020\002B\217\001\n\031com.goo" - + "gle.privacy.dlp.v2B\nDlpStorageP\001Z8google" - + ".golang.org/genproto/googleapis/privacy/" - + "dlp/v2;dlp\252\002\023Google.Cloud.Dlp.V2\312\002\023Googl" - + "e\\Cloud\\Dlp\\V2b\006proto3" + + "words\030\001 \003(\tB\010\n\006source\032/\n\005Regex\022\017\n\007patter" + + "n\030\001 \001(\t\022\025\n\rgroup_indexes\030\002 \003(\005\032\017\n\rSurrog" + + "ateType\032\276\004\n\rDetectionRule\022W\n\014hotword_rul" + + "e\030\001 \001(\0132?.google.privacy.dlp.v2.CustomIn" + + "foType.DetectionRule.HotwordRuleH\000\0328\n\tPr" + + "oximity\022\025\n\rwindow_before\030\001 \001(\005\022\024\n\014window" + + "_after\030\002 \001(\005\032\202\001\n\024LikelihoodAdjustment\022=\n" + + "\020fixed_likelihood\030\001 \001(\0162!.google.privacy" + + ".dlp.v2.LikelihoodH\000\022\035\n\023relative_likelih" + + "ood\030\002 \001(\005H\000B\014\n\nadjustment\032\214\002\n\013HotwordRul" + + "e\022B\n\rhotword_regex\030\001 \001(\0132+.google.privac" + + "y.dlp.v2.CustomInfoType.Regex\022P\n\tproximi" + + "ty\030\002 \001(\0132=.google.privacy.dlp.v2.CustomI" + + "nfoType.DetectionRule.Proximity\022g\n\025likel" + + "ihood_adjustment\030\003 \001(\0132H.google.privacy." + + "dlp.v2.CustomInfoType.DetectionRule.Like" + + "lihoodAdjustmentB\006\n\004type\"K\n\rExclusionTyp" + + "e\022\036\n\032EXCLUSION_TYPE_UNSPECIFIED\020\000\022\032\n\026EXC" + + "LUSION_TYPE_EXCLUDE\020\001B\006\n\004type\"\027\n\007FieldId" + + "\022\014\n\004name\030\001 \001(\t\"7\n\013PartitionId\022\022\n\nproject" + + "_id\030\002 \001(\t\022\024\n\014namespace_id\030\004 \001(\t\"\036\n\016KindE" + + "xpression\022\014\n\004name\030\001 \001(\t\"\201\001\n\020DatastoreOpt" + + "ions\0228\n\014partition_id\030\001 \001(\0132\".google.priv" + + "acy.dlp.v2.PartitionId\0223\n\004kind\030\002 \001(\0132%.g" + + "oogle.privacy.dlp.v2.KindExpression\"]\n\030C" + + "loudStorageRegexFileSet\022\023\n\013bucket_name\030\001" + + " \001(\t\022\025\n\rinclude_regex\030\002 \003(\t\022\025\n\rexclude_r" + + "egex\030\003 \003(\t\"\354\003\n\023CloudStorageOptions\022D\n\010fi" + + "le_set\030\001 \001(\01322.google.privacy.dlp.v2.Clo" + + "udStorageOptions.FileSet\022\034\n\024bytes_limit_" + + "per_file\030\004 \001(\003\022$\n\034bytes_limit_per_file_p" + + "ercent\030\010 \001(\005\0223\n\nfile_types\030\005 \003(\0162\037.googl" + + "e.privacy.dlp.v2.FileType\022N\n\rsample_meth" + + "od\030\006 \001(\01627.google.privacy.dlp.v2.CloudSt" + + "orageOptions.SampleMethod\022\033\n\023files_limit" + + "_percent\030\007 \001(\005\032_\n\007FileSet\022\013\n\003url\030\001 \001(\t\022G" + + "\n\016regex_file_set\030\002 \001(\0132/.google.privacy." + + "dlp.v2.CloudStorageRegexFileSet\"H\n\014Sampl" + + "eMethod\022\035\n\031SAMPLE_METHOD_UNSPECIFIED\020\000\022\007" + + "\n\003TOP\020\001\022\020\n\014RANDOM_START\020\002\"\"\n\023CloudStorag" + + "eFileSet\022\013\n\003url\030\001 \001(\t\" \n\020CloudStoragePat" + + "h\022\014\n\004path\030\001 \001(\t\"\213\003\n\017BigQueryOptions\022=\n\017t" + + "able_reference\030\001 \001(\0132$.google.privacy.dl" + + "p.v2.BigQueryTable\022:\n\022identifying_fields" + + "\030\002 \003(\0132\036.google.privacy.dlp.v2.FieldId\022\022" + + "\n\nrows_limit\030\003 \001(\003\022\032\n\022rows_limit_percent" + + "\030\006 \001(\005\022J\n\rsample_method\030\004 \001(\01623.google.p" + + "rivacy.dlp.v2.BigQueryOptions.SampleMeth" + + "od\0227\n\017excluded_fields\030\005 \003(\0132\036.google.pri" + + "vacy.dlp.v2.FieldId\"H\n\014SampleMethod\022\035\n\031S" + + "AMPLE_METHOD_UNSPECIFIED\020\000\022\007\n\003TOP\020\001\022\020\n\014R" + + "ANDOM_START\020\002\"\232\004\n\rStorageConfig\022D\n\021datas" + + "tore_options\030\002 \001(\0132\'.google.privacy.dlp." + + "v2.DatastoreOptionsH\000\022K\n\025cloud_storage_o" + + "ptions\030\003 \001(\0132*.google.privacy.dlp.v2.Clo" + + "udStorageOptionsH\000\022C\n\021big_query_options\030" + + "\004 \001(\0132&.google.privacy.dlp.v2.BigQueryOp" + + "tionsH\000\022L\n\017timespan_config\030\006 \001(\01323.googl" + + "e.privacy.dlp.v2.StorageConfig.TimespanC" + + "onfig\032\332\001\n\016TimespanConfig\022.\n\nstart_time\030\001" + + " \001(\0132\032.google.protobuf.Timestamp\022,\n\010end_" + + "time\030\002 \001(\0132\032.google.protobuf.Timestamp\0227" + + "\n\017timestamp_field\030\003 \001(\0132\036.google.privacy" + + ".dlp.v2.FieldId\0221\n)enable_auto_populatio" + + "n_of_timespan_config\030\004 \001(\010B\006\n\004type\"`\n\013Bi" + + "gQueryKey\022=\n\017table_reference\030\001 \001(\0132$.goo" + + "gle.privacy.dlp.v2.BigQueryTable\022\022\n\nrow_" + + "number\030\002 \001(\003\">\n\014DatastoreKey\022.\n\nentity_k" + + "ey\030\001 \001(\0132\032.google.privacy.dlp.v2.Key\"\273\001\n" + + "\003Key\0228\n\014partition_id\030\001 \001(\0132\".google.priv" + + "acy.dlp.v2.PartitionId\0224\n\004path\030\002 \003(\0132&.g" + + "oogle.privacy.dlp.v2.Key.PathElement\032D\n\013" + + "PathElement\022\014\n\004kind\030\001 \001(\t\022\014\n\002id\030\002 \001(\003H\000\022" + + "\016\n\004name\030\003 \001(\tH\000B\t\n\007id_type\"\241\001\n\tRecordKey" + + "\022<\n\rdatastore_key\030\002 \001(\0132#.google.privacy" + + ".dlp.v2.DatastoreKeyH\000\022;\n\rbig_query_key\030" + + "\003 \001(\0132\".google.privacy.dlp.v2.BigQueryKe" + + "yH\000\022\021\n\tid_values\030\005 \003(\tB\006\n\004type\"I\n\rBigQue" + + "ryTable\022\022\n\nproject_id\030\001 \001(\t\022\022\n\ndataset_i" + + "d\030\002 \001(\t\022\020\n\010table_id\030\003 \001(\t\"s\n\rBigQueryFie" + + "ld\0223\n\005table\030\001 \001(\0132$.google.privacy.dlp.v" + + "2.BigQueryTable\022-\n\005field\030\002 \001(\0132\036.google." + + "privacy.dlp.v2.FieldId\"9\n\010EntityId\022-\n\005fi" + + "eld\030\001 \001(\0132\036.google.privacy.dlp.v2.FieldI" + + "d*t\n\nLikelihood\022\032\n\026LIKELIHOOD_UNSPECIFIE" + + "D\020\000\022\021\n\rVERY_UNLIKELY\020\001\022\014\n\010UNLIKELY\020\002\022\014\n\010" + + "POSSIBLE\020\003\022\n\n\006LIKELY\020\004\022\017\n\013VERY_LIKELY\020\005*" + + "P\n\010FileType\022\031\n\025FILE_TYPE_UNSPECIFIED\020\000\022\017" + + "\n\013BINARY_FILE\020\001\022\r\n\tTEXT_FILE\020\002\022\t\n\005IMAGE\020" + + "\003B\217\001\n\031com.google.privacy.dlp.v2B\nDlpStor" + + "ageP\001Z8google.golang.org/genproto/google" + + "apis/privacy/dlp/v2;dlp\252\002\023Google.Cloud.D" + + "lp.V2\312\002\023Google\\Cloud\\Dlp\\V2b\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -333,7 +334,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_CustomInfoType_Regex_descriptor, new java.lang.String[] { - "Pattern", + "Pattern", "GroupIndexes", }); internal_static_google_privacy_dlp_v2_CustomInfoType_SurrogateType_descriptor = internal_static_google_privacy_dlp_v2_CustomInfoType_descriptor.getNestedTypes().get(2); @@ -529,7 +530,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_privacy_dlp_v2_RecordKey_descriptor, new java.lang.String[] { - "DatastoreKey", "BigQueryKey", "Type", + "DatastoreKey", "BigQueryKey", "IdValues", "Type", }); internal_static_google_privacy_dlp_v2_BigQueryTable_descriptor = getDescriptor().getMessageTypes().get(17); diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/FileType.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/FileType.java index b08c46df6097..0b9c6c515f42 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/FileType.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/FileType.java @@ -48,6 +48,18 @@ public enum FileType implements com.google.protobuf.ProtocolMessageEnum { * TEXT_FILE = 2; */ TEXT_FILE(2), + /** + * + * + *
+   * Included file extensions:
+   *   bmp, gif, jpg, jpeg, jpe, png.
+   * bytes_limit_per_file has no effect on image files.
+   * 
+ * + * IMAGE = 3; + */ + IMAGE(3), UNRECOGNIZED(-1), ; @@ -86,6 +98,18 @@ public enum FileType implements com.google.protobuf.ProtocolMessageEnum { * TEXT_FILE = 2; */ public static final int TEXT_FILE_VALUE = 2; + /** + * + * + *
+   * Included file extensions:
+   *   bmp, gif, jpg, jpeg, jpe, png.
+   * bytes_limit_per_file has no effect on image files.
+   * 
+ * + * IMAGE = 3; + */ + public static final int IMAGE_VALUE = 3; public final int getNumber() { if (this == UNRECOGNIZED) { @@ -109,6 +133,8 @@ public static FileType forNumber(int value) { return BINARY_FILE; case 2: return TEXT_FILE; + case 3: + return IMAGE; default: return null; } diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/InfoTypeDescription.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/InfoTypeDescription.java index 1ad4f5068e58..8434a19c1eeb 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/InfoTypeDescription.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/InfoTypeDescription.java @@ -26,6 +26,7 @@ private InfoTypeDescription() { name_ = ""; displayName_ = ""; supportedBy_ = java.util.Collections.emptyList(); + description_ = ""; } @java.lang.Override @@ -91,6 +92,13 @@ private InfoTypeDescription( input.popLimit(oldLimit); break; } + case 34: + { + java.lang.String s = input.readStringRequireUtf8(); + + description_ = s; + break; + } default: { if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { @@ -296,6 +304,51 @@ public int getSupportedByValue(int index) { private int supportedByMemoizedSerializedSize; + public static final int DESCRIPTION_FIELD_NUMBER = 4; + private volatile java.lang.Object description_; + /** + * + * + *
+   * Description of the infotype. Translated when language is provided in the
+   * request.
+   * 
+ * + * string description = 4; + */ + public java.lang.String getDescription() { + java.lang.Object ref = description_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + description_ = s; + return s; + } + } + /** + * + * + *
+   * Description of the infotype. Translated when language is provided in the
+   * request.
+   * 
+ * + * string description = 4; + */ + public com.google.protobuf.ByteString getDescriptionBytes() { + java.lang.Object ref = description_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + description_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -324,6 +377,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io for (int i = 0; i < supportedBy_.size(); i++) { output.writeEnumNoTag(supportedBy_.get(i)); } + if (!getDescriptionBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 4, description_); + } unknownFields.writeTo(output); } @@ -351,6 +407,9 @@ public int getSerializedSize() { } supportedByMemoizedSerializedSize = dataSize; } + if (!getDescriptionBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, description_); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -371,6 +430,7 @@ public boolean equals(final java.lang.Object obj) { result = result && getName().equals(other.getName()); result = result && getDisplayName().equals(other.getDisplayName()); result = result && supportedBy_.equals(other.supportedBy_); + result = result && getDescription().equals(other.getDescription()); result = result && unknownFields.equals(other.unknownFields); return result; } @@ -390,6 +450,8 @@ public int hashCode() { hash = (37 * hash) + SUPPORTED_BY_FIELD_NUMBER; hash = (53 * hash) + supportedBy_.hashCode(); } + hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER; + hash = (53 * hash) + getDescription().hashCode(); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -541,6 +603,8 @@ public Builder clear() { supportedBy_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000004); + description_ = ""; + return this; } @@ -577,6 +641,7 @@ public com.google.privacy.dlp.v2.InfoTypeDescription buildPartial() { bitField0_ = (bitField0_ & ~0x00000004); } result.supportedBy_ = supportedBy_; + result.description_ = description_; result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -645,6 +710,10 @@ public Builder mergeFrom(com.google.privacy.dlp.v2.InfoTypeDescription other) { } onChanged(); } + if (!other.getDescription().isEmpty()) { + description_ = other.description_; + onChanged(); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -1051,6 +1120,105 @@ public Builder addAllSupportedByValue(java.lang.Iterable valu return this; } + private java.lang.Object description_ = ""; + /** + * + * + *
+     * Description of the infotype. Translated when language is provided in the
+     * request.
+     * 
+ * + * string description = 4; + */ + public java.lang.String getDescription() { + java.lang.Object ref = description_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + description_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Description of the infotype. Translated when language is provided in the
+     * request.
+     * 
+ * + * string description = 4; + */ + public com.google.protobuf.ByteString getDescriptionBytes() { + java.lang.Object ref = description_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + description_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Description of the infotype. Translated when language is provided in the
+     * request.
+     * 
+ * + * string description = 4; + */ + public Builder setDescription(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + description_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Description of the infotype. Translated when language is provided in the
+     * request.
+     * 
+ * + * string description = 4; + */ + public Builder clearDescription() { + + description_ = getDefaultInstance().getDescription(); + onChanged(); + return this; + } + /** + * + * + *
+     * Description of the infotype. Translated when language is provided in the
+     * request.
+     * 
+ * + * string description = 4; + */ + public Builder setDescriptionBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + description_ = value; + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFieldsProto3(unknownFields); diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/InfoTypeDescriptionOrBuilder.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/InfoTypeDescriptionOrBuilder.java index b9c3bdb48fc8..30b31bc8d0fa 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/InfoTypeDescriptionOrBuilder.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/InfoTypeDescriptionOrBuilder.java @@ -100,4 +100,27 @@ public interface InfoTypeDescriptionOrBuilder * repeated .google.privacy.dlp.v2.InfoTypeSupportedBy supported_by = 3; */ int getSupportedByValue(int index); + + /** + * + * + *
+   * Description of the infotype. Translated when language is provided in the
+   * request.
+   * 
+ * + * string description = 4; + */ + java.lang.String getDescription(); + /** + * + * + *
+   * Description of the infotype. Translated when language is provided in the
+   * request.
+   * 
+ * + * string description = 4; + */ + com.google.protobuf.ByteString getDescriptionBytes(); } diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/InspectConfig.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/InspectConfig.java index 5bc8fe2ba9fa..f44dc437dcb0 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/InspectConfig.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/InspectConfig.java @@ -208,7 +208,7 @@ public interface FindingLimitsOrBuilder *
      * Max number of findings that will be returned for each item scanned.
      * When set within `InspectDataSourceRequest`,
-     * the maximum returned is 1000 regardless if this is set higher.
+     * the maximum returned is 2000 regardless if this is set higher.
      * When set within `InspectContentRequest`, this field is ignored.
      * 
* @@ -221,7 +221,7 @@ public interface FindingLimitsOrBuilder * *
      * Max number of findings that will be returned per request/job.
-     * When set within `InspectContentRequest`, the maximum returned is 1000
+     * When set within `InspectContentRequest`, the maximum returned is 2000
      * regardless if this is set higher.
      * 
* @@ -1304,7 +1304,7 @@ public com.google.protobuf.Parser getParserForType() { *
      * Max number of findings that will be returned for each item scanned.
      * When set within `InspectDataSourceRequest`,
-     * the maximum returned is 1000 regardless if this is set higher.
+     * the maximum returned is 2000 regardless if this is set higher.
      * When set within `InspectContentRequest`, this field is ignored.
      * 
* @@ -1321,7 +1321,7 @@ public int getMaxFindingsPerItem() { * *
      * Max number of findings that will be returned per request/job.
-     * When set within `InspectContentRequest`, the maximum returned is 1000
+     * When set within `InspectContentRequest`, the maximum returned is 2000
      * regardless if this is set higher.
      * 
* @@ -1811,7 +1811,7 @@ public Builder mergeFrom( *
        * Max number of findings that will be returned for each item scanned.
        * When set within `InspectDataSourceRequest`,
-       * the maximum returned is 1000 regardless if this is set higher.
+       * the maximum returned is 2000 regardless if this is set higher.
        * When set within `InspectContentRequest`, this field is ignored.
        * 
* @@ -1826,7 +1826,7 @@ public int getMaxFindingsPerItem() { *
        * Max number of findings that will be returned for each item scanned.
        * When set within `InspectDataSourceRequest`,
-       * the maximum returned is 1000 regardless if this is set higher.
+       * the maximum returned is 2000 regardless if this is set higher.
        * When set within `InspectContentRequest`, this field is ignored.
        * 
* @@ -1844,7 +1844,7 @@ public Builder setMaxFindingsPerItem(int value) { *
        * Max number of findings that will be returned for each item scanned.
        * When set within `InspectDataSourceRequest`,
-       * the maximum returned is 1000 regardless if this is set higher.
+       * the maximum returned is 2000 regardless if this is set higher.
        * When set within `InspectContentRequest`, this field is ignored.
        * 
* @@ -1863,7 +1863,7 @@ public Builder clearMaxFindingsPerItem() { * *
        * Max number of findings that will be returned per request/job.
-       * When set within `InspectContentRequest`, the maximum returned is 1000
+       * When set within `InspectContentRequest`, the maximum returned is 2000
        * regardless if this is set higher.
        * 
* @@ -1877,7 +1877,7 @@ public int getMaxFindingsPerRequest() { * *
        * Max number of findings that will be returned per request/job.
-       * When set within `InspectContentRequest`, the maximum returned is 1000
+       * When set within `InspectContentRequest`, the maximum returned is 2000
        * regardless if this is set higher.
        * 
* @@ -1894,7 +1894,7 @@ public Builder setMaxFindingsPerRequest(int value) { * *
        * Max number of findings that will be returned per request/job.
-       * When set within `InspectContentRequest`, the maximum returned is 1000
+       * When set within `InspectContentRequest`, the maximum returned is 2000
        * regardless if this is set higher.
        * 
* diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ListJobTriggersRequest.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ListJobTriggersRequest.java index 078859057dee..09c9058f91ab 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ListJobTriggersRequest.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ListJobTriggersRequest.java @@ -27,6 +27,7 @@ private ListJobTriggersRequest() { pageToken_ = ""; pageSize_ = 0; orderBy_ = ""; + filter_ = ""; } @java.lang.Override @@ -79,6 +80,13 @@ private ListJobTriggersRequest( orderBy_ = s; break; } + case 42: + { + java.lang.String s = input.readStringRequireUtf8(); + + filter_ = s; + break; + } default: { if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { @@ -232,6 +240,7 @@ public int getPageSize() { * Supported fields are: * - `create_time`: corresponds to time the JobTrigger was created. * - `update_time`: corresponds to time the JobTrigger was last updated. + * - `last_run_time`: corresponds to the last time the JobTrigger ran. * - `name`: corresponds to JobTrigger's name. * - `display_name`: corresponds to JobTrigger's display name. * - `status`: corresponds to JobTrigger's status. @@ -262,6 +271,7 @@ public java.lang.String getOrderBy() { * Supported fields are: * - `create_time`: corresponds to time the JobTrigger was created. * - `update_time`: corresponds to time the JobTrigger was last updated. + * - `last_run_time`: corresponds to the last time the JobTrigger ran. * - `name`: corresponds to JobTrigger's name. * - `display_name`: corresponds to JobTrigger's display name. * - `status`: corresponds to JobTrigger's status. @@ -281,6 +291,85 @@ public com.google.protobuf.ByteString getOrderByBytes() { } } + public static final int FILTER_FIELD_NUMBER = 5; + private volatile java.lang.Object filter_; + /** + * + * + *
+   * Optional. Allows filtering.
+   * Supported syntax:
+   * * Filter expressions are made up of one or more restrictions.
+   * * Restrictions can be combined by `AND` or `OR` logical operators. A
+   * sequence of restrictions implicitly uses `AND`.
+   * * A restriction has the form of `<field> <operator> <value>`.
+   * * Supported fields/values for inspect jobs:
+   *     - `status` - HEALTHY|PAUSED|CANCELLED
+   *     - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY
+   *     - 'last_run_time` - RFC 3339 formatted timestamp, surrounded by
+   *     quotation marks. Nanoseconds are ignored.
+   *     - 'error_count' - Number of errors that have occurred while running.
+   * * The operator must be `=` or `!=` for status and inspected_storage.
+   * Examples:
+   * * inspected_storage = cloud_storage AND status = HEALTHY
+   * * inspected_storage = cloud_storage OR inspected_storage = bigquery
+   * * inspected_storage = cloud_storage AND (state = PAUSED OR state = HEALTHY)
+   * * last_run_time > \"2017-12-12T00:00:00+00:00\"
+   * The length of this field should be no more than 500 characters.
+   * 
+ * + * string filter = 5; + */ + public java.lang.String getFilter() { + java.lang.Object ref = filter_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + filter_ = s; + return s; + } + } + /** + * + * + *
+   * Optional. Allows filtering.
+   * Supported syntax:
+   * * Filter expressions are made up of one or more restrictions.
+   * * Restrictions can be combined by `AND` or `OR` logical operators. A
+   * sequence of restrictions implicitly uses `AND`.
+   * * A restriction has the form of `<field> <operator> <value>`.
+   * * Supported fields/values for inspect jobs:
+   *     - `status` - HEALTHY|PAUSED|CANCELLED
+   *     - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY
+   *     - 'last_run_time` - RFC 3339 formatted timestamp, surrounded by
+   *     quotation marks. Nanoseconds are ignored.
+   *     - 'error_count' - Number of errors that have occurred while running.
+   * * The operator must be `=` or `!=` for status and inspected_storage.
+   * Examples:
+   * * inspected_storage = cloud_storage AND status = HEALTHY
+   * * inspected_storage = cloud_storage OR inspected_storage = bigquery
+   * * inspected_storage = cloud_storage AND (state = PAUSED OR state = HEALTHY)
+   * * last_run_time > \"2017-12-12T00:00:00+00:00\"
+   * The length of this field should be no more than 500 characters.
+   * 
+ * + * string filter = 5; + */ + public com.google.protobuf.ByteString getFilterBytes() { + java.lang.Object ref = filter_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + filter_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -307,6 +396,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (!getOrderByBytes().isEmpty()) { com.google.protobuf.GeneratedMessageV3.writeString(output, 4, orderBy_); } + if (!getFilterBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, filter_); + } unknownFields.writeTo(output); } @@ -328,6 +420,9 @@ public int getSerializedSize() { if (!getOrderByBytes().isEmpty()) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, orderBy_); } + if (!getFilterBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, filter_); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -349,6 +444,7 @@ public boolean equals(final java.lang.Object obj) { result = result && getPageToken().equals(other.getPageToken()); result = result && (getPageSize() == other.getPageSize()); result = result && getOrderBy().equals(other.getOrderBy()); + result = result && getFilter().equals(other.getFilter()); result = result && unknownFields.equals(other.unknownFields); return result; } @@ -368,6 +464,8 @@ public int hashCode() { hash = (53 * hash) + getPageSize(); hash = (37 * hash) + ORDER_BY_FIELD_NUMBER; hash = (53 * hash) + getOrderBy().hashCode(); + hash = (37 * hash) + FILTER_FIELD_NUMBER; + hash = (53 * hash) + getFilter().hashCode(); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -521,6 +619,8 @@ public Builder clear() { orderBy_ = ""; + filter_ = ""; + return this; } @@ -552,6 +652,7 @@ public com.google.privacy.dlp.v2.ListJobTriggersRequest buildPartial() { result.pageToken_ = pageToken_; result.pageSize_ = pageSize_; result.orderBy_ = orderBy_; + result.filter_ = filter_; onBuilt(); return result; } @@ -617,6 +718,10 @@ public Builder mergeFrom(com.google.privacy.dlp.v2.ListJobTriggersRequest other) orderBy_ = other.orderBy_; onChanged(); } + if (!other.getFilter().isEmpty()) { + filter_ = other.filter_; + onChanged(); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -901,6 +1006,7 @@ public Builder clearPageSize() { * Supported fields are: * - `create_time`: corresponds to time the JobTrigger was created. * - `update_time`: corresponds to time the JobTrigger was last updated. + * - `last_run_time`: corresponds to the last time the JobTrigger ran. * - `name`: corresponds to JobTrigger's name. * - `display_name`: corresponds to JobTrigger's display name. * - `status`: corresponds to JobTrigger's status. @@ -931,6 +1037,7 @@ public java.lang.String getOrderBy() { * Supported fields are: * - `create_time`: corresponds to time the JobTrigger was created. * - `update_time`: corresponds to time the JobTrigger was last updated. + * - `last_run_time`: corresponds to the last time the JobTrigger ran. * - `name`: corresponds to JobTrigger's name. * - `display_name`: corresponds to JobTrigger's display name. * - `status`: corresponds to JobTrigger's status. @@ -961,6 +1068,7 @@ public com.google.protobuf.ByteString getOrderByBytes() { * Supported fields are: * - `create_time`: corresponds to time the JobTrigger was created. * - `update_time`: corresponds to time the JobTrigger was last updated. + * - `last_run_time`: corresponds to the last time the JobTrigger ran. * - `name`: corresponds to JobTrigger's name. * - `display_name`: corresponds to JobTrigger's display name. * - `status`: corresponds to JobTrigger's status. @@ -989,6 +1097,7 @@ public Builder setOrderBy(java.lang.String value) { * Supported fields are: * - `create_time`: corresponds to time the JobTrigger was created. * - `update_time`: corresponds to time the JobTrigger was last updated. + * - `last_run_time`: corresponds to the last time the JobTrigger ran. * - `name`: corresponds to JobTrigger's name. * - `display_name`: corresponds to JobTrigger's display name. * - `status`: corresponds to JobTrigger's status. @@ -1014,6 +1123,7 @@ public Builder clearOrderBy() { * Supported fields are: * - `create_time`: corresponds to time the JobTrigger was created. * - `update_time`: corresponds to time the JobTrigger was last updated. + * - `last_run_time`: corresponds to the last time the JobTrigger ran. * - `name`: corresponds to JobTrigger's name. * - `display_name`: corresponds to JobTrigger's display name. * - `status`: corresponds to JobTrigger's status. @@ -1032,6 +1142,190 @@ public Builder setOrderByBytes(com.google.protobuf.ByteString value) { return this; } + private java.lang.Object filter_ = ""; + /** + * + * + *
+     * Optional. Allows filtering.
+     * Supported syntax:
+     * * Filter expressions are made up of one or more restrictions.
+     * * Restrictions can be combined by `AND` or `OR` logical operators. A
+     * sequence of restrictions implicitly uses `AND`.
+     * * A restriction has the form of `<field> <operator> <value>`.
+     * * Supported fields/values for inspect jobs:
+     *     - `status` - HEALTHY|PAUSED|CANCELLED
+     *     - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY
+     *     - 'last_run_time` - RFC 3339 formatted timestamp, surrounded by
+     *     quotation marks. Nanoseconds are ignored.
+     *     - 'error_count' - Number of errors that have occurred while running.
+     * * The operator must be `=` or `!=` for status and inspected_storage.
+     * Examples:
+     * * inspected_storage = cloud_storage AND status = HEALTHY
+     * * inspected_storage = cloud_storage OR inspected_storage = bigquery
+     * * inspected_storage = cloud_storage AND (state = PAUSED OR state = HEALTHY)
+     * * last_run_time > \"2017-12-12T00:00:00+00:00\"
+     * The length of this field should be no more than 500 characters.
+     * 
+ * + * string filter = 5; + */ + public java.lang.String getFilter() { + java.lang.Object ref = filter_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + filter_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Optional. Allows filtering.
+     * Supported syntax:
+     * * Filter expressions are made up of one or more restrictions.
+     * * Restrictions can be combined by `AND` or `OR` logical operators. A
+     * sequence of restrictions implicitly uses `AND`.
+     * * A restriction has the form of `<field> <operator> <value>`.
+     * * Supported fields/values for inspect jobs:
+     *     - `status` - HEALTHY|PAUSED|CANCELLED
+     *     - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY
+     *     - 'last_run_time` - RFC 3339 formatted timestamp, surrounded by
+     *     quotation marks. Nanoseconds are ignored.
+     *     - 'error_count' - Number of errors that have occurred while running.
+     * * The operator must be `=` or `!=` for status and inspected_storage.
+     * Examples:
+     * * inspected_storage = cloud_storage AND status = HEALTHY
+     * * inspected_storage = cloud_storage OR inspected_storage = bigquery
+     * * inspected_storage = cloud_storage AND (state = PAUSED OR state = HEALTHY)
+     * * last_run_time > \"2017-12-12T00:00:00+00:00\"
+     * The length of this field should be no more than 500 characters.
+     * 
+ * + * string filter = 5; + */ + public com.google.protobuf.ByteString getFilterBytes() { + java.lang.Object ref = filter_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + filter_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Optional. Allows filtering.
+     * Supported syntax:
+     * * Filter expressions are made up of one or more restrictions.
+     * * Restrictions can be combined by `AND` or `OR` logical operators. A
+     * sequence of restrictions implicitly uses `AND`.
+     * * A restriction has the form of `<field> <operator> <value>`.
+     * * Supported fields/values for inspect jobs:
+     *     - `status` - HEALTHY|PAUSED|CANCELLED
+     *     - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY
+     *     - 'last_run_time` - RFC 3339 formatted timestamp, surrounded by
+     *     quotation marks. Nanoseconds are ignored.
+     *     - 'error_count' - Number of errors that have occurred while running.
+     * * The operator must be `=` or `!=` for status and inspected_storage.
+     * Examples:
+     * * inspected_storage = cloud_storage AND status = HEALTHY
+     * * inspected_storage = cloud_storage OR inspected_storage = bigquery
+     * * inspected_storage = cloud_storage AND (state = PAUSED OR state = HEALTHY)
+     * * last_run_time > \"2017-12-12T00:00:00+00:00\"
+     * The length of this field should be no more than 500 characters.
+     * 
+ * + * string filter = 5; + */ + public Builder setFilter(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + filter_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Allows filtering.
+     * Supported syntax:
+     * * Filter expressions are made up of one or more restrictions.
+     * * Restrictions can be combined by `AND` or `OR` logical operators. A
+     * sequence of restrictions implicitly uses `AND`.
+     * * A restriction has the form of `<field> <operator> <value>`.
+     * * Supported fields/values for inspect jobs:
+     *     - `status` - HEALTHY|PAUSED|CANCELLED
+     *     - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY
+     *     - 'last_run_time` - RFC 3339 formatted timestamp, surrounded by
+     *     quotation marks. Nanoseconds are ignored.
+     *     - 'error_count' - Number of errors that have occurred while running.
+     * * The operator must be `=` or `!=` for status and inspected_storage.
+     * Examples:
+     * * inspected_storage = cloud_storage AND status = HEALTHY
+     * * inspected_storage = cloud_storage OR inspected_storage = bigquery
+     * * inspected_storage = cloud_storage AND (state = PAUSED OR state = HEALTHY)
+     * * last_run_time > \"2017-12-12T00:00:00+00:00\"
+     * The length of this field should be no more than 500 characters.
+     * 
+ * + * string filter = 5; + */ + public Builder clearFilter() { + + filter_ = getDefaultInstance().getFilter(); + onChanged(); + return this; + } + /** + * + * + *
+     * Optional. Allows filtering.
+     * Supported syntax:
+     * * Filter expressions are made up of one or more restrictions.
+     * * Restrictions can be combined by `AND` or `OR` logical operators. A
+     * sequence of restrictions implicitly uses `AND`.
+     * * A restriction has the form of `<field> <operator> <value>`.
+     * * Supported fields/values for inspect jobs:
+     *     - `status` - HEALTHY|PAUSED|CANCELLED
+     *     - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY
+     *     - 'last_run_time` - RFC 3339 formatted timestamp, surrounded by
+     *     quotation marks. Nanoseconds are ignored.
+     *     - 'error_count' - Number of errors that have occurred while running.
+     * * The operator must be `=` or `!=` for status and inspected_storage.
+     * Examples:
+     * * inspected_storage = cloud_storage AND status = HEALTHY
+     * * inspected_storage = cloud_storage OR inspected_storage = bigquery
+     * * inspected_storage = cloud_storage AND (state = PAUSED OR state = HEALTHY)
+     * * last_run_time > \"2017-12-12T00:00:00+00:00\"
+     * The length of this field should be no more than 500 characters.
+     * 
+ * + * string filter = 5; + */ + public Builder setFilterBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + filter_ = value; + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFieldsProto3(unknownFields); diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ListJobTriggersRequestOrBuilder.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ListJobTriggersRequestOrBuilder.java index ee34766ab921..ae21fd429580 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ListJobTriggersRequestOrBuilder.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/ListJobTriggersRequestOrBuilder.java @@ -77,6 +77,7 @@ public interface ListJobTriggersRequestOrBuilder * Supported fields are: * - `create_time`: corresponds to time the JobTrigger was created. * - `update_time`: corresponds to time the JobTrigger was last updated. + * - `last_run_time`: corresponds to the last time the JobTrigger ran. * - `name`: corresponds to JobTrigger's name. * - `display_name`: corresponds to JobTrigger's display name. * - `status`: corresponds to JobTrigger's status. @@ -97,6 +98,7 @@ public interface ListJobTriggersRequestOrBuilder * Supported fields are: * - `create_time`: corresponds to time the JobTrigger was created. * - `update_time`: corresponds to time the JobTrigger was last updated. + * - `last_run_time`: corresponds to the last time the JobTrigger ran. * - `name`: corresponds to JobTrigger's name. * - `display_name`: corresponds to JobTrigger's display name. * - `status`: corresponds to JobTrigger's status. @@ -105,4 +107,61 @@ public interface ListJobTriggersRequestOrBuilder * string order_by = 4; */ com.google.protobuf.ByteString getOrderByBytes(); + + /** + * + * + *
+   * Optional. Allows filtering.
+   * Supported syntax:
+   * * Filter expressions are made up of one or more restrictions.
+   * * Restrictions can be combined by `AND` or `OR` logical operators. A
+   * sequence of restrictions implicitly uses `AND`.
+   * * A restriction has the form of `<field> <operator> <value>`.
+   * * Supported fields/values for inspect jobs:
+   *     - `status` - HEALTHY|PAUSED|CANCELLED
+   *     - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY
+   *     - 'last_run_time` - RFC 3339 formatted timestamp, surrounded by
+   *     quotation marks. Nanoseconds are ignored.
+   *     - 'error_count' - Number of errors that have occurred while running.
+   * * The operator must be `=` or `!=` for status and inspected_storage.
+   * Examples:
+   * * inspected_storage = cloud_storage AND status = HEALTHY
+   * * inspected_storage = cloud_storage OR inspected_storage = bigquery
+   * * inspected_storage = cloud_storage AND (state = PAUSED OR state = HEALTHY)
+   * * last_run_time > \"2017-12-12T00:00:00+00:00\"
+   * The length of this field should be no more than 500 characters.
+   * 
+ * + * string filter = 5; + */ + java.lang.String getFilter(); + /** + * + * + *
+   * Optional. Allows filtering.
+   * Supported syntax:
+   * * Filter expressions are made up of one or more restrictions.
+   * * Restrictions can be combined by `AND` or `OR` logical operators. A
+   * sequence of restrictions implicitly uses `AND`.
+   * * A restriction has the form of `<field> <operator> <value>`.
+   * * Supported fields/values for inspect jobs:
+   *     - `status` - HEALTHY|PAUSED|CANCELLED
+   *     - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY
+   *     - 'last_run_time` - RFC 3339 formatted timestamp, surrounded by
+   *     quotation marks. Nanoseconds are ignored.
+   *     - 'error_count' - Number of errors that have occurred while running.
+   * * The operator must be `=` or `!=` for status and inspected_storage.
+   * Examples:
+   * * inspected_storage = cloud_storage AND status = HEALTHY
+   * * inspected_storage = cloud_storage OR inspected_storage = bigquery
+   * * inspected_storage = cloud_storage AND (state = PAUSED OR state = HEALTHY)
+   * * last_run_time > \"2017-12-12T00:00:00+00:00\"
+   * The length of this field should be no more than 500 characters.
+   * 
+ * + * string filter = 5; + */ + com.google.protobuf.ByteString getFilterBytes(); } diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RecordCondition.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RecordCondition.java index a9489630f5fb..983b008bb96b 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RecordCondition.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RecordCondition.java @@ -194,6 +194,8 @@ public interface ConditionOrBuilder *
    * The field type of `value` and `field` do not need to match to be
    * considered equal, but not all comparisons are possible.
+   * EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,
+   * but all other comparisons are invalid with incompatible types.
    * A `value` of type:
    * - `string` can be compared against all other types
    * - `boolean` can only be compared against other booleans
@@ -629,6 +631,8 @@ protected Builder newBuilderForType(
      * 
      * The field type of `value` and `field` do not need to match to be
      * considered equal, but not all comparisons are possible.
+     * EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types,
+     * but all other comparisons are invalid with incompatible types.
      * A `value` of type:
      * - `string` can be compared against all other types
      * - `boolean` can only be compared against other booleans
diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RecordKey.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RecordKey.java
index be06f5831510..438c109f24c4 100644
--- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RecordKey.java
+++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RecordKey.java
@@ -22,7 +22,9 @@ private RecordKey(com.google.protobuf.GeneratedMessageV3.Builder builder) {
     super(builder);
   }
 
-  private RecordKey() {}
+  private RecordKey() {
+    idValues_ = com.google.protobuf.LazyStringArrayList.EMPTY;
+  }
 
   @java.lang.Override
   public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
@@ -80,6 +82,16 @@ private RecordKey(
               typeCase_ = 3;
               break;
             }
+          case 42:
+            {
+              java.lang.String s = input.readStringRequireUtf8();
+              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+                idValues_ = new com.google.protobuf.LazyStringArrayList();
+                mutable_bitField0_ |= 0x00000004;
+              }
+              idValues_.add(s);
+              break;
+            }
           default:
             {
               if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
@@ -94,6 +106,9 @@ private RecordKey(
     } catch (java.io.IOException e) {
       throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
     } finally {
+      if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
+        idValues_ = idValues_.getUnmodifiableView();
+      }
       this.unknownFields = unknownFields.build();
       makeExtensionsImmutable();
     }
@@ -114,6 +129,7 @@ public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
             com.google.privacy.dlp.v2.RecordKey.Builder.class);
   }
 
+  private int bitField0_;
   private int typeCase_ = 0;
   private java.lang.Object type_;
 
@@ -194,6 +210,61 @@ public com.google.privacy.dlp.v2.BigQueryKeyOrBuilder getBigQueryKeyOrBuilder()
     return com.google.privacy.dlp.v2.BigQueryKey.getDefaultInstance();
   }
 
+  public static final int ID_VALUES_FIELD_NUMBER = 5;
+  private com.google.protobuf.LazyStringList idValues_;
+  /**
+   *
+   *
+   * 
+   * Values of identifying columns in the given row. Order of values matches
+   * the order of field identifiers specified in the scanning request.
+   * 
+ * + * repeated string id_values = 5; + */ + public com.google.protobuf.ProtocolStringList getIdValuesList() { + return idValues_; + } + /** + * + * + *
+   * Values of identifying columns in the given row. Order of values matches
+   * the order of field identifiers specified in the scanning request.
+   * 
+ * + * repeated string id_values = 5; + */ + public int getIdValuesCount() { + return idValues_.size(); + } + /** + * + * + *
+   * Values of identifying columns in the given row. Order of values matches
+   * the order of field identifiers specified in the scanning request.
+   * 
+ * + * repeated string id_values = 5; + */ + public java.lang.String getIdValues(int index) { + return idValues_.get(index); + } + /** + * + * + *
+   * Values of identifying columns in the given row. Order of values matches
+   * the order of field identifiers specified in the scanning request.
+   * 
+ * + * repeated string id_values = 5; + */ + public com.google.protobuf.ByteString getIdValuesBytes(int index) { + return idValues_.getByteString(index); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -214,6 +285,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (typeCase_ == 3) { output.writeMessage(3, (com.google.privacy.dlp.v2.BigQueryKey) type_); } + for (int i = 0; i < idValues_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 5, idValues_.getRaw(i)); + } unknownFields.writeTo(output); } @@ -233,6 +307,14 @@ public int getSerializedSize() { com.google.protobuf.CodedOutputStream.computeMessageSize( 3, (com.google.privacy.dlp.v2.BigQueryKey) type_); } + { + int dataSize = 0; + for (int i = 0; i < idValues_.size(); i++) { + dataSize += computeStringSizeNoTag(idValues_.getRaw(i)); + } + size += dataSize; + size += 1 * getIdValuesList().size(); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -249,6 +331,7 @@ public boolean equals(final java.lang.Object obj) { com.google.privacy.dlp.v2.RecordKey other = (com.google.privacy.dlp.v2.RecordKey) obj; boolean result = true; + result = result && getIdValuesList().equals(other.getIdValuesList()); result = result && getTypeCase().equals(other.getTypeCase()); if (!result) return false; switch (typeCase_) { @@ -272,6 +355,10 @@ public int hashCode() { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); + if (getIdValuesCount() > 0) { + hash = (37 * hash) + ID_VALUES_FIELD_NUMBER; + hash = (53 * hash) + getIdValuesList().hashCode(); + } switch (typeCase_) { case 2: hash = (37 * hash) + DATASTORE_KEY_FIELD_NUMBER; @@ -428,6 +515,8 @@ private void maybeForceBuilderInitialization() { @java.lang.Override public Builder clear() { super.clear(); + idValues_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000004); typeCase_ = 0; type_ = null; return this; @@ -456,6 +545,8 @@ public com.google.privacy.dlp.v2.RecordKey build() { @java.lang.Override public com.google.privacy.dlp.v2.RecordKey buildPartial() { com.google.privacy.dlp.v2.RecordKey result = new com.google.privacy.dlp.v2.RecordKey(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; if (typeCase_ == 2) { if (datastoreKeyBuilder_ == null) { result.type_ = type_; @@ -470,6 +561,12 @@ public com.google.privacy.dlp.v2.RecordKey buildPartial() { result.type_ = bigQueryKeyBuilder_.build(); } } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + idValues_ = idValues_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.idValues_ = idValues_; + result.bitField0_ = to_bitField0_; result.typeCase_ = typeCase_; onBuilt(); return result; @@ -520,6 +617,16 @@ public Builder mergeFrom(com.google.protobuf.Message other) { public Builder mergeFrom(com.google.privacy.dlp.v2.RecordKey other) { if (other == com.google.privacy.dlp.v2.RecordKey.getDefaultInstance()) return this; + if (!other.idValues_.isEmpty()) { + if (idValues_.isEmpty()) { + idValues_ = other.idValues_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureIdValuesIsMutable(); + idValues_.addAll(other.idValues_); + } + onChanged(); + } switch (other.getTypeCase()) { case DATASTORE_KEY: { @@ -579,6 +686,8 @@ public Builder clearType() { return this; } + private int bitField0_; + private com.google.protobuf.SingleFieldBuilderV3< com.google.privacy.dlp.v2.DatastoreKey, com.google.privacy.dlp.v2.DatastoreKey.Builder, @@ -832,6 +941,158 @@ public com.google.privacy.dlp.v2.BigQueryKeyOrBuilder getBigQueryKeyOrBuilder() return bigQueryKeyBuilder_; } + private com.google.protobuf.LazyStringList idValues_ = + com.google.protobuf.LazyStringArrayList.EMPTY; + + private void ensureIdValuesIsMutable() { + if (!((bitField0_ & 0x00000004) == 0x00000004)) { + idValues_ = new com.google.protobuf.LazyStringArrayList(idValues_); + bitField0_ |= 0x00000004; + } + } + /** + * + * + *
+     * Values of identifying columns in the given row. Order of values matches
+     * the order of field identifiers specified in the scanning request.
+     * 
+ * + * repeated string id_values = 5; + */ + public com.google.protobuf.ProtocolStringList getIdValuesList() { + return idValues_.getUnmodifiableView(); + } + /** + * + * + *
+     * Values of identifying columns in the given row. Order of values matches
+     * the order of field identifiers specified in the scanning request.
+     * 
+ * + * repeated string id_values = 5; + */ + public int getIdValuesCount() { + return idValues_.size(); + } + /** + * + * + *
+     * Values of identifying columns in the given row. Order of values matches
+     * the order of field identifiers specified in the scanning request.
+     * 
+ * + * repeated string id_values = 5; + */ + public java.lang.String getIdValues(int index) { + return idValues_.get(index); + } + /** + * + * + *
+     * Values of identifying columns in the given row. Order of values matches
+     * the order of field identifiers specified in the scanning request.
+     * 
+ * + * repeated string id_values = 5; + */ + public com.google.protobuf.ByteString getIdValuesBytes(int index) { + return idValues_.getByteString(index); + } + /** + * + * + *
+     * Values of identifying columns in the given row. Order of values matches
+     * the order of field identifiers specified in the scanning request.
+     * 
+ * + * repeated string id_values = 5; + */ + public Builder setIdValues(int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureIdValuesIsMutable(); + idValues_.set(index, value); + onChanged(); + return this; + } + /** + * + * + *
+     * Values of identifying columns in the given row. Order of values matches
+     * the order of field identifiers specified in the scanning request.
+     * 
+ * + * repeated string id_values = 5; + */ + public Builder addIdValues(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureIdValuesIsMutable(); + idValues_.add(value); + onChanged(); + return this; + } + /** + * + * + *
+     * Values of identifying columns in the given row. Order of values matches
+     * the order of field identifiers specified in the scanning request.
+     * 
+ * + * repeated string id_values = 5; + */ + public Builder addAllIdValues(java.lang.Iterable values) { + ensureIdValuesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, idValues_); + onChanged(); + return this; + } + /** + * + * + *
+     * Values of identifying columns in the given row. Order of values matches
+     * the order of field identifiers specified in the scanning request.
+     * 
+ * + * repeated string id_values = 5; + */ + public Builder clearIdValues() { + idValues_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + return this; + } + /** + * + * + *
+     * Values of identifying columns in the given row. Order of values matches
+     * the order of field identifiers specified in the scanning request.
+     * 
+ * + * repeated string id_values = 5; + */ + public Builder addIdValuesBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensureIdValuesIsMutable(); + idValues_.add(value); + onChanged(); + return this; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFieldsProto3(unknownFields); diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RecordKeyOrBuilder.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RecordKeyOrBuilder.java index a8535fdbb57e..fadc9fc52ef6 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RecordKeyOrBuilder.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RecordKeyOrBuilder.java @@ -22,5 +22,50 @@ public interface RecordKeyOrBuilder /** .google.privacy.dlp.v2.BigQueryKey big_query_key = 3; */ com.google.privacy.dlp.v2.BigQueryKeyOrBuilder getBigQueryKeyOrBuilder(); + /** + * + * + *
+   * Values of identifying columns in the given row. Order of values matches
+   * the order of field identifiers specified in the scanning request.
+   * 
+ * + * repeated string id_values = 5; + */ + java.util.List getIdValuesList(); + /** + * + * + *
+   * Values of identifying columns in the given row. Order of values matches
+   * the order of field identifiers specified in the scanning request.
+   * 
+ * + * repeated string id_values = 5; + */ + int getIdValuesCount(); + /** + * + * + *
+   * Values of identifying columns in the given row. Order of values matches
+   * the order of field identifiers specified in the scanning request.
+   * 
+ * + * repeated string id_values = 5; + */ + java.lang.String getIdValues(int index); + /** + * + * + *
+   * Values of identifying columns in the given row. Order of values matches
+   * the order of field identifiers specified in the scanning request.
+   * 
+ * + * repeated string id_values = 5; + */ + com.google.protobuf.ByteString getIdValuesBytes(int index); + public com.google.privacy.dlp.v2.RecordKey.TypeCase getTypeCase(); } diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RelationalOperator.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RelationalOperator.java index 6fff36e2cc53..81629fdcebc2 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RelationalOperator.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/RelationalOperator.java @@ -19,7 +19,7 @@ public enum RelationalOperator implements com.google.protobuf.ProtocolMessageEnu * * *
-   * Equal.
+   * Equal. Attempts to match even with incompatible types.
    * 
* * EQUAL_TO = 1; @@ -29,7 +29,7 @@ public enum RelationalOperator implements com.google.protobuf.ProtocolMessageEnu * * *
-   * Not equal to.
+   * Not equal to. Attempts to match even with incompatible types.
    * 
* * NOT_EQUAL_TO = 2; @@ -94,7 +94,7 @@ public enum RelationalOperator implements com.google.protobuf.ProtocolMessageEnu * * *
-   * Equal.
+   * Equal. Attempts to match even with incompatible types.
    * 
* * EQUAL_TO = 1; @@ -104,7 +104,7 @@ public enum RelationalOperator implements com.google.protobuf.ProtocolMessageEnu * * *
-   * Not equal to.
+   * Not equal to. Attempts to match even with incompatible types.
    * 
* * NOT_EQUAL_TO = 2; diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/TransformationSummary.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/TransformationSummary.java index 1b217808e79b..92cd1fe2d706 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/TransformationSummary.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/TransformationSummary.java @@ -1103,7 +1103,7 @@ public com.google.protobuf.Parser getParserForType() { * * *
-   * Set if the transformation was limited to a specific info_type.
+   * Set if the transformation was limited to a specific InfoType.
    * 
* * .google.privacy.dlp.v2.InfoType info_type = 1; @@ -1115,7 +1115,7 @@ public boolean hasInfoType() { * * *
-   * Set if the transformation was limited to a specific info_type.
+   * Set if the transformation was limited to a specific InfoType.
    * 
* * .google.privacy.dlp.v2.InfoType info_type = 1; @@ -1127,7 +1127,7 @@ public com.google.privacy.dlp.v2.InfoType getInfoType() { * * *
-   * Set if the transformation was limited to a specific info_type.
+   * Set if the transformation was limited to a specific InfoType.
    * 
* * .google.privacy.dlp.v2.InfoType info_type = 1; @@ -1941,7 +1941,7 @@ public Builder mergeFrom( * * *
-     * Set if the transformation was limited to a specific info_type.
+     * Set if the transformation was limited to a specific InfoType.
      * 
* * .google.privacy.dlp.v2.InfoType info_type = 1; @@ -1953,7 +1953,7 @@ public boolean hasInfoType() { * * *
-     * Set if the transformation was limited to a specific info_type.
+     * Set if the transformation was limited to a specific InfoType.
      * 
* * .google.privacy.dlp.v2.InfoType info_type = 1; @@ -1971,7 +1971,7 @@ public com.google.privacy.dlp.v2.InfoType getInfoType() { * * *
-     * Set if the transformation was limited to a specific info_type.
+     * Set if the transformation was limited to a specific InfoType.
      * 
* * .google.privacy.dlp.v2.InfoType info_type = 1; @@ -1993,7 +1993,7 @@ public Builder setInfoType(com.google.privacy.dlp.v2.InfoType value) { * * *
-     * Set if the transformation was limited to a specific info_type.
+     * Set if the transformation was limited to a specific InfoType.
      * 
* * .google.privacy.dlp.v2.InfoType info_type = 1; @@ -2012,7 +2012,7 @@ public Builder setInfoType(com.google.privacy.dlp.v2.InfoType.Builder builderFor * * *
-     * Set if the transformation was limited to a specific info_type.
+     * Set if the transformation was limited to a specific InfoType.
      * 
* * .google.privacy.dlp.v2.InfoType info_type = 1; @@ -2038,7 +2038,7 @@ public Builder mergeInfoType(com.google.privacy.dlp.v2.InfoType value) { * * *
-     * Set if the transformation was limited to a specific info_type.
+     * Set if the transformation was limited to a specific InfoType.
      * 
* * .google.privacy.dlp.v2.InfoType info_type = 1; @@ -2058,7 +2058,7 @@ public Builder clearInfoType() { * * *
-     * Set if the transformation was limited to a specific info_type.
+     * Set if the transformation was limited to a specific InfoType.
      * 
* * .google.privacy.dlp.v2.InfoType info_type = 1; @@ -2072,7 +2072,7 @@ public com.google.privacy.dlp.v2.InfoType.Builder getInfoTypeBuilder() { * * *
-     * Set if the transformation was limited to a specific info_type.
+     * Set if the transformation was limited to a specific InfoType.
      * 
* * .google.privacy.dlp.v2.InfoType info_type = 1; @@ -2090,7 +2090,7 @@ public com.google.privacy.dlp.v2.InfoTypeOrBuilder getInfoTypeOrBuilder() { * * *
-     * Set if the transformation was limited to a specific info_type.
+     * Set if the transformation was limited to a specific InfoType.
      * 
* * .google.privacy.dlp.v2.InfoType info_type = 1; diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/TransformationSummaryOrBuilder.java b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/TransformationSummaryOrBuilder.java index f08b0d7c963e..98458651fbd6 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/TransformationSummaryOrBuilder.java +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/java/com/google/privacy/dlp/v2/TransformationSummaryOrBuilder.java @@ -12,7 +12,7 @@ public interface TransformationSummaryOrBuilder * * *
-   * Set if the transformation was limited to a specific info_type.
+   * Set if the transformation was limited to a specific InfoType.
    * 
* * .google.privacy.dlp.v2.InfoType info_type = 1; @@ -22,7 +22,7 @@ public interface TransformationSummaryOrBuilder * * *
-   * Set if the transformation was limited to a specific info_type.
+   * Set if the transformation was limited to a specific InfoType.
    * 
* * .google.privacy.dlp.v2.InfoType info_type = 1; @@ -32,7 +32,7 @@ public interface TransformationSummaryOrBuilder * * *
-   * Set if the transformation was limited to a specific info_type.
+   * Set if the transformation was limited to a specific InfoType.
    * 
* * .google.privacy.dlp.v2.InfoType info_type = 1; diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/proto/google/privacy/dlp/v2/dlp.proto b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/proto/google/privacy/dlp/v2/dlp.proto index e2858d6f652c..cdf9d19fc70f 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/proto/google/privacy/dlp/v2/dlp.proto +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/proto/google/privacy/dlp/v2/dlp.proto @@ -280,6 +280,15 @@ service DlpService { }; } + // Activate a job trigger. Causes the immediate execute of a trigger + // instead of waiting on the trigger event to occur. + rpc ActivateJobTrigger(ActivateJobTriggerRequest) returns (DlpJob) { + option (google.api.http) = { + post: "/v2/{name=projects/*/jobTriggers/*}:activate" + body: "*" + }; + } + // Creates a new job to inspect storage or calculate risk metrics. // See https://cloud.google.com/dlp/docs/inspecting-storage and // https://cloud.google.com/dlp/docs/compute-risk-analysis to learn more. @@ -432,6 +441,18 @@ message ExclusionRule { MatchingType matching_type = 4; } +// Options describing which parts of the provided content should be scanned. +enum ContentOption { + // Includes entire content of a file or a data stream. + CONTENT_UNSPECIFIED = 0; + + // Text content within the data, excluding any metadata. + CONTENT_TEXT = 1; + + // Images found in the data. + CONTENT_IMAGE = 2; +} + // A single inspection rule to be applied to infoTypes, specified in // `InspectionRuleSet`. message InspectionRule { @@ -474,12 +495,12 @@ message InspectConfig { // Max number of findings that will be returned for each item scanned. // When set within `InspectDataSourceRequest`, - // the maximum returned is 1000 regardless if this is set higher. + // the maximum returned is 2000 regardless if this is set higher. // When set within `InspectContentRequest`, this field is ignored. int32 max_findings_per_item = 1; // Max number of findings that will be returned per request/job. - // When set within `InspectContentRequest`, the maximum returned is 1000 + // When set within `InspectContentRequest`, the maximum returned is 2000 // regardless if this is set higher. int32 max_findings_per_request = 2; @@ -645,6 +666,35 @@ message Location { repeated ContentLocation content_locations = 7; } +// Type of the match which can be applied to different ways of matching, like +// Dictionary, regular expression and intersecting with findings of another +// info type. +enum MatchingType { + // Invalid. + MATCHING_TYPE_UNSPECIFIED = 0; + + // Full match. + // + // - Dictionary: join of Dictionary results matched complete finding quote + // - Regex: all regex matches fill a finding quote start to end + // - Exclude info type: completely inside affecting info types findings + MATCHING_TYPE_FULL_MATCH = 1; + + // Partial match. + // + // - Dictionary: at least one of the tokens in the finding matches + // - Regex: substring of the finding matches + // - Exclude info type: intersects with affecting info types findings + MATCHING_TYPE_PARTIAL_MATCH = 2; + + // Inverse match. + // + // - Dictionary: no tokens in the finding match the dictionary + // - Regex: finding doesn't match the regex + // - Exclude info type: no intersection with affecting info types findings + MATCHING_TYPE_INVERSE_MATCH = 3; +} + // Findings container location data. message ContentLocation { // Name of the container where the finding is located. @@ -1019,6 +1069,10 @@ message InfoTypeDescription { // Which parts of the API supports this InfoType. repeated InfoTypeSupportedBy supported_by = 3; + + // Description of the infotype. Translated when language is provided in the + // request. + string description = 4; } // Request for the list of infoTypes. @@ -1652,9 +1706,10 @@ message TimePartConfig { // Pseudonymization method that generates surrogates via cryptographic hashing. // Uses SHA-256. // The key size must be either 32 or 64 bytes. -// Outputs a 32 byte digest as an uppercase hex string -// (for example, 41D1567F7F99F1DC2A5FAB886DEE5BEE). +// Outputs a base64 encoded representation of the hashed output +// (for example, L7k0BHmF1ha5U3NfGykjro4xWi1MPVQPjhMAZbSV9mM=). // Currently, only string and integer values can be hashed. +// See https://cloud.google.com/dlp/docs/pseudonymization to learn more. message CryptoHashConfig { // The key used by the hash function. CryptoKey crypto_key = 1; @@ -1933,6 +1988,17 @@ message UnwrappedCryptoKey { bytes key = 1; } +// Parts of the APIs which use certain infoTypes. +enum InfoTypeSupportedBy { + ENUM_TYPE_UNSPECIFIED = 0; + + // Supported by the inspect operations. + INSPECT = 1; + + // Supported by the risk analysis operations. + RISK_ANALYSIS = 2; +} + // Include to use an existing data crypto key wrapped by KMS. // Authorization requires the following IAM permissions when sending a request // to perform a crypto transformation using a kms-wrapped crypto key: @@ -2048,7 +2114,8 @@ message RecordSuppression { message RecordCondition { // The field type of `value` and `field` do not need to match to be // considered equal, but not all comparisons are possible. - // + // EQUAL_TO and NOT_EQUAL_TO attempt to compare even with incompatible types, + // but all other comparisons are invalid with incompatible types. // A `value` of type: // // - `string` can be compared against all other types @@ -2135,7 +2202,7 @@ message TransformationSummary { ERROR = 2; } - // Set if the transformation was limited to a specific info_type. + // Set if the transformation was limited to a specific InfoType. InfoType info_type = 1; // Set if the transformation was limited to a specific FieldId. @@ -2340,6 +2407,12 @@ message Action { } + // Enable email notification to project owners and editors on jobs's + // completion/failure. + message JobNotificationEmails { + + } + oneof action { // Save resulting findings in a provided location. SaveFindings save_findings = 1; @@ -2349,6 +2422,10 @@ message Action { // Publish summary to Cloud Security Command Center (Alpha). PublishSummaryToCscc publish_summary_to_cscc = 3; + + // Enable email notification to project owners and editors on job‘s + // completion/failure. + JobNotificationEmails job_notification_emails = 8; } } @@ -2453,6 +2530,13 @@ message CreateJobTriggerRequest { string trigger_id = 3; } +// Request message for ActivateJobTrigger. +message ActivateJobTriggerRequest { + // Resource name of the trigger to activate, for example + // `projects/dlp-test-project/jobTriggers/53234423`. + string name = 1; +} + // Request message for UpdateJobTrigger. message UpdateJobTriggerRequest { // Resource name of the project and the triggeredJob, for example @@ -2518,10 +2602,37 @@ message ListJobTriggersRequest { // // - `create_time`: corresponds to time the JobTrigger was created. // - `update_time`: corresponds to time the JobTrigger was last updated. + // - `last_run_time`: corresponds to the last time the JobTrigger ran. // - `name`: corresponds to JobTrigger's name. // - `display_name`: corresponds to JobTrigger's display name. // - `status`: corresponds to JobTrigger's status. string order_by = 4; + + // Optional. Allows filtering. + // + // Supported syntax: + // + // * Filter expressions are made up of one or more restrictions. + // * Restrictions can be combined by `AND` or `OR` logical operators. A + // sequence of restrictions implicitly uses `AND`. + // * A restriction has the form of ` `. + // * Supported fields/values for inspect jobs: + // - `status` - HEALTHY|PAUSED|CANCELLED + // - `inspected_storage` - DATASTORE|CLOUD_STORAGE|BIGQUERY + // - 'last_run_time` - RFC 3339 formatted timestamp, surrounded by + // quotation marks. Nanoseconds are ignored. + // - 'error_count' - Number of errors that have occurred while running. + // * The operator must be `=` or `!=` for status and inspected_storage. + // + // Examples: + // + // * inspected_storage = cloud_storage AND status = HEALTHY + // * inspected_storage = cloud_storage OR inspected_storage = bigquery + // * inspected_storage = cloud_storage AND (state = PAUSED OR state = HEALTHY) + // * last_run_time > \"2017-12-12T00:00:00+00:00\" + // + // The length of this field should be no more than 500 characters. + string filter = 5; } // Response message for ListJobTriggers. @@ -2619,6 +2730,32 @@ message GetDlpJobRequest { string name = 1; } +// Operators available for comparing the value of fields. +enum RelationalOperator { + RELATIONAL_OPERATOR_UNSPECIFIED = 0; + + // Equal. Attempts to match even with incompatible types. + EQUAL_TO = 1; + + // Not equal to. Attempts to match even with incompatible types. + NOT_EQUAL_TO = 2; + + // Greater than. + GREATER_THAN = 3; + + // Less than. + LESS_THAN = 4; + + // Greater than or equals. + GREATER_THAN_OR_EQUALS = 5; + + // Less than or equals. + LESS_THAN_OR_EQUALS = 6; + + // Exists + EXISTS = 7; +} + // The request message for listing DLP jobs. message ListDlpJobsRequest { // The parent resource name, for example projects/my-project-id. @@ -2949,84 +3086,6 @@ message DeleteStoredInfoTypeRequest { string name = 1; } -// Options describing which parts of the provided content should be scanned. -enum ContentOption { - // Includes entire content of a file or a data stream. - CONTENT_UNSPECIFIED = 0; - - // Text content within the data, excluding any metadata. - CONTENT_TEXT = 1; - - // Images found in the data. - CONTENT_IMAGE = 2; -} - -// Type of the match which can be applied to different ways of matching, like -// Dictionary, regular expression and intersecting with findings of another -// info type. -enum MatchingType { - // Invalid. - MATCHING_TYPE_UNSPECIFIED = 0; - - // Full match. - // - // - Dictionary: join of Dictionary results matched complete finding quote - // - Regex: all regex matches fill a finding quote start to end - // - Exclude info type: completely inside affecting info types findings - MATCHING_TYPE_FULL_MATCH = 1; - - // Partial match. - // - // - Dictionary: at least one of the tokens in the finding matches - // - Regex: substring of the finding matches - // - Exclude info type: intersects with affecting info types findings - MATCHING_TYPE_PARTIAL_MATCH = 2; - - // Inverse match. - // - // - Dictionary: no tokens in the finding match the dictionary - // - Regex: finding doesn't match the regex - // - Exclude info type: no intersection with affecting info types findings - MATCHING_TYPE_INVERSE_MATCH = 3; -} - -// Parts of the APIs which use certain infoTypes. -enum InfoTypeSupportedBy { - ENUM_TYPE_UNSPECIFIED = 0; - - // Supported by the inspect operations. - INSPECT = 1; - - // Supported by the risk analysis operations. - RISK_ANALYSIS = 2; -} - -// Operators available for comparing the value of fields. -enum RelationalOperator { - RELATIONAL_OPERATOR_UNSPECIFIED = 0; - - // Equal. - EQUAL_TO = 1; - - // Not equal to. - NOT_EQUAL_TO = 2; - - // Greater than. - GREATER_THAN = 3; - - // Less than. - LESS_THAN = 4; - - // Greater than or equals. - GREATER_THAN_OR_EQUALS = 5; - - // Less than or equals. - LESS_THAN_OR_EQUALS = 6; - - // Exists - EXISTS = 7; -} - // An enum to represent the various type of DLP jobs. enum DlpJobType { DLP_JOB_TYPE_UNSPECIFIED = 0; diff --git a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/proto/google/privacy/dlp/v2/storage.proto b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/proto/google/privacy/dlp/v2/storage.proto index e7b540cbb861..9993c25fce9e 100644 --- a/google-api-grpc/proto-google-cloud-dlp-v2/src/main/proto/google/privacy/dlp/v2/storage.proto +++ b/google-api-grpc/proto-google-cloud-dlp-v2/src/main/proto/google/privacy/dlp/v2/storage.proto @@ -50,6 +50,26 @@ message StoredType { google.protobuf.Timestamp create_time = 2; } +// Categorization of results based on how likely they are to represent a match, +// based on the number of elements they contain which imply a match. +enum Likelihood { + // Default value; same as POSSIBLE. + LIKELIHOOD_UNSPECIFIED = 0; + + // Few matching elements. + VERY_UNLIKELY = 1; + + UNLIKELY = 2; + + // Some matching elements. + POSSIBLE = 3; + + LIKELY = 4; + + // Many matching elements. + VERY_LIKELY = 5; +} + // Custom information type provided by the user. Used to find domain-specific // sensitive information configurable to the data in question. message CustomInfoType { @@ -101,6 +121,10 @@ message CustomInfoType { // (https://github.com/google/re2/wiki/Syntax) can be found under the // google/re2 repository on GitHub. string pattern = 1; + + // The index of the submatch to extract as findings. When not + // specified, the entire match is returned. No more than 3 may be included. + repeated int32 group_indexes = 2; } // Message for detecting output from deidentification transformations @@ -321,8 +345,15 @@ message CloudStorageOptions { // Set of files to scan. message FileSet { // The Cloud Storage url of the file(s) to scan, in the format - // `gs:///`. Trailing wildcard in the path is allowed. Exactly - // one of `url` or `regex_file_set` must be set. + // `gs:///`. Trailing wildcard in the path is allowed. + // + // If the url ends in a trailing slash, the bucket or directory represented + // by the url will be scanned non-recursively (content in sub-directories + // will not be scanned). This means that `gs://mybucket/` is equivalent to + // `gs://mybucket/*`, and `gs://mybucket/directory/` is equivalent to + // `gs://mybucket/directory/*`. + // + // Exactly one of `url` or `regex_file_set` must be set. string url = 1; // The regex-filtered set of files to scan. Exactly one of `url` or @@ -389,8 +420,8 @@ message CloudStoragePath { // Options defining BigQuery table and row identifiers. message BigQueryOptions { // How to sample rows if not all rows are scanned. Meaningful only when used - // in conjunction with rows_limit. If not specified, scanning would start - // from the top. + // in conjunction with either rows_limit or rows_limit_percent. If not + // specified, scanning would start from the top. enum SampleMethod { SAMPLE_METHOD_UNSPECIFIED = 0; @@ -472,6 +503,28 @@ message StorageConfig { TimespanConfig timespan_config = 6; } +// Definitions of file type groups to scan. +enum FileType { + // Includes all files. + FILE_TYPE_UNSPECIFIED = 0; + + // Includes all file extensions not covered by text file types. + BINARY_FILE = 1; + + // Included file extensions: + // asc, brf, c, cc, cpp, csv, cxx, c++, cs, css, dart, eml, go, h, hh, hpp, + // hxx, h++, hs, html, htm, shtml, shtm, xhtml, lhs, ini, java, js, json, + // ocaml, md, mkd, markdown, m, ml, mli, pl, pm, php, phtml, pht, py, pyw, + // rb, rbw, rs, rc, scala, sh, sql, tex, txt, text, tsv, vcard, vcs, wml, + // xml, xsl, xsd, yml, yaml. + TEXT_FILE = 2; + + // Included file extensions: + // bmp, gif, jpg, jpeg, jpe, png. + // bytes_limit_per_file has no effect on image files. + IMAGE = 3; +} + // Row key for identifying a record in BigQuery table. message BigQueryKey { // Complete BigQuery table reference. @@ -543,6 +596,10 @@ message RecordKey { BigQueryKey big_query_key = 3; } + + // Values of identifying columns in the given row. Order of values matches + // the order of field identifiers specified in the scanning request. + repeated string id_values = 5; } // Message defining the location of a BigQuery table. A table is uniquely @@ -580,40 +637,3 @@ message EntityId { // Composite key indicating which field contains the entity identifier. FieldId field = 1; } - -// Categorization of results based on how likely they are to represent a match, -// based on the number of elements they contain which imply a match. -enum Likelihood { - // Default value; same as POSSIBLE. - LIKELIHOOD_UNSPECIFIED = 0; - - // Few matching elements. - VERY_UNLIKELY = 1; - - UNLIKELY = 2; - - // Some matching elements. - POSSIBLE = 3; - - LIKELY = 4; - - // Many matching elements. - VERY_LIKELY = 5; -} - -// Definitions of file type groups to scan. -enum FileType { - // Includes all files. - FILE_TYPE_UNSPECIFIED = 0; - - // Includes all file extensions not covered by text file types. - BINARY_FILE = 1; - - // Included file extensions: - // asc, brf, c, cc, cpp, csv, cxx, c++, cs, css, dart, eml, go, h, hh, hpp, - // hxx, h++, hs, html, htm, shtml, shtm, xhtml, lhs, ini, java, js, json, - // ocaml, md, mkd, markdown, m, ml, mli, pl, pm, php, phtml, pht, py, pyw, - // rb, rbw, rs, rc, scala, sh, sql, tex, txt, text, tsv, vcard, vcs, wml, - // xml, xsl, xsd, yml, yaml. - TEXT_FILE = 2; -} diff --git a/google-api-grpc/proto-google-cloud-error-reporting-v1beta1/pom.xml b/google-api-grpc/proto-google-cloud-error-reporting-v1beta1/pom.xml index 531a22b6f4e7..3e029f0757d7 100644 --- a/google-api-grpc/proto-google-cloud-error-reporting-v1beta1/pom.xml +++ b/google-api-grpc/proto-google-cloud-error-reporting-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-error-reporting-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-error-reporting-v1beta1 PROTO library for proto-google-cloud-error-reporting-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-firestore-v1/pom.xml b/google-api-grpc/proto-google-cloud-firestore-v1/pom.xml index cba8060e4ba5..1fb51de9ac19 100644 --- a/google-api-grpc/proto-google-cloud-firestore-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-firestore-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-firestore-v1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-firestore-v1 PROTO library for proto-google-cloud-firestore-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-firestore-v1beta1/pom.xml b/google-api-grpc/proto-google-cloud-firestore-v1beta1/pom.xml index 6f362d2e5367..1fc41c7b2395 100644 --- a/google-api-grpc/proto-google-cloud-firestore-v1beta1/pom.xml +++ b/google-api-grpc/proto-google-cloud-firestore-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-firestore-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-firestore-v1beta1 PROTO library for proto-google-cloud-firestore-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-iamcredentials-v1/pom.xml b/google-api-grpc/proto-google-cloud-iamcredentials-v1/pom.xml index 4c85cf0f97fd..f66eea164194 100644 --- a/google-api-grpc/proto-google-cloud-iamcredentials-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-iamcredentials-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-iamcredentials-v1 - 0.7.1-alpha-SNAPSHOT + 0.8.0-alpha proto-google-cloud-iamcredentials-v1 PROTO library for proto-google-cloud-iamcredentials-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-iot-v1/pom.xml b/google-api-grpc/proto-google-cloud-iot-v1/pom.xml index 8562e7b359f5..c1212994ed13 100644 --- a/google-api-grpc/proto-google-cloud-iot-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-iot-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-iot-v1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-iot-v1 PROTO library for proto-google-cloud-iot-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-kms-v1/pom.xml b/google-api-grpc/proto-google-cloud-kms-v1/pom.xml index c5c2fbacb435..f3b5d8dd5459 100644 --- a/google-api-grpc/proto-google-cloud-kms-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-kms-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-kms-v1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-kms-v1 PROTO library for proto-google-cloud-kms-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-kms-v1/src/main/java/com/google/cloud/kms/v1/KeyOperationAttestation.java b/google-api-grpc/proto-google-cloud-kms-v1/src/main/java/com/google/cloud/kms/v1/KeyOperationAttestation.java index 2991620aafc0..a2f9179d1cd5 100644 --- a/google-api-grpc/proto-google-cloud-kms-v1/src/main/java/com/google/cloud/kms/v1/KeyOperationAttestation.java +++ b/google-api-grpc/proto-google-cloud-kms-v1/src/main/java/com/google/cloud/kms/v1/KeyOperationAttestation.java @@ -120,6 +120,17 @@ public enum AttestationFormat implements com.google.protobuf.ProtocolMessageEnum * CAVIUM_V1_COMPRESSED = 3; */ CAVIUM_V1_COMPRESSED(3), + /** + * + * + *
+     * Cavium HSM attestation V2 compressed with gzip. This is a new format
+     * Introduced in Cavium's version 3.2-08
+     * 
+ * + * CAVIUM_V2_COMPRESSED = 4; + */ + CAVIUM_V2_COMPRESSED(4), UNRECOGNIZED(-1), ; @@ -136,6 +147,17 @@ public enum AttestationFormat implements com.google.protobuf.ProtocolMessageEnum * CAVIUM_V1_COMPRESSED = 3; */ public static final int CAVIUM_V1_COMPRESSED_VALUE = 3; + /** + * + * + *
+     * Cavium HSM attestation V2 compressed with gzip. This is a new format
+     * Introduced in Cavium's version 3.2-08
+     * 
+ * + * CAVIUM_V2_COMPRESSED = 4; + */ + public static final int CAVIUM_V2_COMPRESSED_VALUE = 4; public final int getNumber() { if (this == UNRECOGNIZED) { @@ -157,6 +179,8 @@ public static AttestationFormat forNumber(int value) { return ATTESTATION_FORMAT_UNSPECIFIED; case 3: return CAVIUM_V1_COMPRESSED; + case 4: + return CAVIUM_V2_COMPRESSED; default: return null; } diff --git a/google-api-grpc/proto-google-cloud-kms-v1/src/main/java/com/google/cloud/kms/v1/KmsResourcesProto.java b/google-api-grpc/proto-google-cloud-kms-v1/src/main/java/com/google/cloud/kms/v1/KmsResourcesProto.java index f8dafcf0b5be..ba0aa7371c3d 100644 --- a/google-api-grpc/proto-google-cloud-kms-v1/src/main/java/com/google/cloud/kms/v1/KmsResourcesProto.java +++ b/google-api-grpc/proto-google-cloud-kms-v1/src/main/java/com/google/cloud/kms/v1/KmsResourcesProto.java @@ -74,52 +74,52 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "Template\022>\n\020protection_level\030\001 \001(\0162$.goo" + "gle.cloud.kms.v1.ProtectionLevel\022R\n\talgo" + "rithm\030\003 \001(\0162?.google.cloud.kms.v1.Crypto" - + "KeyVersion.CryptoKeyVersionAlgorithm\"\315\001\n" + + "KeyVersion.CryptoKeyVersionAlgorithm\"\347\001\n" + "\027KeyOperationAttestation\022N\n\006format\030\004 \001(\016" + "2>.google.cloud.kms.v1.KeyOperationAttes" + "tation.AttestationFormat\022\017\n\007content\030\005 \001(" - + "\014\"Q\n\021AttestationFormat\022\"\n\036ATTESTATION_FO" + + "\014\"k\n\021AttestationFormat\022\"\n\036ATTESTATION_FO" + "RMAT_UNSPECIFIED\020\000\022\030\n\024CAVIUM_V1_COMPRESS" - + "ED\020\003\"\270\t\n\020CryptoKeyVersion\022\014\n\004name\030\001 \001(\t\022" - + "J\n\005state\030\003 \001(\0162;.google.cloud.kms.v1.Cry" - + "ptoKeyVersion.CryptoKeyVersionState\022>\n\020p" - + "rotection_level\030\007 \001(\0162$.google.cloud.kms" - + ".v1.ProtectionLevel\022R\n\talgorithm\030\n \001(\0162?" - + ".google.cloud.kms.v1.CryptoKeyVersion.Cr" - + "yptoKeyVersionAlgorithm\022A\n\013attestation\030\010" - + " \001(\0132,.google.cloud.kms.v1.KeyOperationA" - + "ttestation\022/\n\013create_time\030\004 \001(\0132\032.google" - + ".protobuf.Timestamp\0221\n\rgenerate_time\030\013 \001" - + "(\0132\032.google.protobuf.Timestamp\0220\n\014destro" - + "y_time\030\005 \001(\0132\032.google.protobuf.Timestamp" - + "\0226\n\022destroy_event_time\030\006 \001(\0132\032.google.pr" - + "otobuf.Timestamp\"\274\003\n\031CryptoKeyVersionAlg" - + "orithm\022,\n(CRYPTO_KEY_VERSION_ALGORITHM_U" - + "NSPECIFIED\020\000\022\037\n\033GOOGLE_SYMMETRIC_ENCRYPT" - + "ION\020\001\022\034\n\030RSA_SIGN_PSS_2048_SHA256\020\002\022\034\n\030R" - + "SA_SIGN_PSS_3072_SHA256\020\003\022\034\n\030RSA_SIGN_PS" - + "S_4096_SHA256\020\004\022\036\n\032RSA_SIGN_PKCS1_2048_S" - + "HA256\020\005\022\036\n\032RSA_SIGN_PKCS1_3072_SHA256\020\006\022" - + "\036\n\032RSA_SIGN_PKCS1_4096_SHA256\020\007\022 \n\034RSA_D" - + "ECRYPT_OAEP_2048_SHA256\020\010\022 \n\034RSA_DECRYPT" - + "_OAEP_3072_SHA256\020\t\022 \n\034RSA_DECRYPT_OAEP_" - + "4096_SHA256\020\n\022\027\n\023EC_SIGN_P256_SHA256\020\014\022\027" - + "\n\023EC_SIGN_P384_SHA384\020\r\"\232\001\n\025CryptoKeyVer" - + "sionState\022(\n$CRYPTO_KEY_VERSION_STATE_UN" - + "SPECIFIED\020\000\022\026\n\022PENDING_GENERATION\020\005\022\013\n\007E" - + "NABLED\020\001\022\014\n\010DISABLED\020\002\022\r\n\tDESTROYED\020\003\022\025\n" - + "\021DESTROY_SCHEDULED\020\004\"I\n\024CryptoKeyVersion" - + "View\022\'\n#CRYPTO_KEY_VERSION_VIEW_UNSPECIF" - + "IED\020\000\022\010\n\004FULL\020\001\"l\n\tPublicKey\022\013\n\003pem\030\001 \001(" - + "\t\022R\n\talgorithm\030\002 \001(\0162?.google.cloud.kms." - + "v1.CryptoKeyVersion.CryptoKeyVersionAlgo" - + "rithm*J\n\017ProtectionLevel\022 \n\034PROTECTION_L" - + "EVEL_UNSPECIFIED\020\000\022\014\n\010SOFTWARE\020\001\022\007\n\003HSM\020" - + "\002B\225\001\n\027com.google.cloud.kms.v1B\021KmsResour" - + "cesProtoP\001Z6google.golang.org/genproto/g" - + "oogleapis/cloud/kms/v1;kms\370\001\001\252\002\023Google.C" - + "loud.Kms.V1\312\002\023Google\\Cloud\\Kms\\V1b\006proto" - + "3" + + "ED\020\003\022\030\n\024CAVIUM_V2_COMPRESSED\020\004\"\270\t\n\020Crypt" + + "oKeyVersion\022\014\n\004name\030\001 \001(\t\022J\n\005state\030\003 \001(\016" + + "2;.google.cloud.kms.v1.CryptoKeyVersion." + + "CryptoKeyVersionState\022>\n\020protection_leve" + + "l\030\007 \001(\0162$.google.cloud.kms.v1.Protection" + + "Level\022R\n\talgorithm\030\n \001(\0162?.google.cloud." + + "kms.v1.CryptoKeyVersion.CryptoKeyVersion" + + "Algorithm\022A\n\013attestation\030\010 \001(\0132,.google." + + "cloud.kms.v1.KeyOperationAttestation\022/\n\013" + + "create_time\030\004 \001(\0132\032.google.protobuf.Time" + + "stamp\0221\n\rgenerate_time\030\013 \001(\0132\032.google.pr" + + "otobuf.Timestamp\0220\n\014destroy_time\030\005 \001(\0132\032" + + ".google.protobuf.Timestamp\0226\n\022destroy_ev" + + "ent_time\030\006 \001(\0132\032.google.protobuf.Timesta" + + "mp\"\274\003\n\031CryptoKeyVersionAlgorithm\022,\n(CRYP" + + "TO_KEY_VERSION_ALGORITHM_UNSPECIFIED\020\000\022\037" + + "\n\033GOOGLE_SYMMETRIC_ENCRYPTION\020\001\022\034\n\030RSA_S" + + "IGN_PSS_2048_SHA256\020\002\022\034\n\030RSA_SIGN_PSS_30" + + "72_SHA256\020\003\022\034\n\030RSA_SIGN_PSS_4096_SHA256\020" + + "\004\022\036\n\032RSA_SIGN_PKCS1_2048_SHA256\020\005\022\036\n\032RSA" + + "_SIGN_PKCS1_3072_SHA256\020\006\022\036\n\032RSA_SIGN_PK" + + "CS1_4096_SHA256\020\007\022 \n\034RSA_DECRYPT_OAEP_20" + + "48_SHA256\020\010\022 \n\034RSA_DECRYPT_OAEP_3072_SHA" + + "256\020\t\022 \n\034RSA_DECRYPT_OAEP_4096_SHA256\020\n\022" + + "\027\n\023EC_SIGN_P256_SHA256\020\014\022\027\n\023EC_SIGN_P384" + + "_SHA384\020\r\"\232\001\n\025CryptoKeyVersionState\022(\n$C" + + "RYPTO_KEY_VERSION_STATE_UNSPECIFIED\020\000\022\026\n" + + "\022PENDING_GENERATION\020\005\022\013\n\007ENABLED\020\001\022\014\n\010DI" + + "SABLED\020\002\022\r\n\tDESTROYED\020\003\022\025\n\021DESTROY_SCHED" + + "ULED\020\004\"I\n\024CryptoKeyVersionView\022\'\n#CRYPTO" + + "_KEY_VERSION_VIEW_UNSPECIFIED\020\000\022\010\n\004FULL\020" + + "\001\"l\n\tPublicKey\022\013\n\003pem\030\001 \001(\t\022R\n\talgorithm" + + "\030\002 \001(\0162?.google.cloud.kms.v1.CryptoKeyVe" + + "rsion.CryptoKeyVersionAlgorithm*J\n\017Prote" + + "ctionLevel\022 \n\034PROTECTION_LEVEL_UNSPECIFI" + + "ED\020\000\022\014\n\010SOFTWARE\020\001\022\007\n\003HSM\020\002B\225\001\n\027com.goog" + + "le.cloud.kms.v1B\021KmsResourcesProtoP\001Z6go" + + "ogle.golang.org/genproto/googleapis/clou" + + "d/kms/v1;kms\370\001\001\252\002\023Google.Cloud.Kms.V1\312\002\023" + + "Google\\Cloud\\Kms\\V1b\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { diff --git a/google-api-grpc/proto-google-cloud-kms-v1/src/main/proto/google/cloud/kms/v1/resources.proto b/google-api-grpc/proto-google-cloud-kms-v1/src/main/proto/google/cloud/kms/v1/resources.proto index 0bd39ef2678c..f85b618e732f 100644 --- a/google-api-grpc/proto-google-cloud-kms-v1/src/main/proto/google/cloud/kms/v1/resources.proto +++ b/google-api-grpc/proto-google-cloud-kms-v1/src/main/proto/google/cloud/kms/v1/resources.proto @@ -157,6 +157,10 @@ message KeyOperationAttestation { // Cavium HSM attestation compressed with gzip. Note that this format is // defined by Cavium and subject to change at any time. CAVIUM_V1_COMPRESSED = 3; + + // Cavium HSM attestation V2 compressed with gzip. This is a new format + // Introduced in Cavium's version 3.2-08 + CAVIUM_V2_COMPRESSED = 4; } // Output only. The format of the attestation data. diff --git a/google-api-grpc/proto-google-cloud-language-v1/pom.xml b/google-api-grpc/proto-google-cloud-language-v1/pom.xml index 5639d79a7709..865e6dcc18c1 100644 --- a/google-api-grpc/proto-google-cloud-language-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-language-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-language-v1 - 1.44.1-SNAPSHOT + 1.45.0 proto-google-cloud-language-v1 PROTO library for proto-google-cloud-language-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-language-v1beta2/pom.xml b/google-api-grpc/proto-google-cloud-language-v1beta2/pom.xml index 8342be86c5bb..a8a438855b80 100644 --- a/google-api-grpc/proto-google-cloud-language-v1beta2/pom.xml +++ b/google-api-grpc/proto-google-cloud-language-v1beta2/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-language-v1beta2 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-language-v1beta2 PROTO library for proto-google-cloud-language-v1beta2 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-logging-v2/pom.xml b/google-api-grpc/proto-google-cloud-logging-v2/pom.xml index 1fc74a167227..ac49735d94df 100644 --- a/google-api-grpc/proto-google-cloud-logging-v2/pom.xml +++ b/google-api-grpc/proto-google-cloud-logging-v2/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-logging-v2 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-logging-v2 PROTO library for proto-google-cloud-logging-v2 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-monitoring-v3/pom.xml b/google-api-grpc/proto-google-cloud-monitoring-v3/pom.xml index a5e3fc19308b..4fbf48c8b3c2 100644 --- a/google-api-grpc/proto-google-cloud-monitoring-v3/pom.xml +++ b/google-api-grpc/proto-google-cloud-monitoring-v3/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-monitoring-v3 - 1.44.1-SNAPSHOT + 1.45.0 proto-google-cloud-monitoring-v3 PROTO library for proto-google-cloud-monitoring-v3 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-os-login-v1/pom.xml b/google-api-grpc/proto-google-cloud-os-login-v1/pom.xml index d6b2abf662f0..413dc3fe3c7d 100644 --- a/google-api-grpc/proto-google-cloud-os-login-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-os-login-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-os-login-v1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-os-login-v1 PROTO library for proto-google-cloud-os-login-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-pubsub-v1/pom.xml b/google-api-grpc/proto-google-cloud-pubsub-v1/pom.xml index a0510c1e3122..8d032dd4ac70 100644 --- a/google-api-grpc/proto-google-cloud-pubsub-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-pubsub-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-pubsub-v1 - 1.44.1-SNAPSHOT + 1.45.0 proto-google-cloud-pubsub-v1 PROTO library for proto-google-cloud-pubsub-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-redis-v1/pom.xml b/google-api-grpc/proto-google-cloud-redis-v1/pom.xml index 9c0205cbbf40..bea34da28877 100644 --- a/google-api-grpc/proto-google-cloud-redis-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-redis-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-redis-v1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-redis-v1 PROTO library for proto-google-cloud-redis-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-redis-v1beta1/pom.xml b/google-api-grpc/proto-google-cloud-redis-v1beta1/pom.xml index c0ed1e639188..f0d6e2f21204 100644 --- a/google-api-grpc/proto-google-cloud-redis-v1beta1/pom.xml +++ b/google-api-grpc/proto-google-cloud-redis-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-redis-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-redis-v1beta1 PROTO library for proto-google-cloud-redis-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-scheduler-v1beta1/pom.xml b/google-api-grpc/proto-google-cloud-scheduler-v1beta1/pom.xml index 34d139203298..c7e654c3da8d 100644 --- a/google-api-grpc/proto-google-cloud-scheduler-v1beta1/pom.xml +++ b/google-api-grpc/proto-google-cloud-scheduler-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-scheduler-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-scheduler-v1beta1 PROTO library for proto-google-cloud-redis-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-securitycenter-v1beta1/pom.xml b/google-api-grpc/proto-google-cloud-securitycenter-v1beta1/pom.xml index f9af4481df88..44e46ac9085c 100644 --- a/google-api-grpc/proto-google-cloud-securitycenter-v1beta1/pom.xml +++ b/google-api-grpc/proto-google-cloud-securitycenter-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-securitycenter-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-securitycenter-v1beta1 PROTO library for proto-google-cloud-securitycenter-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-spanner-admin-database-v1/pom.xml b/google-api-grpc/proto-google-cloud-spanner-admin-database-v1/pom.xml index 74edd647afdf..1b1d722cb1ca 100644 --- a/google-api-grpc/proto-google-cloud-spanner-admin-database-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-spanner-admin-database-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-spanner-admin-database-v1 - 1.7.1-SNAPSHOT + 1.8.0 proto-google-cloud-spanner-admin-database-v1 PROTO library for proto-google-cloud-spanner-admin-database-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-spanner-admin-instance-v1/pom.xml b/google-api-grpc/proto-google-cloud-spanner-admin-instance-v1/pom.xml index f67b0eb0cff4..dbd2e497a589 100644 --- a/google-api-grpc/proto-google-cloud-spanner-admin-instance-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-spanner-admin-instance-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-spanner-admin-instance-v1 - 1.7.1-SNAPSHOT + 1.8.0 proto-google-cloud-spanner-admin-instance-v1 PROTO library for proto-google-cloud-spanner-admin-instance-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-spanner-v1/pom.xml b/google-api-grpc/proto-google-cloud-spanner-v1/pom.xml index fde9fc93cd9e..1f5f5e2dff44 100644 --- a/google-api-grpc/proto-google-cloud-spanner-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-spanner-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-spanner-v1 - 1.7.1-SNAPSHOT + 1.8.0 proto-google-cloud-spanner-v1 PROTO library for proto-google-cloud-spanner-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequest.java b/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequest.java new file mode 100644 index 000000000000..5832f27b8f19 --- /dev/null +++ b/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequest.java @@ -0,0 +1,3128 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/v1/spanner.proto + +package com.google.spanner.v1; + +/** + * + * + *
+ * The request for [ExecuteBatchDml][google.spanner.v1.Spanner.ExecuteBatchDml]
+ * 
+ * + * Protobuf type {@code google.spanner.v1.ExecuteBatchDmlRequest} + */ +public final class ExecuteBatchDmlRequest extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.ExecuteBatchDmlRequest) + ExecuteBatchDmlRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use ExecuteBatchDmlRequest.newBuilder() to construct. + private ExecuteBatchDmlRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ExecuteBatchDmlRequest() { + session_ = ""; + statements_ = java.util.Collections.emptyList(); + seqno_ = 0L; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private ExecuteBatchDmlRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + java.lang.String s = input.readStringRequireUtf8(); + + session_ = s; + break; + } + case 18: + { + com.google.spanner.v1.TransactionSelector.Builder subBuilder = null; + if (transaction_ != null) { + subBuilder = transaction_.toBuilder(); + } + transaction_ = + input.readMessage( + com.google.spanner.v1.TransactionSelector.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(transaction_); + transaction_ = subBuilder.buildPartial(); + } + + break; + } + case 26: + { + if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + statements_ = + new java.util.ArrayList< + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement>(); + mutable_bitField0_ |= 0x00000004; + } + statements_.add( + input.readMessage( + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.parser(), + extensionRegistry)); + break; + } + case 32: + { + seqno_ = input.readInt64(); + break; + } + default: + { + if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + statements_ = java.util.Collections.unmodifiableList(statements_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ExecuteBatchDmlRequest.class, + com.google.spanner.v1.ExecuteBatchDmlRequest.Builder.class); + } + + public interface StatementOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.ExecuteBatchDmlRequest.Statement) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+     * Required. The DML string.
+     * 
+ * + * string sql = 1; + */ + java.lang.String getSql(); + /** + * + * + *
+     * Required. The DML string.
+     * 
+ * + * string sql = 1; + */ + com.google.protobuf.ByteString getSqlBytes(); + + /** + * + * + *
+     * The DML string can contain parameter placeholders. A parameter
+     * placeholder consists of `'@'` followed by the parameter
+     * name. Parameter names consist of any combination of letters,
+     * numbers, and underscores.
+     * Parameters can appear anywhere that a literal value is expected.  The
+     * same parameter name can be used more than once, for example:
+     *   `"WHERE id > @msg_id AND id < @msg_id + 100"`
+     * It is an error to execute an SQL statement with unbound parameters.
+     * Parameter values are specified using `params`, which is a JSON
+     * object whose keys are parameter names, and whose values are the
+     * corresponding parameter values.
+     * 
+ * + * .google.protobuf.Struct params = 2; + */ + boolean hasParams(); + /** + * + * + *
+     * The DML string can contain parameter placeholders. A parameter
+     * placeholder consists of `'@'` followed by the parameter
+     * name. Parameter names consist of any combination of letters,
+     * numbers, and underscores.
+     * Parameters can appear anywhere that a literal value is expected.  The
+     * same parameter name can be used more than once, for example:
+     *   `"WHERE id > @msg_id AND id < @msg_id + 100"`
+     * It is an error to execute an SQL statement with unbound parameters.
+     * Parameter values are specified using `params`, which is a JSON
+     * object whose keys are parameter names, and whose values are the
+     * corresponding parameter values.
+     * 
+ * + * .google.protobuf.Struct params = 2; + */ + com.google.protobuf.Struct getParams(); + /** + * + * + *
+     * The DML string can contain parameter placeholders. A parameter
+     * placeholder consists of `'@'` followed by the parameter
+     * name. Parameter names consist of any combination of letters,
+     * numbers, and underscores.
+     * Parameters can appear anywhere that a literal value is expected.  The
+     * same parameter name can be used more than once, for example:
+     *   `"WHERE id > @msg_id AND id < @msg_id + 100"`
+     * It is an error to execute an SQL statement with unbound parameters.
+     * Parameter values are specified using `params`, which is a JSON
+     * object whose keys are parameter names, and whose values are the
+     * corresponding parameter values.
+     * 
+ * + * .google.protobuf.Struct params = 2; + */ + com.google.protobuf.StructOrBuilder getParamsOrBuilder(); + + /** + * + * + *
+     * It is not always possible for Cloud Spanner to infer the right SQL type
+     * from a JSON value.  For example, values of type `BYTES` and values
+     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * In these cases, `param_types` can be used to specify the exact
+     * SQL type for some or all of the SQL statement parameters. See the
+     * definition of [Type][google.spanner.v1.Type] for more information
+     * about SQL types.
+     * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + int getParamTypesCount(); + /** + * + * + *
+     * It is not always possible for Cloud Spanner to infer the right SQL type
+     * from a JSON value.  For example, values of type `BYTES` and values
+     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * In these cases, `param_types` can be used to specify the exact
+     * SQL type for some or all of the SQL statement parameters. See the
+     * definition of [Type][google.spanner.v1.Type] for more information
+     * about SQL types.
+     * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + boolean containsParamTypes(java.lang.String key); + /** Use {@link #getParamTypesMap()} instead. */ + @java.lang.Deprecated + java.util.Map getParamTypes(); + /** + * + * + *
+     * It is not always possible for Cloud Spanner to infer the right SQL type
+     * from a JSON value.  For example, values of type `BYTES` and values
+     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * In these cases, `param_types` can be used to specify the exact
+     * SQL type for some or all of the SQL statement parameters. See the
+     * definition of [Type][google.spanner.v1.Type] for more information
+     * about SQL types.
+     * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + java.util.Map getParamTypesMap(); + /** + * + * + *
+     * It is not always possible for Cloud Spanner to infer the right SQL type
+     * from a JSON value.  For example, values of type `BYTES` and values
+     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * In these cases, `param_types` can be used to specify the exact
+     * SQL type for some or all of the SQL statement parameters. See the
+     * definition of [Type][google.spanner.v1.Type] for more information
+     * about SQL types.
+     * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + com.google.spanner.v1.Type getParamTypesOrDefault( + java.lang.String key, com.google.spanner.v1.Type defaultValue); + /** + * + * + *
+     * It is not always possible for Cloud Spanner to infer the right SQL type
+     * from a JSON value.  For example, values of type `BYTES` and values
+     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * In these cases, `param_types` can be used to specify the exact
+     * SQL type for some or all of the SQL statement parameters. See the
+     * definition of [Type][google.spanner.v1.Type] for more information
+     * about SQL types.
+     * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + com.google.spanner.v1.Type getParamTypesOrThrow(java.lang.String key); + } + /** + * + * + *
+   * A single DML statement.
+   * 
+ * + * Protobuf type {@code google.spanner.v1.ExecuteBatchDmlRequest.Statement} + */ + public static final class Statement extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.ExecuteBatchDmlRequest.Statement) + StatementOrBuilder { + private static final long serialVersionUID = 0L; + // Use Statement.newBuilder() to construct. + private Statement(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private Statement() { + sql_ = ""; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private Statement( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + java.lang.String s = input.readStringRequireUtf8(); + + sql_ = s; + break; + } + case 18: + { + com.google.protobuf.Struct.Builder subBuilder = null; + if (params_ != null) { + subBuilder = params_.toBuilder(); + } + params_ = input.readMessage(com.google.protobuf.Struct.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(params_); + params_ = subBuilder.buildPartial(); + } + + break; + } + case 26: + { + if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + paramTypes_ = + com.google.protobuf.MapField.newMapField( + ParamTypesDefaultEntryHolder.defaultEntry); + mutable_bitField0_ |= 0x00000004; + } + com.google.protobuf.MapEntry + paramTypes__ = + input.readMessage( + ParamTypesDefaultEntryHolder.defaultEntry.getParserForType(), + extensionRegistry); + paramTypes_.getMutableMap().put(paramTypes__.getKey(), paramTypes__.getValue()); + break; + } + default: + { + if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + @java.lang.Override + protected com.google.protobuf.MapField internalGetMapField(int number) { + switch (number) { + case 3: + return internalGetParamTypes(); + default: + throw new RuntimeException("Invalid map field number: " + number); + } + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.class, + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder.class); + } + + private int bitField0_; + public static final int SQL_FIELD_NUMBER = 1; + private volatile java.lang.Object sql_; + /** + * + * + *
+     * Required. The DML string.
+     * 
+ * + * string sql = 1; + */ + public java.lang.String getSql() { + java.lang.Object ref = sql_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + sql_ = s; + return s; + } + } + /** + * + * + *
+     * Required. The DML string.
+     * 
+ * + * string sql = 1; + */ + public com.google.protobuf.ByteString getSqlBytes() { + java.lang.Object ref = sql_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + sql_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int PARAMS_FIELD_NUMBER = 2; + private com.google.protobuf.Struct params_; + /** + * + * + *
+     * The DML string can contain parameter placeholders. A parameter
+     * placeholder consists of `'@'` followed by the parameter
+     * name. Parameter names consist of any combination of letters,
+     * numbers, and underscores.
+     * Parameters can appear anywhere that a literal value is expected.  The
+     * same parameter name can be used more than once, for example:
+     *   `"WHERE id > @msg_id AND id < @msg_id + 100"`
+     * It is an error to execute an SQL statement with unbound parameters.
+     * Parameter values are specified using `params`, which is a JSON
+     * object whose keys are parameter names, and whose values are the
+     * corresponding parameter values.
+     * 
+ * + * .google.protobuf.Struct params = 2; + */ + public boolean hasParams() { + return params_ != null; + } + /** + * + * + *
+     * The DML string can contain parameter placeholders. A parameter
+     * placeholder consists of `'@'` followed by the parameter
+     * name. Parameter names consist of any combination of letters,
+     * numbers, and underscores.
+     * Parameters can appear anywhere that a literal value is expected.  The
+     * same parameter name can be used more than once, for example:
+     *   `"WHERE id > @msg_id AND id < @msg_id + 100"`
+     * It is an error to execute an SQL statement with unbound parameters.
+     * Parameter values are specified using `params`, which is a JSON
+     * object whose keys are parameter names, and whose values are the
+     * corresponding parameter values.
+     * 
+ * + * .google.protobuf.Struct params = 2; + */ + public com.google.protobuf.Struct getParams() { + return params_ == null ? com.google.protobuf.Struct.getDefaultInstance() : params_; + } + /** + * + * + *
+     * The DML string can contain parameter placeholders. A parameter
+     * placeholder consists of `'@'` followed by the parameter
+     * name. Parameter names consist of any combination of letters,
+     * numbers, and underscores.
+     * Parameters can appear anywhere that a literal value is expected.  The
+     * same parameter name can be used more than once, for example:
+     *   `"WHERE id > @msg_id AND id < @msg_id + 100"`
+     * It is an error to execute an SQL statement with unbound parameters.
+     * Parameter values are specified using `params`, which is a JSON
+     * object whose keys are parameter names, and whose values are the
+     * corresponding parameter values.
+     * 
+ * + * .google.protobuf.Struct params = 2; + */ + public com.google.protobuf.StructOrBuilder getParamsOrBuilder() { + return getParams(); + } + + public static final int PARAM_TYPES_FIELD_NUMBER = 3; + + private static final class ParamTypesDefaultEntryHolder { + static final com.google.protobuf.MapEntry + defaultEntry = + com.google.protobuf.MapEntry + .newDefaultInstance( + com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_ParamTypesEntry_descriptor, + com.google.protobuf.WireFormat.FieldType.STRING, + "", + com.google.protobuf.WireFormat.FieldType.MESSAGE, + com.google.spanner.v1.Type.getDefaultInstance()); + } + + private com.google.protobuf.MapField paramTypes_; + + private com.google.protobuf.MapField + internalGetParamTypes() { + if (paramTypes_ == null) { + return com.google.protobuf.MapField.emptyMapField( + ParamTypesDefaultEntryHolder.defaultEntry); + } + return paramTypes_; + } + + public int getParamTypesCount() { + return internalGetParamTypes().getMap().size(); + } + /** + * + * + *
+     * It is not always possible for Cloud Spanner to infer the right SQL type
+     * from a JSON value.  For example, values of type `BYTES` and values
+     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * In these cases, `param_types` can be used to specify the exact
+     * SQL type for some or all of the SQL statement parameters. See the
+     * definition of [Type][google.spanner.v1.Type] for more information
+     * about SQL types.
+     * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + public boolean containsParamTypes(java.lang.String key) { + if (key == null) { + throw new java.lang.NullPointerException(); + } + return internalGetParamTypes().getMap().containsKey(key); + } + /** Use {@link #getParamTypesMap()} instead. */ + @java.lang.Deprecated + public java.util.Map getParamTypes() { + return getParamTypesMap(); + } + /** + * + * + *
+     * It is not always possible for Cloud Spanner to infer the right SQL type
+     * from a JSON value.  For example, values of type `BYTES` and values
+     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * In these cases, `param_types` can be used to specify the exact
+     * SQL type for some or all of the SQL statement parameters. See the
+     * definition of [Type][google.spanner.v1.Type] for more information
+     * about SQL types.
+     * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + public java.util.Map getParamTypesMap() { + return internalGetParamTypes().getMap(); + } + /** + * + * + *
+     * It is not always possible for Cloud Spanner to infer the right SQL type
+     * from a JSON value.  For example, values of type `BYTES` and values
+     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * In these cases, `param_types` can be used to specify the exact
+     * SQL type for some or all of the SQL statement parameters. See the
+     * definition of [Type][google.spanner.v1.Type] for more information
+     * about SQL types.
+     * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + public com.google.spanner.v1.Type getParamTypesOrDefault( + java.lang.String key, com.google.spanner.v1.Type defaultValue) { + if (key == null) { + throw new java.lang.NullPointerException(); + } + java.util.Map map = + internalGetParamTypes().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * + * + *
+     * It is not always possible for Cloud Spanner to infer the right SQL type
+     * from a JSON value.  For example, values of type `BYTES` and values
+     * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+     * In these cases, `param_types` can be used to specify the exact
+     * SQL type for some or all of the SQL statement parameters. See the
+     * definition of [Type][google.spanner.v1.Type] for more information
+     * about SQL types.
+     * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + public com.google.spanner.v1.Type getParamTypesOrThrow(java.lang.String key) { + if (key == null) { + throw new java.lang.NullPointerException(); + } + java.util.Map map = + internalGetParamTypes().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!getSqlBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, sql_); + } + if (params_ != null) { + output.writeMessage(2, getParams()); + } + com.google.protobuf.GeneratedMessageV3.serializeStringMapTo( + output, internalGetParamTypes(), ParamTypesDefaultEntryHolder.defaultEntry, 3); + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getSqlBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, sql_); + } + if (params_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getParams()); + } + for (java.util.Map.Entry entry : + internalGetParamTypes().getMap().entrySet()) { + com.google.protobuf.MapEntry paramTypes__ = + ParamTypesDefaultEntryHolder.defaultEntry + .newBuilderForType() + .setKey(entry.getKey()) + .setValue(entry.getValue()) + .build(); + size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, paramTypes__); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.v1.ExecuteBatchDmlRequest.Statement)) { + return super.equals(obj); + } + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement other = + (com.google.spanner.v1.ExecuteBatchDmlRequest.Statement) obj; + + boolean result = true; + result = result && getSql().equals(other.getSql()); + result = result && (hasParams() == other.hasParams()); + if (hasParams()) { + result = result && getParams().equals(other.getParams()); + } + result = result && internalGetParamTypes().equals(other.internalGetParamTypes()); + result = result && unknownFields.equals(other.unknownFields); + return result; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SQL_FIELD_NUMBER; + hash = (53 * hash) + getSql().hashCode(); + if (hasParams()) { + hash = (37 * hash) + PARAMS_FIELD_NUMBER; + hash = (53 * hash) + getParams().hashCode(); + } + if (!internalGetParamTypes().getMap().isEmpty()) { + hash = (37 * hash) + PARAM_TYPES_FIELD_NUMBER; + hash = (53 * hash) + internalGetParamTypes().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest.Statement parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest.Statement parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest.Statement parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest.Statement parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest.Statement parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest.Statement parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest.Statement parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest.Statement parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest.Statement parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest.Statement parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest.Statement parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest.Statement parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+     * A single DML statement.
+     * 
+ * + * Protobuf type {@code google.spanner.v1.ExecuteBatchDmlRequest.Statement} + */ + public static final class Builder + extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.ExecuteBatchDmlRequest.Statement) + com.google.spanner.v1.ExecuteBatchDmlRequest.StatementOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMapField(int number) { + switch (number) { + case 3: + return internalGetParamTypes(); + default: + throw new RuntimeException("Invalid map field number: " + number); + } + } + + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMutableMapField(int number) { + switch (number) { + case 3: + return internalGetMutableParamTypes(); + default: + throw new RuntimeException("Invalid map field number: " + number); + } + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.class, + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder.class); + } + + // Construct using com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} + } + + @java.lang.Override + public Builder clear() { + super.clear(); + sql_ = ""; + + if (paramsBuilder_ == null) { + params_ = null; + } else { + params_ = null; + paramsBuilder_ = null; + } + internalGetMutableParamTypes().clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement getDefaultInstanceForType() { + return com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement build() { + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement buildPartial() { + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement result = + new com.google.spanner.v1.ExecuteBatchDmlRequest.Statement(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + result.sql_ = sql_; + if (paramsBuilder_ == null) { + result.params_ = params_; + } else { + result.params_ = paramsBuilder_.build(); + } + result.paramTypes_ = internalGetParamTypes(); + result.paramTypes_.makeImmutable(); + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return (Builder) super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return (Builder) super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return (Builder) super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, + java.lang.Object value) { + return (Builder) super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.v1.ExecuteBatchDmlRequest.Statement) { + return mergeFrom((com.google.spanner.v1.ExecuteBatchDmlRequest.Statement) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.v1.ExecuteBatchDmlRequest.Statement other) { + if (other == com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.getDefaultInstance()) + return this; + if (!other.getSql().isEmpty()) { + sql_ = other.sql_; + onChanged(); + } + if (other.hasParams()) { + mergeParams(other.getParams()); + } + internalGetMutableParamTypes().mergeFrom(other.internalGetParamTypes()); + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = + (com.google.spanner.v1.ExecuteBatchDmlRequest.Statement) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int bitField0_; + + private java.lang.Object sql_ = ""; + /** + * + * + *
+       * Required. The DML string.
+       * 
+ * + * string sql = 1; + */ + public java.lang.String getSql() { + java.lang.Object ref = sql_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + sql_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+       * Required. The DML string.
+       * 
+ * + * string sql = 1; + */ + public com.google.protobuf.ByteString getSqlBytes() { + java.lang.Object ref = sql_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + sql_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+       * Required. The DML string.
+       * 
+ * + * string sql = 1; + */ + public Builder setSql(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + sql_ = value; + onChanged(); + return this; + } + /** + * + * + *
+       * Required. The DML string.
+       * 
+ * + * string sql = 1; + */ + public Builder clearSql() { + + sql_ = getDefaultInstance().getSql(); + onChanged(); + return this; + } + /** + * + * + *
+       * Required. The DML string.
+       * 
+ * + * string sql = 1; + */ + public Builder setSqlBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + sql_ = value; + onChanged(); + return this; + } + + private com.google.protobuf.Struct params_ = null; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Struct, + com.google.protobuf.Struct.Builder, + com.google.protobuf.StructOrBuilder> + paramsBuilder_; + /** + * + * + *
+       * The DML string can contain parameter placeholders. A parameter
+       * placeholder consists of `'@'` followed by the parameter
+       * name. Parameter names consist of any combination of letters,
+       * numbers, and underscores.
+       * Parameters can appear anywhere that a literal value is expected.  The
+       * same parameter name can be used more than once, for example:
+       *   `"WHERE id > @msg_id AND id < @msg_id + 100"`
+       * It is an error to execute an SQL statement with unbound parameters.
+       * Parameter values are specified using `params`, which is a JSON
+       * object whose keys are parameter names, and whose values are the
+       * corresponding parameter values.
+       * 
+ * + * .google.protobuf.Struct params = 2; + */ + public boolean hasParams() { + return paramsBuilder_ != null || params_ != null; + } + /** + * + * + *
+       * The DML string can contain parameter placeholders. A parameter
+       * placeholder consists of `'@'` followed by the parameter
+       * name. Parameter names consist of any combination of letters,
+       * numbers, and underscores.
+       * Parameters can appear anywhere that a literal value is expected.  The
+       * same parameter name can be used more than once, for example:
+       *   `"WHERE id > @msg_id AND id < @msg_id + 100"`
+       * It is an error to execute an SQL statement with unbound parameters.
+       * Parameter values are specified using `params`, which is a JSON
+       * object whose keys are parameter names, and whose values are the
+       * corresponding parameter values.
+       * 
+ * + * .google.protobuf.Struct params = 2; + */ + public com.google.protobuf.Struct getParams() { + if (paramsBuilder_ == null) { + return params_ == null ? com.google.protobuf.Struct.getDefaultInstance() : params_; + } else { + return paramsBuilder_.getMessage(); + } + } + /** + * + * + *
+       * The DML string can contain parameter placeholders. A parameter
+       * placeholder consists of `'@'` followed by the parameter
+       * name. Parameter names consist of any combination of letters,
+       * numbers, and underscores.
+       * Parameters can appear anywhere that a literal value is expected.  The
+       * same parameter name can be used more than once, for example:
+       *   `"WHERE id > @msg_id AND id < @msg_id + 100"`
+       * It is an error to execute an SQL statement with unbound parameters.
+       * Parameter values are specified using `params`, which is a JSON
+       * object whose keys are parameter names, and whose values are the
+       * corresponding parameter values.
+       * 
+ * + * .google.protobuf.Struct params = 2; + */ + public Builder setParams(com.google.protobuf.Struct value) { + if (paramsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + params_ = value; + onChanged(); + } else { + paramsBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+       * The DML string can contain parameter placeholders. A parameter
+       * placeholder consists of `'@'` followed by the parameter
+       * name. Parameter names consist of any combination of letters,
+       * numbers, and underscores.
+       * Parameters can appear anywhere that a literal value is expected.  The
+       * same parameter name can be used more than once, for example:
+       *   `"WHERE id > @msg_id AND id < @msg_id + 100"`
+       * It is an error to execute an SQL statement with unbound parameters.
+       * Parameter values are specified using `params`, which is a JSON
+       * object whose keys are parameter names, and whose values are the
+       * corresponding parameter values.
+       * 
+ * + * .google.protobuf.Struct params = 2; + */ + public Builder setParams(com.google.protobuf.Struct.Builder builderForValue) { + if (paramsBuilder_ == null) { + params_ = builderForValue.build(); + onChanged(); + } else { + paramsBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+       * The DML string can contain parameter placeholders. A parameter
+       * placeholder consists of `'@'` followed by the parameter
+       * name. Parameter names consist of any combination of letters,
+       * numbers, and underscores.
+       * Parameters can appear anywhere that a literal value is expected.  The
+       * same parameter name can be used more than once, for example:
+       *   `"WHERE id > @msg_id AND id < @msg_id + 100"`
+       * It is an error to execute an SQL statement with unbound parameters.
+       * Parameter values are specified using `params`, which is a JSON
+       * object whose keys are parameter names, and whose values are the
+       * corresponding parameter values.
+       * 
+ * + * .google.protobuf.Struct params = 2; + */ + public Builder mergeParams(com.google.protobuf.Struct value) { + if (paramsBuilder_ == null) { + if (params_ != null) { + params_ = + com.google.protobuf.Struct.newBuilder(params_).mergeFrom(value).buildPartial(); + } else { + params_ = value; + } + onChanged(); + } else { + paramsBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+       * The DML string can contain parameter placeholders. A parameter
+       * placeholder consists of `'@'` followed by the parameter
+       * name. Parameter names consist of any combination of letters,
+       * numbers, and underscores.
+       * Parameters can appear anywhere that a literal value is expected.  The
+       * same parameter name can be used more than once, for example:
+       *   `"WHERE id > @msg_id AND id < @msg_id + 100"`
+       * It is an error to execute an SQL statement with unbound parameters.
+       * Parameter values are specified using `params`, which is a JSON
+       * object whose keys are parameter names, and whose values are the
+       * corresponding parameter values.
+       * 
+ * + * .google.protobuf.Struct params = 2; + */ + public Builder clearParams() { + if (paramsBuilder_ == null) { + params_ = null; + onChanged(); + } else { + params_ = null; + paramsBuilder_ = null; + } + + return this; + } + /** + * + * + *
+       * The DML string can contain parameter placeholders. A parameter
+       * placeholder consists of `'@'` followed by the parameter
+       * name. Parameter names consist of any combination of letters,
+       * numbers, and underscores.
+       * Parameters can appear anywhere that a literal value is expected.  The
+       * same parameter name can be used more than once, for example:
+       *   `"WHERE id > @msg_id AND id < @msg_id + 100"`
+       * It is an error to execute an SQL statement with unbound parameters.
+       * Parameter values are specified using `params`, which is a JSON
+       * object whose keys are parameter names, and whose values are the
+       * corresponding parameter values.
+       * 
+ * + * .google.protobuf.Struct params = 2; + */ + public com.google.protobuf.Struct.Builder getParamsBuilder() { + + onChanged(); + return getParamsFieldBuilder().getBuilder(); + } + /** + * + * + *
+       * The DML string can contain parameter placeholders. A parameter
+       * placeholder consists of `'@'` followed by the parameter
+       * name. Parameter names consist of any combination of letters,
+       * numbers, and underscores.
+       * Parameters can appear anywhere that a literal value is expected.  The
+       * same parameter name can be used more than once, for example:
+       *   `"WHERE id > @msg_id AND id < @msg_id + 100"`
+       * It is an error to execute an SQL statement with unbound parameters.
+       * Parameter values are specified using `params`, which is a JSON
+       * object whose keys are parameter names, and whose values are the
+       * corresponding parameter values.
+       * 
+ * + * .google.protobuf.Struct params = 2; + */ + public com.google.protobuf.StructOrBuilder getParamsOrBuilder() { + if (paramsBuilder_ != null) { + return paramsBuilder_.getMessageOrBuilder(); + } else { + return params_ == null ? com.google.protobuf.Struct.getDefaultInstance() : params_; + } + } + /** + * + * + *
+       * The DML string can contain parameter placeholders. A parameter
+       * placeholder consists of `'@'` followed by the parameter
+       * name. Parameter names consist of any combination of letters,
+       * numbers, and underscores.
+       * Parameters can appear anywhere that a literal value is expected.  The
+       * same parameter name can be used more than once, for example:
+       *   `"WHERE id > @msg_id AND id < @msg_id + 100"`
+       * It is an error to execute an SQL statement with unbound parameters.
+       * Parameter values are specified using `params`, which is a JSON
+       * object whose keys are parameter names, and whose values are the
+       * corresponding parameter values.
+       * 
+ * + * .google.protobuf.Struct params = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Struct, + com.google.protobuf.Struct.Builder, + com.google.protobuf.StructOrBuilder> + getParamsFieldBuilder() { + if (paramsBuilder_ == null) { + paramsBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Struct, + com.google.protobuf.Struct.Builder, + com.google.protobuf.StructOrBuilder>( + getParams(), getParentForChildren(), isClean()); + params_ = null; + } + return paramsBuilder_; + } + + private com.google.protobuf.MapField + paramTypes_; + + private com.google.protobuf.MapField + internalGetParamTypes() { + if (paramTypes_ == null) { + return com.google.protobuf.MapField.emptyMapField( + ParamTypesDefaultEntryHolder.defaultEntry); + } + return paramTypes_; + } + + private com.google.protobuf.MapField + internalGetMutableParamTypes() { + onChanged(); + ; + if (paramTypes_ == null) { + paramTypes_ = + com.google.protobuf.MapField.newMapField(ParamTypesDefaultEntryHolder.defaultEntry); + } + if (!paramTypes_.isMutable()) { + paramTypes_ = paramTypes_.copy(); + } + return paramTypes_; + } + + public int getParamTypesCount() { + return internalGetParamTypes().getMap().size(); + } + /** + * + * + *
+       * It is not always possible for Cloud Spanner to infer the right SQL type
+       * from a JSON value.  For example, values of type `BYTES` and values
+       * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+       * In these cases, `param_types` can be used to specify the exact
+       * SQL type for some or all of the SQL statement parameters. See the
+       * definition of [Type][google.spanner.v1.Type] for more information
+       * about SQL types.
+       * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + public boolean containsParamTypes(java.lang.String key) { + if (key == null) { + throw new java.lang.NullPointerException(); + } + return internalGetParamTypes().getMap().containsKey(key); + } + /** Use {@link #getParamTypesMap()} instead. */ + @java.lang.Deprecated + public java.util.Map getParamTypes() { + return getParamTypesMap(); + } + /** + * + * + *
+       * It is not always possible for Cloud Spanner to infer the right SQL type
+       * from a JSON value.  For example, values of type `BYTES` and values
+       * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+       * In these cases, `param_types` can be used to specify the exact
+       * SQL type for some or all of the SQL statement parameters. See the
+       * definition of [Type][google.spanner.v1.Type] for more information
+       * about SQL types.
+       * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + public java.util.Map getParamTypesMap() { + return internalGetParamTypes().getMap(); + } + /** + * + * + *
+       * It is not always possible for Cloud Spanner to infer the right SQL type
+       * from a JSON value.  For example, values of type `BYTES` and values
+       * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+       * In these cases, `param_types` can be used to specify the exact
+       * SQL type for some or all of the SQL statement parameters. See the
+       * definition of [Type][google.spanner.v1.Type] for more information
+       * about SQL types.
+       * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + public com.google.spanner.v1.Type getParamTypesOrDefault( + java.lang.String key, com.google.spanner.v1.Type defaultValue) { + if (key == null) { + throw new java.lang.NullPointerException(); + } + java.util.Map map = + internalGetParamTypes().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * + * + *
+       * It is not always possible for Cloud Spanner to infer the right SQL type
+       * from a JSON value.  For example, values of type `BYTES` and values
+       * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+       * In these cases, `param_types` can be used to specify the exact
+       * SQL type for some or all of the SQL statement parameters. See the
+       * definition of [Type][google.spanner.v1.Type] for more information
+       * about SQL types.
+       * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + public com.google.spanner.v1.Type getParamTypesOrThrow(java.lang.String key) { + if (key == null) { + throw new java.lang.NullPointerException(); + } + java.util.Map map = + internalGetParamTypes().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public Builder clearParamTypes() { + internalGetMutableParamTypes().getMutableMap().clear(); + return this; + } + /** + * + * + *
+       * It is not always possible for Cloud Spanner to infer the right SQL type
+       * from a JSON value.  For example, values of type `BYTES` and values
+       * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+       * In these cases, `param_types` can be used to specify the exact
+       * SQL type for some or all of the SQL statement parameters. See the
+       * definition of [Type][google.spanner.v1.Type] for more information
+       * about SQL types.
+       * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + public Builder removeParamTypes(java.lang.String key) { + if (key == null) { + throw new java.lang.NullPointerException(); + } + internalGetMutableParamTypes().getMutableMap().remove(key); + return this; + } + /** Use alternate mutation accessors instead. */ + @java.lang.Deprecated + public java.util.Map getMutableParamTypes() { + return internalGetMutableParamTypes().getMutableMap(); + } + /** + * + * + *
+       * It is not always possible for Cloud Spanner to infer the right SQL type
+       * from a JSON value.  For example, values of type `BYTES` and values
+       * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+       * In these cases, `param_types` can be used to specify the exact
+       * SQL type for some or all of the SQL statement parameters. See the
+       * definition of [Type][google.spanner.v1.Type] for more information
+       * about SQL types.
+       * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + public Builder putParamTypes(java.lang.String key, com.google.spanner.v1.Type value) { + if (key == null) { + throw new java.lang.NullPointerException(); + } + if (value == null) { + throw new java.lang.NullPointerException(); + } + internalGetMutableParamTypes().getMutableMap().put(key, value); + return this; + } + /** + * + * + *
+       * It is not always possible for Cloud Spanner to infer the right SQL type
+       * from a JSON value.  For example, values of type `BYTES` and values
+       * of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings.
+       * In these cases, `param_types` can be used to specify the exact
+       * SQL type for some or all of the SQL statement parameters. See the
+       * definition of [Type][google.spanner.v1.Type] for more information
+       * about SQL types.
+       * 
+ * + * map<string, .google.spanner.v1.Type> param_types = 3; + */ + public Builder putAllParamTypes( + java.util.Map values) { + internalGetMutableParamTypes().getMutableMap().putAll(values); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFieldsProto3(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.ExecuteBatchDmlRequest.Statement) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.ExecuteBatchDmlRequest.Statement) + private static final com.google.spanner.v1.ExecuteBatchDmlRequest.Statement DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.ExecuteBatchDmlRequest.Statement(); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest.Statement getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public Statement parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Statement(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + } + + private int bitField0_; + public static final int SESSION_FIELD_NUMBER = 1; + private volatile java.lang.Object session_; + /** + * + * + *
+   * Required. The session in which the DML statements should be performed.
+   * 
+ * + * string session = 1; + */ + public java.lang.String getSession() { + java.lang.Object ref = session_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + session_ = s; + return s; + } + } + /** + * + * + *
+   * Required. The session in which the DML statements should be performed.
+   * 
+ * + * string session = 1; + */ + public com.google.protobuf.ByteString getSessionBytes() { + java.lang.Object ref = session_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + session_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int TRANSACTION_FIELD_NUMBER = 2; + private com.google.spanner.v1.TransactionSelector transaction_; + /** + * + * + *
+   * The transaction to use. A ReadWrite transaction is required. Single-use
+   * transactions are not supported (to avoid replay).  The caller must either
+   * supply an existing transaction ID or begin a new transaction.
+   * 
+ * + * .google.spanner.v1.TransactionSelector transaction = 2; + */ + public boolean hasTransaction() { + return transaction_ != null; + } + /** + * + * + *
+   * The transaction to use. A ReadWrite transaction is required. Single-use
+   * transactions are not supported (to avoid replay).  The caller must either
+   * supply an existing transaction ID or begin a new transaction.
+   * 
+ * + * .google.spanner.v1.TransactionSelector transaction = 2; + */ + public com.google.spanner.v1.TransactionSelector getTransaction() { + return transaction_ == null + ? com.google.spanner.v1.TransactionSelector.getDefaultInstance() + : transaction_; + } + /** + * + * + *
+   * The transaction to use. A ReadWrite transaction is required. Single-use
+   * transactions are not supported (to avoid replay).  The caller must either
+   * supply an existing transaction ID or begin a new transaction.
+   * 
+ * + * .google.spanner.v1.TransactionSelector transaction = 2; + */ + public com.google.spanner.v1.TransactionSelectorOrBuilder getTransactionOrBuilder() { + return getTransaction(); + } + + public static final int STATEMENTS_FIELD_NUMBER = 3; + private java.util.List statements_; + /** + * + * + *
+   * The list of statements to execute in this batch. Statements are executed
+   * serially, such that the effects of statement i are visible to statement
+   * i+1. Each statement must be a DML statement. Execution will stop at the
+   * first failed statement; the remaining statements will not run.
+   * REQUIRES: statements_size() > 0.
+   * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public java.util.List + getStatementsList() { + return statements_; + } + /** + * + * + *
+   * The list of statements to execute in this batch. Statements are executed
+   * serially, such that the effects of statement i are visible to statement
+   * i+1. Each statement must be a DML statement. Execution will stop at the
+   * first failed statement; the remaining statements will not run.
+   * REQUIRES: statements_size() > 0.
+   * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public java.util.List + getStatementsOrBuilderList() { + return statements_; + } + /** + * + * + *
+   * The list of statements to execute in this batch. Statements are executed
+   * serially, such that the effects of statement i are visible to statement
+   * i+1. Each statement must be a DML statement. Execution will stop at the
+   * first failed statement; the remaining statements will not run.
+   * REQUIRES: statements_size() > 0.
+   * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public int getStatementsCount() { + return statements_.size(); + } + /** + * + * + *
+   * The list of statements to execute in this batch. Statements are executed
+   * serially, such that the effects of statement i are visible to statement
+   * i+1. Each statement must be a DML statement. Execution will stop at the
+   * first failed statement; the remaining statements will not run.
+   * REQUIRES: statements_size() > 0.
+   * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement getStatements(int index) { + return statements_.get(index); + } + /** + * + * + *
+   * The list of statements to execute in this batch. Statements are executed
+   * serially, such that the effects of statement i are visible to statement
+   * i+1. Each statement must be a DML statement. Execution will stop at the
+   * first failed statement; the remaining statements will not run.
+   * REQUIRES: statements_size() > 0.
+   * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public com.google.spanner.v1.ExecuteBatchDmlRequest.StatementOrBuilder getStatementsOrBuilder( + int index) { + return statements_.get(index); + } + + public static final int SEQNO_FIELD_NUMBER = 4; + private long seqno_; + /** + * + * + *
+   * A per-transaction sequence number used to identify this request. This is
+   * used in the same space as the seqno in
+   * [ExecuteSqlRequest][Spanner.ExecuteSqlRequest]. See more details
+   * in [ExecuteSqlRequest][Spanner.ExecuteSqlRequest].
+   * 
+ * + * int64 seqno = 4; + */ + public long getSeqno() { + return seqno_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!getSessionBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, session_); + } + if (transaction_ != null) { + output.writeMessage(2, getTransaction()); + } + for (int i = 0; i < statements_.size(); i++) { + output.writeMessage(3, statements_.get(i)); + } + if (seqno_ != 0L) { + output.writeInt64(4, seqno_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getSessionBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, session_); + } + if (transaction_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTransaction()); + } + for (int i = 0; i < statements_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, statements_.get(i)); + } + if (seqno_ != 0L) { + size += com.google.protobuf.CodedOutputStream.computeInt64Size(4, seqno_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.v1.ExecuteBatchDmlRequest)) { + return super.equals(obj); + } + com.google.spanner.v1.ExecuteBatchDmlRequest other = + (com.google.spanner.v1.ExecuteBatchDmlRequest) obj; + + boolean result = true; + result = result && getSession().equals(other.getSession()); + result = result && (hasTransaction() == other.hasTransaction()); + if (hasTransaction()) { + result = result && getTransaction().equals(other.getTransaction()); + } + result = result && getStatementsList().equals(other.getStatementsList()); + result = result && (getSeqno() == other.getSeqno()); + result = result && unknownFields.equals(other.unknownFields); + return result; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SESSION_FIELD_NUMBER; + hash = (53 * hash) + getSession().hashCode(); + if (hasTransaction()) { + hash = (37 * hash) + TRANSACTION_FIELD_NUMBER; + hash = (53 * hash) + getTransaction().hashCode(); + } + if (getStatementsCount() > 0) { + hash = (37 * hash) + STATEMENTS_FIELD_NUMBER; + hash = (53 * hash) + getStatementsList().hashCode(); + } + hash = (37 * hash) + SEQNO_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getSeqno()); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.spanner.v1.ExecuteBatchDmlRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * The request for [ExecuteBatchDml][google.spanner.v1.Spanner.ExecuteBatchDml]
+   * 
+ * + * Protobuf type {@code google.spanner.v1.ExecuteBatchDmlRequest} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.ExecuteBatchDmlRequest) + com.google.spanner.v1.ExecuteBatchDmlRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ExecuteBatchDmlRequest.class, + com.google.spanner.v1.ExecuteBatchDmlRequest.Builder.class); + } + + // Construct using com.google.spanner.v1.ExecuteBatchDmlRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getStatementsFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + session_ = ""; + + if (transactionBuilder_ == null) { + transaction_ = null; + } else { + transaction_ = null; + transactionBuilder_ = null; + } + if (statementsBuilder_ == null) { + statements_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + } else { + statementsBuilder_.clear(); + } + seqno_ = 0L; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlRequest_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.ExecuteBatchDmlRequest getDefaultInstanceForType() { + return com.google.spanner.v1.ExecuteBatchDmlRequest.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.ExecuteBatchDmlRequest build() { + com.google.spanner.v1.ExecuteBatchDmlRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.ExecuteBatchDmlRequest buildPartial() { + com.google.spanner.v1.ExecuteBatchDmlRequest result = + new com.google.spanner.v1.ExecuteBatchDmlRequest(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + result.session_ = session_; + if (transactionBuilder_ == null) { + result.transaction_ = transaction_; + } else { + result.transaction_ = transactionBuilder_.build(); + } + if (statementsBuilder_ == null) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { + statements_ = java.util.Collections.unmodifiableList(statements_); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.statements_ = statements_; + } else { + result.statements_ = statementsBuilder_.build(); + } + result.seqno_ = seqno_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return (Builder) super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return (Builder) super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return (Builder) super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return (Builder) super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.v1.ExecuteBatchDmlRequest) { + return mergeFrom((com.google.spanner.v1.ExecuteBatchDmlRequest) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.v1.ExecuteBatchDmlRequest other) { + if (other == com.google.spanner.v1.ExecuteBatchDmlRequest.getDefaultInstance()) return this; + if (!other.getSession().isEmpty()) { + session_ = other.session_; + onChanged(); + } + if (other.hasTransaction()) { + mergeTransaction(other.getTransaction()); + } + if (statementsBuilder_ == null) { + if (!other.statements_.isEmpty()) { + if (statements_.isEmpty()) { + statements_ = other.statements_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureStatementsIsMutable(); + statements_.addAll(other.statements_); + } + onChanged(); + } + } else { + if (!other.statements_.isEmpty()) { + if (statementsBuilder_.isEmpty()) { + statementsBuilder_.dispose(); + statementsBuilder_ = null; + statements_ = other.statements_; + bitField0_ = (bitField0_ & ~0x00000004); + statementsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getStatementsFieldBuilder() + : null; + } else { + statementsBuilder_.addAllMessages(other.statements_); + } + } + } + if (other.getSeqno() != 0L) { + setSeqno(other.getSeqno()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.spanner.v1.ExecuteBatchDmlRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.google.spanner.v1.ExecuteBatchDmlRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int bitField0_; + + private java.lang.Object session_ = ""; + /** + * + * + *
+     * Required. The session in which the DML statements should be performed.
+     * 
+ * + * string session = 1; + */ + public java.lang.String getSession() { + java.lang.Object ref = session_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + session_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * Required. The session in which the DML statements should be performed.
+     * 
+ * + * string session = 1; + */ + public com.google.protobuf.ByteString getSessionBytes() { + java.lang.Object ref = session_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + session_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * Required. The session in which the DML statements should be performed.
+     * 
+ * + * string session = 1; + */ + public Builder setSession(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + session_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The session in which the DML statements should be performed.
+     * 
+ * + * string session = 1; + */ + public Builder clearSession() { + + session_ = getDefaultInstance().getSession(); + onChanged(); + return this; + } + /** + * + * + *
+     * Required. The session in which the DML statements should be performed.
+     * 
+ * + * string session = 1; + */ + public Builder setSessionBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + session_ = value; + onChanged(); + return this; + } + + private com.google.spanner.v1.TransactionSelector transaction_ = null; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.TransactionSelector, + com.google.spanner.v1.TransactionSelector.Builder, + com.google.spanner.v1.TransactionSelectorOrBuilder> + transactionBuilder_; + /** + * + * + *
+     * The transaction to use. A ReadWrite transaction is required. Single-use
+     * transactions are not supported (to avoid replay).  The caller must either
+     * supply an existing transaction ID or begin a new transaction.
+     * 
+ * + * .google.spanner.v1.TransactionSelector transaction = 2; + */ + public boolean hasTransaction() { + return transactionBuilder_ != null || transaction_ != null; + } + /** + * + * + *
+     * The transaction to use. A ReadWrite transaction is required. Single-use
+     * transactions are not supported (to avoid replay).  The caller must either
+     * supply an existing transaction ID or begin a new transaction.
+     * 
+ * + * .google.spanner.v1.TransactionSelector transaction = 2; + */ + public com.google.spanner.v1.TransactionSelector getTransaction() { + if (transactionBuilder_ == null) { + return transaction_ == null + ? com.google.spanner.v1.TransactionSelector.getDefaultInstance() + : transaction_; + } else { + return transactionBuilder_.getMessage(); + } + } + /** + * + * + *
+     * The transaction to use. A ReadWrite transaction is required. Single-use
+     * transactions are not supported (to avoid replay).  The caller must either
+     * supply an existing transaction ID or begin a new transaction.
+     * 
+ * + * .google.spanner.v1.TransactionSelector transaction = 2; + */ + public Builder setTransaction(com.google.spanner.v1.TransactionSelector value) { + if (transactionBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + transaction_ = value; + onChanged(); + } else { + transactionBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * The transaction to use. A ReadWrite transaction is required. Single-use
+     * transactions are not supported (to avoid replay).  The caller must either
+     * supply an existing transaction ID or begin a new transaction.
+     * 
+ * + * .google.spanner.v1.TransactionSelector transaction = 2; + */ + public Builder setTransaction( + com.google.spanner.v1.TransactionSelector.Builder builderForValue) { + if (transactionBuilder_ == null) { + transaction_ = builderForValue.build(); + onChanged(); + } else { + transactionBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * The transaction to use. A ReadWrite transaction is required. Single-use
+     * transactions are not supported (to avoid replay).  The caller must either
+     * supply an existing transaction ID or begin a new transaction.
+     * 
+ * + * .google.spanner.v1.TransactionSelector transaction = 2; + */ + public Builder mergeTransaction(com.google.spanner.v1.TransactionSelector value) { + if (transactionBuilder_ == null) { + if (transaction_ != null) { + transaction_ = + com.google.spanner.v1.TransactionSelector.newBuilder(transaction_) + .mergeFrom(value) + .buildPartial(); + } else { + transaction_ = value; + } + onChanged(); + } else { + transactionBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * The transaction to use. A ReadWrite transaction is required. Single-use
+     * transactions are not supported (to avoid replay).  The caller must either
+     * supply an existing transaction ID or begin a new transaction.
+     * 
+ * + * .google.spanner.v1.TransactionSelector transaction = 2; + */ + public Builder clearTransaction() { + if (transactionBuilder_ == null) { + transaction_ = null; + onChanged(); + } else { + transaction_ = null; + transactionBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * The transaction to use. A ReadWrite transaction is required. Single-use
+     * transactions are not supported (to avoid replay).  The caller must either
+     * supply an existing transaction ID or begin a new transaction.
+     * 
+ * + * .google.spanner.v1.TransactionSelector transaction = 2; + */ + public com.google.spanner.v1.TransactionSelector.Builder getTransactionBuilder() { + + onChanged(); + return getTransactionFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * The transaction to use. A ReadWrite transaction is required. Single-use
+     * transactions are not supported (to avoid replay).  The caller must either
+     * supply an existing transaction ID or begin a new transaction.
+     * 
+ * + * .google.spanner.v1.TransactionSelector transaction = 2; + */ + public com.google.spanner.v1.TransactionSelectorOrBuilder getTransactionOrBuilder() { + if (transactionBuilder_ != null) { + return transactionBuilder_.getMessageOrBuilder(); + } else { + return transaction_ == null + ? com.google.spanner.v1.TransactionSelector.getDefaultInstance() + : transaction_; + } + } + /** + * + * + *
+     * The transaction to use. A ReadWrite transaction is required. Single-use
+     * transactions are not supported (to avoid replay).  The caller must either
+     * supply an existing transaction ID or begin a new transaction.
+     * 
+ * + * .google.spanner.v1.TransactionSelector transaction = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.TransactionSelector, + com.google.spanner.v1.TransactionSelector.Builder, + com.google.spanner.v1.TransactionSelectorOrBuilder> + getTransactionFieldBuilder() { + if (transactionBuilder_ == null) { + transactionBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.spanner.v1.TransactionSelector, + com.google.spanner.v1.TransactionSelector.Builder, + com.google.spanner.v1.TransactionSelectorOrBuilder>( + getTransaction(), getParentForChildren(), isClean()); + transaction_ = null; + } + return transactionBuilder_; + } + + private java.util.List statements_ = + java.util.Collections.emptyList(); + + private void ensureStatementsIsMutable() { + if (!((bitField0_ & 0x00000004) == 0x00000004)) { + statements_ = + new java.util.ArrayList( + statements_); + bitField0_ |= 0x00000004; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement, + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder, + com.google.spanner.v1.ExecuteBatchDmlRequest.StatementOrBuilder> + statementsBuilder_; + + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public java.util.List + getStatementsList() { + if (statementsBuilder_ == null) { + return java.util.Collections.unmodifiableList(statements_); + } else { + return statementsBuilder_.getMessageList(); + } + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public int getStatementsCount() { + if (statementsBuilder_ == null) { + return statements_.size(); + } else { + return statementsBuilder_.getCount(); + } + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement getStatements(int index) { + if (statementsBuilder_ == null) { + return statements_.get(index); + } else { + return statementsBuilder_.getMessage(index); + } + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public Builder setStatements( + int index, com.google.spanner.v1.ExecuteBatchDmlRequest.Statement value) { + if (statementsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureStatementsIsMutable(); + statements_.set(index, value); + onChanged(); + } else { + statementsBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public Builder setStatements( + int index, com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder builderForValue) { + if (statementsBuilder_ == null) { + ensureStatementsIsMutable(); + statements_.set(index, builderForValue.build()); + onChanged(); + } else { + statementsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public Builder addStatements(com.google.spanner.v1.ExecuteBatchDmlRequest.Statement value) { + if (statementsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureStatementsIsMutable(); + statements_.add(value); + onChanged(); + } else { + statementsBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public Builder addStatements( + int index, com.google.spanner.v1.ExecuteBatchDmlRequest.Statement value) { + if (statementsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureStatementsIsMutable(); + statements_.add(index, value); + onChanged(); + } else { + statementsBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public Builder addStatements( + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder builderForValue) { + if (statementsBuilder_ == null) { + ensureStatementsIsMutable(); + statements_.add(builderForValue.build()); + onChanged(); + } else { + statementsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public Builder addStatements( + int index, com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder builderForValue) { + if (statementsBuilder_ == null) { + ensureStatementsIsMutable(); + statements_.add(index, builderForValue.build()); + onChanged(); + } else { + statementsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public Builder addAllStatements( + java.lang.Iterable + values) { + if (statementsBuilder_ == null) { + ensureStatementsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, statements_); + onChanged(); + } else { + statementsBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public Builder clearStatements() { + if (statementsBuilder_ == null) { + statements_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + } else { + statementsBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public Builder removeStatements(int index) { + if (statementsBuilder_ == null) { + ensureStatementsIsMutable(); + statements_.remove(index); + onChanged(); + } else { + statementsBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder getStatementsBuilder( + int index) { + return getStatementsFieldBuilder().getBuilder(index); + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public com.google.spanner.v1.ExecuteBatchDmlRequest.StatementOrBuilder getStatementsOrBuilder( + int index) { + if (statementsBuilder_ == null) { + return statements_.get(index); + } else { + return statementsBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public java.util.List + getStatementsOrBuilderList() { + if (statementsBuilder_ != null) { + return statementsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(statements_); + } + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder addStatementsBuilder() { + return getStatementsFieldBuilder() + .addBuilder(com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.getDefaultInstance()); + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder addStatementsBuilder( + int index) { + return getStatementsFieldBuilder() + .addBuilder( + index, com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.getDefaultInstance()); + } + /** + * + * + *
+     * The list of statements to execute in this batch. Statements are executed
+     * serially, such that the effects of statement i are visible to statement
+     * i+1. Each statement must be a DML statement. Execution will stop at the
+     * first failed statement; the remaining statements will not run.
+     * REQUIRES: statements_size() > 0.
+     * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + public java.util.List + getStatementsBuilderList() { + return getStatementsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement, + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder, + com.google.spanner.v1.ExecuteBatchDmlRequest.StatementOrBuilder> + getStatementsFieldBuilder() { + if (statementsBuilder_ == null) { + statementsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement, + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement.Builder, + com.google.spanner.v1.ExecuteBatchDmlRequest.StatementOrBuilder>( + statements_, + ((bitField0_ & 0x00000004) == 0x00000004), + getParentForChildren(), + isClean()); + statements_ = null; + } + return statementsBuilder_; + } + + private long seqno_; + /** + * + * + *
+     * A per-transaction sequence number used to identify this request. This is
+     * used in the same space as the seqno in
+     * [ExecuteSqlRequest][Spanner.ExecuteSqlRequest]. See more details
+     * in [ExecuteSqlRequest][Spanner.ExecuteSqlRequest].
+     * 
+ * + * int64 seqno = 4; + */ + public long getSeqno() { + return seqno_; + } + /** + * + * + *
+     * A per-transaction sequence number used to identify this request. This is
+     * used in the same space as the seqno in
+     * [ExecuteSqlRequest][Spanner.ExecuteSqlRequest]. See more details
+     * in [ExecuteSqlRequest][Spanner.ExecuteSqlRequest].
+     * 
+ * + * int64 seqno = 4; + */ + public Builder setSeqno(long value) { + + seqno_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * A per-transaction sequence number used to identify this request. This is
+     * used in the same space as the seqno in
+     * [ExecuteSqlRequest][Spanner.ExecuteSqlRequest]. See more details
+     * in [ExecuteSqlRequest][Spanner.ExecuteSqlRequest].
+     * 
+ * + * int64 seqno = 4; + */ + public Builder clearSeqno() { + + seqno_ = 0L; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFieldsProto3(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.ExecuteBatchDmlRequest) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.ExecuteBatchDmlRequest) + private static final com.google.spanner.v1.ExecuteBatchDmlRequest DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.ExecuteBatchDmlRequest(); + } + + public static com.google.spanner.v1.ExecuteBatchDmlRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ExecuteBatchDmlRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ExecuteBatchDmlRequest(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.ExecuteBatchDmlRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequestOrBuilder.java b/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequestOrBuilder.java new file mode 100644 index 000000000000..248a0b3f2916 --- /dev/null +++ b/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlRequestOrBuilder.java @@ -0,0 +1,154 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/v1/spanner.proto + +package com.google.spanner.v1; + +public interface ExecuteBatchDmlRequestOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.ExecuteBatchDmlRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Required. The session in which the DML statements should be performed.
+   * 
+ * + * string session = 1; + */ + java.lang.String getSession(); + /** + * + * + *
+   * Required. The session in which the DML statements should be performed.
+   * 
+ * + * string session = 1; + */ + com.google.protobuf.ByteString getSessionBytes(); + + /** + * + * + *
+   * The transaction to use. A ReadWrite transaction is required. Single-use
+   * transactions are not supported (to avoid replay).  The caller must either
+   * supply an existing transaction ID or begin a new transaction.
+   * 
+ * + * .google.spanner.v1.TransactionSelector transaction = 2; + */ + boolean hasTransaction(); + /** + * + * + *
+   * The transaction to use. A ReadWrite transaction is required. Single-use
+   * transactions are not supported (to avoid replay).  The caller must either
+   * supply an existing transaction ID or begin a new transaction.
+   * 
+ * + * .google.spanner.v1.TransactionSelector transaction = 2; + */ + com.google.spanner.v1.TransactionSelector getTransaction(); + /** + * + * + *
+   * The transaction to use. A ReadWrite transaction is required. Single-use
+   * transactions are not supported (to avoid replay).  The caller must either
+   * supply an existing transaction ID or begin a new transaction.
+   * 
+ * + * .google.spanner.v1.TransactionSelector transaction = 2; + */ + com.google.spanner.v1.TransactionSelectorOrBuilder getTransactionOrBuilder(); + + /** + * + * + *
+   * The list of statements to execute in this batch. Statements are executed
+   * serially, such that the effects of statement i are visible to statement
+   * i+1. Each statement must be a DML statement. Execution will stop at the
+   * first failed statement; the remaining statements will not run.
+   * REQUIRES: statements_size() > 0.
+   * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + java.util.List getStatementsList(); + /** + * + * + *
+   * The list of statements to execute in this batch. Statements are executed
+   * serially, such that the effects of statement i are visible to statement
+   * i+1. Each statement must be a DML statement. Execution will stop at the
+   * first failed statement; the remaining statements will not run.
+   * REQUIRES: statements_size() > 0.
+   * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + com.google.spanner.v1.ExecuteBatchDmlRequest.Statement getStatements(int index); + /** + * + * + *
+   * The list of statements to execute in this batch. Statements are executed
+   * serially, such that the effects of statement i are visible to statement
+   * i+1. Each statement must be a DML statement. Execution will stop at the
+   * first failed statement; the remaining statements will not run.
+   * REQUIRES: statements_size() > 0.
+   * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + int getStatementsCount(); + /** + * + * + *
+   * The list of statements to execute in this batch. Statements are executed
+   * serially, such that the effects of statement i are visible to statement
+   * i+1. Each statement must be a DML statement. Execution will stop at the
+   * first failed statement; the remaining statements will not run.
+   * REQUIRES: statements_size() > 0.
+   * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + java.util.List + getStatementsOrBuilderList(); + /** + * + * + *
+   * The list of statements to execute in this batch. Statements are executed
+   * serially, such that the effects of statement i are visible to statement
+   * i+1. Each statement must be a DML statement. Execution will stop at the
+   * first failed statement; the remaining statements will not run.
+   * REQUIRES: statements_size() > 0.
+   * 
+ * + * repeated .google.spanner.v1.ExecuteBatchDmlRequest.Statement statements = 3; + */ + com.google.spanner.v1.ExecuteBatchDmlRequest.StatementOrBuilder getStatementsOrBuilder(int index); + + /** + * + * + *
+   * A per-transaction sequence number used to identify this request. This is
+   * used in the same space as the seqno in
+   * [ExecuteSqlRequest][Spanner.ExecuteSqlRequest]. See more details
+   * in [ExecuteSqlRequest][Spanner.ExecuteSqlRequest].
+   * 
+ * + * int64 seqno = 4; + */ + long getSeqno(); +} diff --git a/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponse.java b/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponse.java new file mode 100644 index 000000000000..b639f98a5a1e --- /dev/null +++ b/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponse.java @@ -0,0 +1,1333 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/v1/spanner.proto + +package com.google.spanner.v1; + +/** + * + * + *
+ * The response for [ExecuteBatchDml][google.spanner.v1.Spanner.ExecuteBatchDml]. Contains a list
+ * of [ResultSet][google.spanner.v1.ResultSet], one for each DML statement that has successfully executed.
+ * If a statement fails, the error is returned as part of the response payload.
+ * Clients can determine whether all DML statements have run successfully, or if
+ * a statement failed, using one of the following approaches:
+ *   1. Check if 'status' field is OkStatus.
+ *   2. Check if result_sets_size() equals the number of statements in
+ *      [ExecuteBatchDmlRequest][Spanner.ExecuteBatchDmlRequest].
+ * Example 1: A request with 5 DML statements, all executed successfully.
+ * Result: A response with 5 ResultSets, one for each statement in the same
+ * order, and an OK status.
+ * Example 2: A request with 5 DML statements. The 3rd statement has a syntax
+ * error.
+ * Result: A response with 2 ResultSets, for the first 2 statements that
+ * run successfully, and a syntax error (INVALID_ARGUMENT) status. From
+ * result_set_size() client can determine that the 3rd statement has failed.
+ * 
+ * + * Protobuf type {@code google.spanner.v1.ExecuteBatchDmlResponse} + */ +public final class ExecuteBatchDmlResponse extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.spanner.v1.ExecuteBatchDmlResponse) + ExecuteBatchDmlResponseOrBuilder { + private static final long serialVersionUID = 0L; + // Use ExecuteBatchDmlResponse.newBuilder() to construct. + private ExecuteBatchDmlResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ExecuteBatchDmlResponse() { + resultSets_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private ExecuteBatchDmlResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + resultSets_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + resultSets_.add( + input.readMessage(com.google.spanner.v1.ResultSet.parser(), extensionRegistry)); + break; + } + case 18: + { + com.google.rpc.Status.Builder subBuilder = null; + if (status_ != null) { + subBuilder = status_.toBuilder(); + } + status_ = input.readMessage(com.google.rpc.Status.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(status_); + status_ = subBuilder.buildPartial(); + } + + break; + } + default: + { + if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + resultSets_ = java.util.Collections.unmodifiableList(resultSets_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ExecuteBatchDmlResponse.class, + com.google.spanner.v1.ExecuteBatchDmlResponse.Builder.class); + } + + private int bitField0_; + public static final int RESULT_SETS_FIELD_NUMBER = 1; + private java.util.List resultSets_; + /** + * + * + *
+   * ResultSets, one for each statement in the request that ran successfully, in
+   * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+   * contain the number of rows modified by the statement.
+   * Only the first ResultSet in the response contains a valid
+   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public java.util.List getResultSetsList() { + return resultSets_; + } + /** + * + * + *
+   * ResultSets, one for each statement in the request that ran successfully, in
+   * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+   * contain the number of rows modified by the statement.
+   * Only the first ResultSet in the response contains a valid
+   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public java.util.List + getResultSetsOrBuilderList() { + return resultSets_; + } + /** + * + * + *
+   * ResultSets, one for each statement in the request that ran successfully, in
+   * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+   * contain the number of rows modified by the statement.
+   * Only the first ResultSet in the response contains a valid
+   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public int getResultSetsCount() { + return resultSets_.size(); + } + /** + * + * + *
+   * ResultSets, one for each statement in the request that ran successfully, in
+   * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+   * contain the number of rows modified by the statement.
+   * Only the first ResultSet in the response contains a valid
+   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public com.google.spanner.v1.ResultSet getResultSets(int index) { + return resultSets_.get(index); + } + /** + * + * + *
+   * ResultSets, one for each statement in the request that ran successfully, in
+   * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+   * contain the number of rows modified by the statement.
+   * Only the first ResultSet in the response contains a valid
+   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public com.google.spanner.v1.ResultSetOrBuilder getResultSetsOrBuilder(int index) { + return resultSets_.get(index); + } + + public static final int STATUS_FIELD_NUMBER = 2; + private com.google.rpc.Status status_; + /** + * + * + *
+   * If all DML statements are executed successfully, status will be OK.
+   * Otherwise, the error status of the first failed statement.
+   * 
+ * + * .google.rpc.Status status = 2; + */ + public boolean hasStatus() { + return status_ != null; + } + /** + * + * + *
+   * If all DML statements are executed successfully, status will be OK.
+   * Otherwise, the error status of the first failed statement.
+   * 
+ * + * .google.rpc.Status status = 2; + */ + public com.google.rpc.Status getStatus() { + return status_ == null ? com.google.rpc.Status.getDefaultInstance() : status_; + } + /** + * + * + *
+   * If all DML statements are executed successfully, status will be OK.
+   * Otherwise, the error status of the first failed statement.
+   * 
+ * + * .google.rpc.Status status = 2; + */ + public com.google.rpc.StatusOrBuilder getStatusOrBuilder() { + return getStatus(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + for (int i = 0; i < resultSets_.size(); i++) { + output.writeMessage(1, resultSets_.get(i)); + } + if (status_ != null) { + output.writeMessage(2, getStatus()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < resultSets_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, resultSets_.get(i)); + } + if (status_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getStatus()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.spanner.v1.ExecuteBatchDmlResponse)) { + return super.equals(obj); + } + com.google.spanner.v1.ExecuteBatchDmlResponse other = + (com.google.spanner.v1.ExecuteBatchDmlResponse) obj; + + boolean result = true; + result = result && getResultSetsList().equals(other.getResultSetsList()); + result = result && (hasStatus() == other.hasStatus()); + if (hasStatus()) { + result = result && getStatus().equals(other.getStatus()); + } + result = result && unknownFields.equals(other.unknownFields); + return result; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getResultSetsCount() > 0) { + hash = (37 * hash) + RESULT_SETS_FIELD_NUMBER; + hash = (53 * hash) + getResultSetsList().hashCode(); + } + if (hasStatus()) { + hash = (37 * hash) + STATUS_FIELD_NUMBER; + hash = (53 * hash) + getStatus().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.spanner.v1.ExecuteBatchDmlResponse parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ExecuteBatchDmlResponse parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ExecuteBatchDmlResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ExecuteBatchDmlResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ExecuteBatchDmlResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.spanner.v1.ExecuteBatchDmlResponse parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.spanner.v1.ExecuteBatchDmlResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ExecuteBatchDmlResponse parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ExecuteBatchDmlResponse parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ExecuteBatchDmlResponse parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.spanner.v1.ExecuteBatchDmlResponse parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.spanner.v1.ExecuteBatchDmlResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.spanner.v1.ExecuteBatchDmlResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * The response for [ExecuteBatchDml][google.spanner.v1.Spanner.ExecuteBatchDml]. Contains a list
+   * of [ResultSet][google.spanner.v1.ResultSet], one for each DML statement that has successfully executed.
+   * If a statement fails, the error is returned as part of the response payload.
+   * Clients can determine whether all DML statements have run successfully, or if
+   * a statement failed, using one of the following approaches:
+   *   1. Check if 'status' field is OkStatus.
+   *   2. Check if result_sets_size() equals the number of statements in
+   *      [ExecuteBatchDmlRequest][Spanner.ExecuteBatchDmlRequest].
+   * Example 1: A request with 5 DML statements, all executed successfully.
+   * Result: A response with 5 ResultSets, one for each statement in the same
+   * order, and an OK status.
+   * Example 2: A request with 5 DML statements. The 3rd statement has a syntax
+   * error.
+   * Result: A response with 2 ResultSets, for the first 2 statements that
+   * run successfully, and a syntax error (INVALID_ARGUMENT) status. From
+   * result_set_size() client can determine that the 3rd statement has failed.
+   * 
+ * + * Protobuf type {@code google.spanner.v1.ExecuteBatchDmlResponse} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.spanner.v1.ExecuteBatchDmlResponse) + com.google.spanner.v1.ExecuteBatchDmlResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.spanner.v1.ExecuteBatchDmlResponse.class, + com.google.spanner.v1.ExecuteBatchDmlResponse.Builder.class); + } + + // Construct using com.google.spanner.v1.ExecuteBatchDmlResponse.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getResultSetsFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + if (resultSetsBuilder_ == null) { + resultSets_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + resultSetsBuilder_.clear(); + } + if (statusBuilder_ == null) { + status_ = null; + } else { + status_ = null; + statusBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.spanner.v1.SpannerProto + .internal_static_google_spanner_v1_ExecuteBatchDmlResponse_descriptor; + } + + @java.lang.Override + public com.google.spanner.v1.ExecuteBatchDmlResponse getDefaultInstanceForType() { + return com.google.spanner.v1.ExecuteBatchDmlResponse.getDefaultInstance(); + } + + @java.lang.Override + public com.google.spanner.v1.ExecuteBatchDmlResponse build() { + com.google.spanner.v1.ExecuteBatchDmlResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.spanner.v1.ExecuteBatchDmlResponse buildPartial() { + com.google.spanner.v1.ExecuteBatchDmlResponse result = + new com.google.spanner.v1.ExecuteBatchDmlResponse(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (resultSetsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { + resultSets_ = java.util.Collections.unmodifiableList(resultSets_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.resultSets_ = resultSets_; + } else { + result.resultSets_ = resultSetsBuilder_.build(); + } + if (statusBuilder_ == null) { + result.status_ = status_; + } else { + result.status_ = statusBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return (Builder) super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return (Builder) super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return (Builder) super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return (Builder) super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.spanner.v1.ExecuteBatchDmlResponse) { + return mergeFrom((com.google.spanner.v1.ExecuteBatchDmlResponse) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.spanner.v1.ExecuteBatchDmlResponse other) { + if (other == com.google.spanner.v1.ExecuteBatchDmlResponse.getDefaultInstance()) return this; + if (resultSetsBuilder_ == null) { + if (!other.resultSets_.isEmpty()) { + if (resultSets_.isEmpty()) { + resultSets_ = other.resultSets_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureResultSetsIsMutable(); + resultSets_.addAll(other.resultSets_); + } + onChanged(); + } + } else { + if (!other.resultSets_.isEmpty()) { + if (resultSetsBuilder_.isEmpty()) { + resultSetsBuilder_.dispose(); + resultSetsBuilder_ = null; + resultSets_ = other.resultSets_; + bitField0_ = (bitField0_ & ~0x00000001); + resultSetsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getResultSetsFieldBuilder() + : null; + } else { + resultSetsBuilder_.addAllMessages(other.resultSets_); + } + } + } + if (other.hasStatus()) { + mergeStatus(other.getStatus()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.spanner.v1.ExecuteBatchDmlResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.google.spanner.v1.ExecuteBatchDmlResponse) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int bitField0_; + + private java.util.List resultSets_ = + java.util.Collections.emptyList(); + + private void ensureResultSetsIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + resultSets_ = new java.util.ArrayList(resultSets_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ResultSet, + com.google.spanner.v1.ResultSet.Builder, + com.google.spanner.v1.ResultSetOrBuilder> + resultSetsBuilder_; + + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public java.util.List getResultSetsList() { + if (resultSetsBuilder_ == null) { + return java.util.Collections.unmodifiableList(resultSets_); + } else { + return resultSetsBuilder_.getMessageList(); + } + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public int getResultSetsCount() { + if (resultSetsBuilder_ == null) { + return resultSets_.size(); + } else { + return resultSetsBuilder_.getCount(); + } + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public com.google.spanner.v1.ResultSet getResultSets(int index) { + if (resultSetsBuilder_ == null) { + return resultSets_.get(index); + } else { + return resultSetsBuilder_.getMessage(index); + } + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public Builder setResultSets(int index, com.google.spanner.v1.ResultSet value) { + if (resultSetsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureResultSetsIsMutable(); + resultSets_.set(index, value); + onChanged(); + } else { + resultSetsBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public Builder setResultSets( + int index, com.google.spanner.v1.ResultSet.Builder builderForValue) { + if (resultSetsBuilder_ == null) { + ensureResultSetsIsMutable(); + resultSets_.set(index, builderForValue.build()); + onChanged(); + } else { + resultSetsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public Builder addResultSets(com.google.spanner.v1.ResultSet value) { + if (resultSetsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureResultSetsIsMutable(); + resultSets_.add(value); + onChanged(); + } else { + resultSetsBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public Builder addResultSets(int index, com.google.spanner.v1.ResultSet value) { + if (resultSetsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureResultSetsIsMutable(); + resultSets_.add(index, value); + onChanged(); + } else { + resultSetsBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public Builder addResultSets(com.google.spanner.v1.ResultSet.Builder builderForValue) { + if (resultSetsBuilder_ == null) { + ensureResultSetsIsMutable(); + resultSets_.add(builderForValue.build()); + onChanged(); + } else { + resultSetsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public Builder addResultSets( + int index, com.google.spanner.v1.ResultSet.Builder builderForValue) { + if (resultSetsBuilder_ == null) { + ensureResultSetsIsMutable(); + resultSets_.add(index, builderForValue.build()); + onChanged(); + } else { + resultSetsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public Builder addAllResultSets( + java.lang.Iterable values) { + if (resultSetsBuilder_ == null) { + ensureResultSetsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, resultSets_); + onChanged(); + } else { + resultSetsBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public Builder clearResultSets() { + if (resultSetsBuilder_ == null) { + resultSets_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + resultSetsBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public Builder removeResultSets(int index) { + if (resultSetsBuilder_ == null) { + ensureResultSetsIsMutable(); + resultSets_.remove(index); + onChanged(); + } else { + resultSetsBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public com.google.spanner.v1.ResultSet.Builder getResultSetsBuilder(int index) { + return getResultSetsFieldBuilder().getBuilder(index); + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public com.google.spanner.v1.ResultSetOrBuilder getResultSetsOrBuilder(int index) { + if (resultSetsBuilder_ == null) { + return resultSets_.get(index); + } else { + return resultSetsBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public java.util.List + getResultSetsOrBuilderList() { + if (resultSetsBuilder_ != null) { + return resultSetsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(resultSets_); + } + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public com.google.spanner.v1.ResultSet.Builder addResultSetsBuilder() { + return getResultSetsFieldBuilder() + .addBuilder(com.google.spanner.v1.ResultSet.getDefaultInstance()); + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public com.google.spanner.v1.ResultSet.Builder addResultSetsBuilder(int index) { + return getResultSetsFieldBuilder() + .addBuilder(index, com.google.spanner.v1.ResultSet.getDefaultInstance()); + } + /** + * + * + *
+     * ResultSets, one for each statement in the request that ran successfully, in
+     * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+     * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+     * contain the number of rows modified by the statement.
+     * Only the first ResultSet in the response contains a valid
+     * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+     * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + public java.util.List getResultSetsBuilderList() { + return getResultSetsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ResultSet, + com.google.spanner.v1.ResultSet.Builder, + com.google.spanner.v1.ResultSetOrBuilder> + getResultSetsFieldBuilder() { + if (resultSetsBuilder_ == null) { + resultSetsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.spanner.v1.ResultSet, + com.google.spanner.v1.ResultSet.Builder, + com.google.spanner.v1.ResultSetOrBuilder>( + resultSets_, + ((bitField0_ & 0x00000001) == 0x00000001), + getParentForChildren(), + isClean()); + resultSets_ = null; + } + return resultSetsBuilder_; + } + + private com.google.rpc.Status status_ = null; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.rpc.Status, com.google.rpc.Status.Builder, com.google.rpc.StatusOrBuilder> + statusBuilder_; + /** + * + * + *
+     * If all DML statements are executed successfully, status will be OK.
+     * Otherwise, the error status of the first failed statement.
+     * 
+ * + * .google.rpc.Status status = 2; + */ + public boolean hasStatus() { + return statusBuilder_ != null || status_ != null; + } + /** + * + * + *
+     * If all DML statements are executed successfully, status will be OK.
+     * Otherwise, the error status of the first failed statement.
+     * 
+ * + * .google.rpc.Status status = 2; + */ + public com.google.rpc.Status getStatus() { + if (statusBuilder_ == null) { + return status_ == null ? com.google.rpc.Status.getDefaultInstance() : status_; + } else { + return statusBuilder_.getMessage(); + } + } + /** + * + * + *
+     * If all DML statements are executed successfully, status will be OK.
+     * Otherwise, the error status of the first failed statement.
+     * 
+ * + * .google.rpc.Status status = 2; + */ + public Builder setStatus(com.google.rpc.Status value) { + if (statusBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + status_ = value; + onChanged(); + } else { + statusBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * If all DML statements are executed successfully, status will be OK.
+     * Otherwise, the error status of the first failed statement.
+     * 
+ * + * .google.rpc.Status status = 2; + */ + public Builder setStatus(com.google.rpc.Status.Builder builderForValue) { + if (statusBuilder_ == null) { + status_ = builderForValue.build(); + onChanged(); + } else { + statusBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * If all DML statements are executed successfully, status will be OK.
+     * Otherwise, the error status of the first failed statement.
+     * 
+ * + * .google.rpc.Status status = 2; + */ + public Builder mergeStatus(com.google.rpc.Status value) { + if (statusBuilder_ == null) { + if (status_ != null) { + status_ = com.google.rpc.Status.newBuilder(status_).mergeFrom(value).buildPartial(); + } else { + status_ = value; + } + onChanged(); + } else { + statusBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * If all DML statements are executed successfully, status will be OK.
+     * Otherwise, the error status of the first failed statement.
+     * 
+ * + * .google.rpc.Status status = 2; + */ + public Builder clearStatus() { + if (statusBuilder_ == null) { + status_ = null; + onChanged(); + } else { + status_ = null; + statusBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * If all DML statements are executed successfully, status will be OK.
+     * Otherwise, the error status of the first failed statement.
+     * 
+ * + * .google.rpc.Status status = 2; + */ + public com.google.rpc.Status.Builder getStatusBuilder() { + + onChanged(); + return getStatusFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * If all DML statements are executed successfully, status will be OK.
+     * Otherwise, the error status of the first failed statement.
+     * 
+ * + * .google.rpc.Status status = 2; + */ + public com.google.rpc.StatusOrBuilder getStatusOrBuilder() { + if (statusBuilder_ != null) { + return statusBuilder_.getMessageOrBuilder(); + } else { + return status_ == null ? com.google.rpc.Status.getDefaultInstance() : status_; + } + } + /** + * + * + *
+     * If all DML statements are executed successfully, status will be OK.
+     * Otherwise, the error status of the first failed statement.
+     * 
+ * + * .google.rpc.Status status = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.rpc.Status, com.google.rpc.Status.Builder, com.google.rpc.StatusOrBuilder> + getStatusFieldBuilder() { + if (statusBuilder_ == null) { + statusBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.rpc.Status, + com.google.rpc.Status.Builder, + com.google.rpc.StatusOrBuilder>(getStatus(), getParentForChildren(), isClean()); + status_ = null; + } + return statusBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFieldsProto3(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.spanner.v1.ExecuteBatchDmlResponse) + } + + // @@protoc_insertion_point(class_scope:google.spanner.v1.ExecuteBatchDmlResponse) + private static final com.google.spanner.v1.ExecuteBatchDmlResponse DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.spanner.v1.ExecuteBatchDmlResponse(); + } + + public static com.google.spanner.v1.ExecuteBatchDmlResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ExecuteBatchDmlResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ExecuteBatchDmlResponse(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.spanner.v1.ExecuteBatchDmlResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponseOrBuilder.java b/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponseOrBuilder.java new file mode 100644 index 000000000000..70ee20ca9fa5 --- /dev/null +++ b/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/ExecuteBatchDmlResponseOrBuilder.java @@ -0,0 +1,120 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/spanner/v1/spanner.proto + +package com.google.spanner.v1; + +public interface ExecuteBatchDmlResponseOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.spanner.v1.ExecuteBatchDmlResponse) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * ResultSets, one for each statement in the request that ran successfully, in
+   * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+   * contain the number of rows modified by the statement.
+   * Only the first ResultSet in the response contains a valid
+   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + java.util.List getResultSetsList(); + /** + * + * + *
+   * ResultSets, one for each statement in the request that ran successfully, in
+   * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+   * contain the number of rows modified by the statement.
+   * Only the first ResultSet in the response contains a valid
+   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + com.google.spanner.v1.ResultSet getResultSets(int index); + /** + * + * + *
+   * ResultSets, one for each statement in the request that ran successfully, in
+   * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+   * contain the number of rows modified by the statement.
+   * Only the first ResultSet in the response contains a valid
+   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + int getResultSetsCount(); + /** + * + * + *
+   * ResultSets, one for each statement in the request that ran successfully, in
+   * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+   * contain the number of rows modified by the statement.
+   * Only the first ResultSet in the response contains a valid
+   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + java.util.List getResultSetsOrBuilderList(); + /** + * + * + *
+   * ResultSets, one for each statement in the request that ran successfully, in
+   * the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will
+   * not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will
+   * contain the number of rows modified by the statement.
+   * Only the first ResultSet in the response contains a valid
+   * [ResultSetMetadata][google.spanner.v1.ResultSetMetadata].
+   * 
+ * + * repeated .google.spanner.v1.ResultSet result_sets = 1; + */ + com.google.spanner.v1.ResultSetOrBuilder getResultSetsOrBuilder(int index); + + /** + * + * + *
+   * If all DML statements are executed successfully, status will be OK.
+   * Otherwise, the error status of the first failed statement.
+   * 
+ * + * .google.rpc.Status status = 2; + */ + boolean hasStatus(); + /** + * + * + *
+   * If all DML statements are executed successfully, status will be OK.
+   * Otherwise, the error status of the first failed statement.
+   * 
+ * + * .google.rpc.Status status = 2; + */ + com.google.rpc.Status getStatus(); + /** + * + * + *
+   * If all DML statements are executed successfully, status will be OK.
+   * Otherwise, the error status of the first failed statement.
+   * 
+ * + * .google.rpc.Status status = 2; + */ + com.google.rpc.StatusOrBuilder getStatusOrBuilder(); +} diff --git a/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java b/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java index 36e6dd6a9095..b20abf2efdf4 100644 --- a/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java +++ b/google-api-grpc/proto-google-cloud-spanner-v1/src/main/java/com/google/spanner/v1/SpannerProto.java @@ -48,6 +48,22 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_spanner_v1_ExecuteSqlRequest_ParamTypesEntry_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_spanner_v1_ExecuteSqlRequest_ParamTypesEntry_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_ParamTypesEntry_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_ParamTypesEntry_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_spanner_v1_ExecuteBatchDmlResponse_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_spanner_v1_ExecuteBatchDmlResponse_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_spanner_v1_PartitionOptions_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable @@ -105,135 +121,154 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "e.spanner.v1\032\034google/api/annotations.pro" + "to\032\033google/protobuf/empty.proto\032\034google/" + "protobuf/struct.proto\032\037google/protobuf/t" - + "imestamp.proto\032\034google/spanner/v1/keys.p" - + "roto\032 google/spanner/v1/mutation.proto\032\"" - + "google/spanner/v1/result_set.proto\032#goog" - + "le/spanner/v1/transaction.proto\032\034google/" - + "spanner/v1/type.proto\"U\n\024CreateSessionRe" - + "quest\022\020\n\010database\030\001 \001(\t\022+\n\007session\030\002 \001(\013" - + "2\032.google.spanner.v1.Session\"\356\001\n\007Session" - + "\022\014\n\004name\030\001 \001(\t\0226\n\006labels\030\002 \003(\0132&.google." - + "spanner.v1.Session.LabelsEntry\022/\n\013create" - + "_time\030\003 \001(\0132\032.google.protobuf.Timestamp\022" - + "=\n\031approximate_last_use_time\030\004 \001(\0132\032.goo" - + "gle.protobuf.Timestamp\032-\n\013LabelsEntry\022\013\n" - + "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"!\n\021GetSess" - + "ionRequest\022\014\n\004name\030\001 \001(\t\"^\n\023ListSessions" - + "Request\022\020\n\010database\030\001 \001(\t\022\021\n\tpage_size\030\002" - + " \001(\005\022\022\n\npage_token\030\003 \001(\t\022\016\n\006filter\030\004 \001(\t" - + "\"]\n\024ListSessionsResponse\022,\n\010sessions\030\001 \003" - + "(\0132\032.google.spanner.v1.Session\022\027\n\017next_p" - + "age_token\030\002 \001(\t\"$\n\024DeleteSessionRequest\022" - + "\014\n\004name\030\001 \001(\t\"\340\003\n\021ExecuteSqlRequest\022\017\n\007s" - + "ession\030\001 \001(\t\022;\n\013transaction\030\002 \001(\0132&.goog" - + "le.spanner.v1.TransactionSelector\022\013\n\003sql" - + "\030\003 \001(\t\022\'\n\006params\030\004 \001(\0132\027.google.protobuf" - + ".Struct\022I\n\013param_types\030\005 \003(\01324.google.sp" - + "anner.v1.ExecuteSqlRequest.ParamTypesEnt" - + "ry\022\024\n\014resume_token\030\006 \001(\014\022B\n\nquery_mode\030\007" - + " \001(\0162..google.spanner.v1.ExecuteSqlReque" - + "st.QueryMode\022\027\n\017partition_token\030\010 \001(\014\022\r\n" - + "\005seqno\030\t \001(\003\032J\n\017ParamTypesEntry\022\013\n\003key\030\001" - + " \001(\t\022&\n\005value\030\002 \001(\0132\027.google.spanner.v1." - + "Type:\0028\001\".\n\tQueryMode\022\n\n\006NORMAL\020\000\022\010\n\004PLA" - + "N\020\001\022\013\n\007PROFILE\020\002\"H\n\020PartitionOptions\022\034\n\024" - + "partition_size_bytes\030\001 \001(\003\022\026\n\016max_partit" - + "ions\030\002 \001(\003\"\366\002\n\025PartitionQueryRequest\022\017\n\007" - + "session\030\001 \001(\t\022;\n\013transaction\030\002 \001(\0132&.goo" - + "gle.spanner.v1.TransactionSelector\022\013\n\003sq" - + "l\030\003 \001(\t\022\'\n\006params\030\004 \001(\0132\027.google.protobu" - + "f.Struct\022M\n\013param_types\030\005 \003(\01328.google.s" - + "panner.v1.PartitionQueryRequest.ParamTyp" - + "esEntry\022>\n\021partition_options\030\006 \001(\0132#.goo" - + "gle.spanner.v1.PartitionOptions\032J\n\017Param" - + "TypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005value\030\002 \001(\0132\027" - + ".google.spanner.v1.Type:\0028\001\"\377\001\n\024Partitio" - + "nReadRequest\022\017\n\007session\030\001 \001(\t\022;\n\013transac" - + "tion\030\002 \001(\0132&.google.spanner.v1.Transacti" - + "onSelector\022\r\n\005table\030\003 \001(\t\022\r\n\005index\030\004 \001(\t" - + "\022\017\n\007columns\030\005 \003(\t\022*\n\007key_set\030\006 \001(\0132\031.goo" - + "gle.spanner.v1.KeySet\022>\n\021partition_optio" - + "ns\030\t \001(\0132#.google.spanner.v1.PartitionOp" - + "tions\"$\n\tPartition\022\027\n\017partition_token\030\001 " - + "\001(\014\"z\n\021PartitionResponse\0220\n\npartitions\030\001" - + " \003(\0132\034.google.spanner.v1.Partition\0223\n\013tr" - + "ansaction\030\002 \001(\0132\036.google.spanner.v1.Tran" - + "saction\"\364\001\n\013ReadRequest\022\017\n\007session\030\001 \001(\t" - + "\022;\n\013transaction\030\002 \001(\0132&.google.spanner.v" - + "1.TransactionSelector\022\r\n\005table\030\003 \001(\t\022\r\n\005" - + "index\030\004 \001(\t\022\017\n\007columns\030\005 \003(\t\022*\n\007key_set\030" - + "\006 \001(\0132\031.google.spanner.v1.KeySet\022\r\n\005limi" - + "t\030\010 \001(\003\022\024\n\014resume_token\030\t \001(\014\022\027\n\017partiti" - + "on_token\030\n \001(\014\"b\n\027BeginTransactionReques" - + "t\022\017\n\007session\030\001 \001(\t\0226\n\007options\030\002 \001(\0132%.go" - + "ogle.spanner.v1.TransactionOptions\"\302\001\n\rC" - + "ommitRequest\022\017\n\007session\030\001 \001(\t\022\030\n\016transac" - + "tion_id\030\002 \001(\014H\000\022G\n\026single_use_transactio" - + "n\030\003 \001(\0132%.google.spanner.v1.TransactionO" - + "ptionsH\000\022.\n\tmutations\030\004 \003(\0132\033.google.spa" - + "nner.v1.MutationB\r\n\013transaction\"F\n\016Commi" - + "tResponse\0224\n\020commit_timestamp\030\001 \001(\0132\032.go" - + "ogle.protobuf.Timestamp\":\n\017RollbackReque" - + "st\022\017\n\007session\030\001 \001(\t\022\026\n\016transaction_id\030\002 " - + "\001(\0142\203\021\n\007Spanner\022\233\001\n\rCreateSession\022\'.goog" - + "le.spanner.v1.CreateSessionRequest\032\032.goo" - + "gle.spanner.v1.Session\"E\202\323\344\223\002?\":/v1/{dat" - + "abase=projects/*/instances/*/databases/*" - + "}/sessions:\001*\022\220\001\n\nGetSession\022$.google.sp" - + "anner.v1.GetSessionRequest\032\032.google.span" - + "ner.v1.Session\"@\202\323\344\223\002:\0228/v1/{name=projec" - + "ts/*/instances/*/databases/*/sessions/*}" - + "\022\243\001\n\014ListSessions\022&.google.spanner.v1.Li" - + "stSessionsRequest\032\'.google.spanner.v1.Li" - + "stSessionsResponse\"B\202\323\344\223\002<\022:/v1/{databas" - + "e=projects/*/instances/*/databases/*}/se" - + "ssions\022\222\001\n\rDeleteSession\022\'.google.spanne" - + "r.v1.DeleteSessionRequest\032\026.google.proto" - + "buf.Empty\"@\202\323\344\223\002:*8/v1/{name=projects/*/" - + "instances/*/databases/*/sessions/*}\022\243\001\n\n" - + "ExecuteSql\022$.google.spanner.v1.ExecuteSq" - + "lRequest\032\034.google.spanner.v1.ResultSet\"Q" - + "\202\323\344\223\002K\"F/v1/{session=projects/*/instance" - + "s/*/databases/*/sessions/*}:executeSql:\001" - + "*\022\276\001\n\023ExecuteStreamingSql\022$.google.spann" - + "er.v1.ExecuteSqlRequest\032#.google.spanner" - + ".v1.PartialResultSet\"Z\202\323\344\223\002T\"O/v1/{sessi" - + "on=projects/*/instances/*/databases/*/se" - + "ssions/*}:executeStreamingSql:\001*0\001\022\221\001\n\004R" - + "ead\022\036.google.spanner.v1.ReadRequest\032\034.go" - + "ogle.spanner.v1.ResultSet\"K\202\323\344\223\002E\"@/v1/{" - + "session=projects/*/instances/*/databases" - + "/*/sessions/*}:read:\001*\022\254\001\n\rStreamingRead" - + "\022\036.google.spanner.v1.ReadRequest\032#.googl" - + "e.spanner.v1.PartialResultSet\"T\202\323\344\223\002N\"I/" - + "v1/{session=projects/*/instances/*/datab" - + "ases/*/sessions/*}:streamingRead:\001*0\001\022\267\001" - + "\n\020BeginTransaction\022*.google.spanner.v1.B" - + "eginTransactionRequest\032\036.google.spanner." - + "v1.Transaction\"W\202\323\344\223\002Q\"L/v1/{session=pro" - + "jects/*/instances/*/databases/*/sessions" - + "/*}:beginTransaction:\001*\022\234\001\n\006Commit\022 .goo" - + "gle.spanner.v1.CommitRequest\032!.google.sp" - + "anner.v1.CommitResponse\"M\202\323\344\223\002G\"B/v1/{se" - + "ssion=projects/*/instances/*/databases/*" - + "/sessions/*}:commit:\001*\022\227\001\n\010Rollback\022\".go" - + "ogle.spanner.v1.RollbackRequest\032\026.google" - + ".protobuf.Empty\"O\202\323\344\223\002I\"D/v1/{session=pr" + + "imestamp.proto\032\027google/rpc/status.proto\032" + + "\034google/spanner/v1/keys.proto\032 google/sp" + + "anner/v1/mutation.proto\032\"google/spanner/" + + "v1/result_set.proto\032#google/spanner/v1/t" + + "ransaction.proto\032\034google/spanner/v1/type" + + ".proto\"U\n\024CreateSessionRequest\022\020\n\010databa" + + "se\030\001 \001(\t\022+\n\007session\030\002 \001(\0132\032.google.spann" + + "er.v1.Session\"\356\001\n\007Session\022\014\n\004name\030\001 \001(\t\022" + + "6\n\006labels\030\002 \003(\0132&.google.spanner.v1.Sess" + + "ion.LabelsEntry\022/\n\013create_time\030\003 \001(\0132\032.g" + + "oogle.protobuf.Timestamp\022=\n\031approximate_" + + "last_use_time\030\004 \001(\0132\032.google.protobuf.Ti" + + "mestamp\032-\n\013LabelsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005v" + + "alue\030\002 \001(\t:\0028\001\"!\n\021GetSessionRequest\022\014\n\004n" + + "ame\030\001 \001(\t\"^\n\023ListSessionsRequest\022\020\n\010data" + + "base\030\001 \001(\t\022\021\n\tpage_size\030\002 \001(\005\022\022\n\npage_to" + + "ken\030\003 \001(\t\022\016\n\006filter\030\004 \001(\t\"]\n\024ListSession" + + "sResponse\022,\n\010sessions\030\001 \003(\0132\032.google.spa" + + "nner.v1.Session\022\027\n\017next_page_token\030\002 \001(\t" + + "\"$\n\024DeleteSessionRequest\022\014\n\004name\030\001 \001(\t\"\340" + + "\003\n\021ExecuteSqlRequest\022\017\n\007session\030\001 \001(\t\022;\n" + + "\013transaction\030\002 \001(\0132&.google.spanner.v1.T" + + "ransactionSelector\022\013\n\003sql\030\003 \001(\t\022\'\n\006param" + + "s\030\004 \001(\0132\027.google.protobuf.Struct\022I\n\013para" + + "m_types\030\005 \003(\01324.google.spanner.v1.Execut" + + "eSqlRequest.ParamTypesEntry\022\024\n\014resume_to" + + "ken\030\006 \001(\014\022B\n\nquery_mode\030\007 \001(\0162..google.s" + + "panner.v1.ExecuteSqlRequest.QueryMode\022\027\n" + + "\017partition_token\030\010 \001(\014\022\r\n\005seqno\030\t \001(\003\032J\n" + + "\017ParamTypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005value\030\002" + + " \001(\0132\027.google.spanner.v1.Type:\0028\001\".\n\tQue" + + "ryMode\022\n\n\006NORMAL\020\000\022\010\n\004PLAN\020\001\022\013\n\007PROFILE\020" + + "\002\"\250\003\n\026ExecuteBatchDmlRequest\022\017\n\007session\030" + + "\001 \001(\t\022;\n\013transaction\030\002 \001(\0132&.google.span" + + "ner.v1.TransactionSelector\022G\n\nstatements" + + "\030\003 \003(\01323.google.spanner.v1.ExecuteBatchD" + + "mlRequest.Statement\022\r\n\005seqno\030\004 \001(\003\032\347\001\n\tS" + + "tatement\022\013\n\003sql\030\001 \001(\t\022\'\n\006params\030\002 \001(\0132\027." + + "google.protobuf.Struct\022X\n\013param_types\030\003 " + + "\003(\0132C.google.spanner.v1.ExecuteBatchDmlR" + + "equest.Statement.ParamTypesEntry\032J\n\017Para" + + "mTypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005value\030\002 \001(\0132" + + "\027.google.spanner.v1.Type:\0028\001\"p\n\027ExecuteB" + + "atchDmlResponse\0221\n\013result_sets\030\001 \003(\0132\034.g" + + "oogle.spanner.v1.ResultSet\022\"\n\006status\030\002 \001" + + "(\0132\022.google.rpc.Status\"H\n\020PartitionOptio" + + "ns\022\034\n\024partition_size_bytes\030\001 \001(\003\022\026\n\016max_" + + "partitions\030\002 \001(\003\"\366\002\n\025PartitionQueryReque" + + "st\022\017\n\007session\030\001 \001(\t\022;\n\013transaction\030\002 \001(\013" + + "2&.google.spanner.v1.TransactionSelector" + + "\022\013\n\003sql\030\003 \001(\t\022\'\n\006params\030\004 \001(\0132\027.google.p" + + "rotobuf.Struct\022M\n\013param_types\030\005 \003(\01328.go" + + "ogle.spanner.v1.PartitionQueryRequest.Pa" + + "ramTypesEntry\022>\n\021partition_options\030\006 \001(\013" + + "2#.google.spanner.v1.PartitionOptions\032J\n" + + "\017ParamTypesEntry\022\013\n\003key\030\001 \001(\t\022&\n\005value\030\002" + + " \001(\0132\027.google.spanner.v1.Type:\0028\001\"\377\001\n\024Pa" + + "rtitionReadRequest\022\017\n\007session\030\001 \001(\t\022;\n\013t" + + "ransaction\030\002 \001(\0132&.google.spanner.v1.Tra" + + "nsactionSelector\022\r\n\005table\030\003 \001(\t\022\r\n\005index" + + "\030\004 \001(\t\022\017\n\007columns\030\005 \003(\t\022*\n\007key_set\030\006 \001(\013" + + "2\031.google.spanner.v1.KeySet\022>\n\021partition" + + "_options\030\t \001(\0132#.google.spanner.v1.Parti" + + "tionOptions\"$\n\tPartition\022\027\n\017partition_to" + + "ken\030\001 \001(\014\"z\n\021PartitionResponse\0220\n\npartit" + + "ions\030\001 \003(\0132\034.google.spanner.v1.Partition" + + "\0223\n\013transaction\030\002 \001(\0132\036.google.spanner.v" + + "1.Transaction\"\364\001\n\013ReadRequest\022\017\n\007session" + + "\030\001 \001(\t\022;\n\013transaction\030\002 \001(\0132&.google.spa" + + "nner.v1.TransactionSelector\022\r\n\005table\030\003 \001" + + "(\t\022\r\n\005index\030\004 \001(\t\022\017\n\007columns\030\005 \003(\t\022*\n\007ke" + + "y_set\030\006 \001(\0132\031.google.spanner.v1.KeySet\022\r" + + "\n\005limit\030\010 \001(\003\022\024\n\014resume_token\030\t \001(\014\022\027\n\017p" + + "artition_token\030\n \001(\014\"b\n\027BeginTransaction" + + "Request\022\017\n\007session\030\001 \001(\t\0226\n\007options\030\002 \001(" + + "\0132%.google.spanner.v1.TransactionOptions" + + "\"\302\001\n\rCommitRequest\022\017\n\007session\030\001 \001(\t\022\030\n\016t" + + "ransaction_id\030\002 \001(\014H\000\022G\n\026single_use_tran" + + "saction\030\003 \001(\0132%.google.spanner.v1.Transa" + + "ctionOptionsH\000\022.\n\tmutations\030\004 \003(\0132\033.goog" + + "le.spanner.v1.MutationB\r\n\013transaction\"F\n" + + "\016CommitResponse\0224\n\020commit_timestamp\030\001 \001(" + + "\0132\032.google.protobuf.Timestamp\":\n\017Rollbac" + + "kRequest\022\017\n\007session\030\001 \001(\t\022\026\n\016transaction" + + "_id\030\002 \001(\0142\306\022\n\007Spanner\022\233\001\n\rCreateSession\022" + + "\'.google.spanner.v1.CreateSessionRequest" + + "\032\032.google.spanner.v1.Session\"E\202\323\344\223\002?\":/v" + + "1/{database=projects/*/instances/*/datab" + + "ases/*}/sessions:\001*\022\220\001\n\nGetSession\022$.goo" + + "gle.spanner.v1.GetSessionRequest\032\032.googl" + + "e.spanner.v1.Session\"@\202\323\344\223\002:\0228/v1/{name=" + + "projects/*/instances/*/databases/*/sessi" + + "ons/*}\022\243\001\n\014ListSessions\022&.google.spanner" + + ".v1.ListSessionsRequest\032\'.google.spanner" + + ".v1.ListSessionsResponse\"B\202\323\344\223\002<\022:/v1/{d" + + "atabase=projects/*/instances/*/databases" + + "/*}/sessions\022\222\001\n\rDeleteSession\022\'.google." + + "spanner.v1.DeleteSessionRequest\032\026.google" + + ".protobuf.Empty\"@\202\323\344\223\002:*8/v1/{name=proje" + + "cts/*/instances/*/databases/*/sessions/*" + + "}\022\243\001\n\nExecuteSql\022$.google.spanner.v1.Exe" + + "cuteSqlRequest\032\034.google.spanner.v1.Resul" + + "tSet\"Q\202\323\344\223\002K\"F/v1/{session=projects/*/in" + + "stances/*/databases/*/sessions/*}:execut" + + "eSql:\001*\022\276\001\n\023ExecuteStreamingSql\022$.google" + + ".spanner.v1.ExecuteSqlRequest\032#.google.s" + + "panner.v1.PartialResultSet\"Z\202\323\344\223\002T\"O/v1/" + + "{session=projects/*/instances/*/database" + + "s/*/sessions/*}:executeStreamingSql:\001*0\001" + + "\022\300\001\n\017ExecuteBatchDml\022).google.spanner.v1" + + ".ExecuteBatchDmlRequest\032*.google.spanner" + + ".v1.ExecuteBatchDmlResponse\"V\202\323\344\223\002P\"K/v1" + + "/{session=projects/*/instances/*/databas" + + "es/*/sessions/*}:executeBatchDml:\001*\022\221\001\n\004" + + "Read\022\036.google.spanner.v1.ReadRequest\032\034.g" + + "oogle.spanner.v1.ResultSet\"K\202\323\344\223\002E\"@/v1/" + + "{session=projects/*/instances/*/database" + + "s/*/sessions/*}:read:\001*\022\254\001\n\rStreamingRea" + + "d\022\036.google.spanner.v1.ReadRequest\032#.goog" + + "le.spanner.v1.PartialResultSet\"T\202\323\344\223\002N\"I" + + "/v1/{session=projects/*/instances/*/data" + + "bases/*/sessions/*}:streamingRead:\001*0\001\022\267" + + "\001\n\020BeginTransaction\022*.google.spanner.v1." + + "BeginTransactionRequest\032\036.google.spanner" + + ".v1.Transaction\"W\202\323\344\223\002Q\"L/v1/{session=pr" + "ojects/*/instances/*/databases/*/session" - + "s/*}:rollback:\001*\022\267\001\n\016PartitionQuery\022(.go" - + "ogle.spanner.v1.PartitionQueryRequest\032$." - + "google.spanner.v1.PartitionResponse\"U\202\323\344" - + "\223\002O\"J/v1/{session=projects/*/instances/*" - + "/databases/*/sessions/*}:partitionQuery:" - + "\001*\022\264\001\n\rPartitionRead\022\'.google.spanner.v1" - + ".PartitionReadRequest\032$.google.spanner.v" - + "1.PartitionResponse\"T\202\323\344\223\002N\"I/v1/{sessio" - + "n=projects/*/instances/*/databases/*/ses" - + "sions/*}:partitionRead:\001*B\225\001\n\025com.google" - + ".spanner.v1B\014SpannerProtoP\001Z8google.gola" - + "ng.org/genproto/googleapis/spanner/v1;sp" - + "anner\252\002\027Google.Cloud.Spanner.V1\312\002\027Google" - + "\\Cloud\\Spanner\\V1b\006proto3" + + "s/*}:beginTransaction:\001*\022\234\001\n\006Commit\022 .go" + + "ogle.spanner.v1.CommitRequest\032!.google.s" + + "panner.v1.CommitResponse\"M\202\323\344\223\002G\"B/v1/{s" + + "ession=projects/*/instances/*/databases/" + + "*/sessions/*}:commit:\001*\022\227\001\n\010Rollback\022\".g" + + "oogle.spanner.v1.RollbackRequest\032\026.googl" + + "e.protobuf.Empty\"O\202\323\344\223\002I\"D/v1/{session=p" + + "rojects/*/instances/*/databases/*/sessio" + + "ns/*}:rollback:\001*\022\267\001\n\016PartitionQuery\022(.g" + + "oogle.spanner.v1.PartitionQueryRequest\032$" + + ".google.spanner.v1.PartitionResponse\"U\202\323" + + "\344\223\002O\"J/v1/{session=projects/*/instances/" + + "*/databases/*/sessions/*}:partitionQuery" + + ":\001*\022\264\001\n\rPartitionRead\022\'.google.spanner.v" + + "1.PartitionReadRequest\032$.google.spanner." + + "v1.PartitionResponse\"T\202\323\344\223\002N\"I/v1/{sessi" + + "on=projects/*/instances/*/databases/*/se" + + "ssions/*}:partitionRead:\001*B\225\001\n\025com.googl" + + "e.spanner.v1B\014SpannerProtoP\001Z8google.gol" + + "ang.org/genproto/googleapis/spanner/v1;s" + + "panner\252\002\027Google.Cloud.Spanner.V1\312\002\027Googl" + + "e\\Cloud\\Spanner\\V1b\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -250,6 +285,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.EmptyProto.getDescriptor(), com.google.protobuf.StructProto.getDescriptor(), com.google.protobuf.TimestampProto.getDescriptor(), + com.google.rpc.StatusProto.getDescriptor(), com.google.spanner.v1.KeysProto.getDescriptor(), com.google.spanner.v1.MutationProto.getDescriptor(), com.google.spanner.v1.ResultSetProto.getDescriptor(), @@ -336,8 +372,42 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( new java.lang.String[] { "Key", "Value", }); - internal_static_google_spanner_v1_PartitionOptions_descriptor = + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_descriptor = getDescriptor().getMessageTypes().get(7); + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_descriptor, + new java.lang.String[] { + "Session", "Transaction", "Statements", "Seqno", + }); + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_descriptor = + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_descriptor.getNestedTypes().get(0); + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_descriptor, + new java.lang.String[] { + "Sql", "Params", "ParamTypes", + }); + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_ParamTypesEntry_descriptor = + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_descriptor + .getNestedTypes() + .get(0); + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_ParamTypesEntry_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_ExecuteBatchDmlRequest_Statement_ParamTypesEntry_descriptor, + new java.lang.String[] { + "Key", "Value", + }); + internal_static_google_spanner_v1_ExecuteBatchDmlResponse_descriptor = + getDescriptor().getMessageTypes().get(8); + internal_static_google_spanner_v1_ExecuteBatchDmlResponse_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_spanner_v1_ExecuteBatchDmlResponse_descriptor, + new java.lang.String[] { + "ResultSets", "Status", + }); + internal_static_google_spanner_v1_PartitionOptions_descriptor = + getDescriptor().getMessageTypes().get(9); internal_static_google_spanner_v1_PartitionOptions_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_v1_PartitionOptions_descriptor, @@ -345,7 +415,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "PartitionSizeBytes", "MaxPartitions", }); internal_static_google_spanner_v1_PartitionQueryRequest_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(10); internal_static_google_spanner_v1_PartitionQueryRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_v1_PartitionQueryRequest_descriptor, @@ -361,7 +431,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Key", "Value", }); internal_static_google_spanner_v1_PartitionReadRequest_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(11); internal_static_google_spanner_v1_PartitionReadRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_v1_PartitionReadRequest_descriptor, @@ -369,7 +439,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Session", "Transaction", "Table", "Index", "Columns", "KeySet", "PartitionOptions", }); internal_static_google_spanner_v1_Partition_descriptor = - getDescriptor().getMessageTypes().get(10); + getDescriptor().getMessageTypes().get(12); internal_static_google_spanner_v1_Partition_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_v1_Partition_descriptor, @@ -377,7 +447,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "PartitionToken", }); internal_static_google_spanner_v1_PartitionResponse_descriptor = - getDescriptor().getMessageTypes().get(11); + getDescriptor().getMessageTypes().get(13); internal_static_google_spanner_v1_PartitionResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_v1_PartitionResponse_descriptor, @@ -385,7 +455,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Partitions", "Transaction", }); internal_static_google_spanner_v1_ReadRequest_descriptor = - getDescriptor().getMessageTypes().get(12); + getDescriptor().getMessageTypes().get(14); internal_static_google_spanner_v1_ReadRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_v1_ReadRequest_descriptor, @@ -401,7 +471,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "PartitionToken", }); internal_static_google_spanner_v1_BeginTransactionRequest_descriptor = - getDescriptor().getMessageTypes().get(13); + getDescriptor().getMessageTypes().get(15); internal_static_google_spanner_v1_BeginTransactionRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_v1_BeginTransactionRequest_descriptor, @@ -409,7 +479,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Session", "Options", }); internal_static_google_spanner_v1_CommitRequest_descriptor = - getDescriptor().getMessageTypes().get(14); + getDescriptor().getMessageTypes().get(16); internal_static_google_spanner_v1_CommitRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_v1_CommitRequest_descriptor, @@ -417,7 +487,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Session", "TransactionId", "SingleUseTransaction", "Mutations", "Transaction", }); internal_static_google_spanner_v1_CommitResponse_descriptor = - getDescriptor().getMessageTypes().get(15); + getDescriptor().getMessageTypes().get(17); internal_static_google_spanner_v1_CommitResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_v1_CommitResponse_descriptor, @@ -425,7 +495,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "CommitTimestamp", }); internal_static_google_spanner_v1_RollbackRequest_descriptor = - getDescriptor().getMessageTypes().get(16); + getDescriptor().getMessageTypes().get(18); internal_static_google_spanner_v1_RollbackRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_spanner_v1_RollbackRequest_descriptor, @@ -441,6 +511,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.EmptyProto.getDescriptor(); com.google.protobuf.StructProto.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); + com.google.rpc.StatusProto.getDescriptor(); com.google.spanner.v1.KeysProto.getDescriptor(); com.google.spanner.v1.MutationProto.getDescriptor(); com.google.spanner.v1.ResultSetProto.getDescriptor(); diff --git a/google-api-grpc/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/spanner.proto b/google-api-grpc/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/spanner.proto index 7d3de6ad771e..60fcfdc448c1 100644 --- a/google-api-grpc/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/spanner.proto +++ b/google-api-grpc/proto-google-cloud-spanner-v1/src/main/proto/google/spanner/v1/spanner.proto @@ -1,4 +1,4 @@ -// Copyright 2018 Google LLC +// Copyright 2018 Google LLC. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -11,6 +11,7 @@ // 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. +// syntax = "proto3"; @@ -20,6 +21,7 @@ import "google/api/annotations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; +import "google/rpc/status.proto"; import "google/spanner/v1/keys.proto"; import "google/spanner/v1/mutation.proto"; import "google/spanner/v1/result_set.proto"; @@ -81,7 +83,9 @@ service Spanner { }; } - // Ends a session, releasing server resources associated with it. + // Ends a session, releasing server resources associated with it. This will + // asynchronously trigger cancellation of any operations that are running with + // this session. rpc DeleteSession(DeleteSessionRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1/{name=projects/*/instances/*/databases/*/sessions/*}" @@ -118,6 +122,32 @@ service Spanner { }; } + // Executes a batch of SQL DML statements. This method allows many statements + // to be run with lower latency than submitting them sequentially with + // [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql]. + // + // Statements are executed in order, sequentially. + // [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse] will contain a + // [ResultSet][google.spanner.v1.ResultSet] for each DML statement that has successfully executed. If a + // statement fails, its error status will be returned as part of the + // [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse]. Execution will + // stop at the first failed statement; the remaining statements will not run. + // + // ExecuteBatchDml is expected to return an OK status with a response even if + // there was an error while processing one of the DML statements. Clients must + // inspect response.status to determine if there were any errors while + // processing the request. + // + // See more details in + // [ExecuteBatchDmlRequest][Spanner.ExecuteBatchDmlRequest] and + // [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse]. + rpc ExecuteBatchDml(ExecuteBatchDmlRequest) returns (ExecuteBatchDmlResponse) { + option (google.api.http) = { + post: "/v1/{session=projects/*/instances/*/databases/*/sessions/*}:executeBatchDml" + body: "*" + }; + } + // Reads rows from the database using key lookups and scans, as a // simple key/value style alternative to // [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql]. This method cannot be used to @@ -410,6 +440,97 @@ message ExecuteSqlRequest { int64 seqno = 9; } +// The request for [ExecuteBatchDml][google.spanner.v1.Spanner.ExecuteBatchDml] +message ExecuteBatchDmlRequest { + // A single DML statement. + message Statement { + // Required. The DML string. + string sql = 1; + + // The DML string can contain parameter placeholders. A parameter + // placeholder consists of `'@'` followed by the parameter + // name. Parameter names consist of any combination of letters, + // numbers, and underscores. + // + // Parameters can appear anywhere that a literal value is expected. The + // same parameter name can be used more than once, for example: + // `"WHERE id > @msg_id AND id < @msg_id + 100"` + // + // It is an error to execute an SQL statement with unbound parameters. + // + // Parameter values are specified using `params`, which is a JSON + // object whose keys are parameter names, and whose values are the + // corresponding parameter values. + google.protobuf.Struct params = 2; + + // It is not always possible for Cloud Spanner to infer the right SQL type + // from a JSON value. For example, values of type `BYTES` and values + // of type `STRING` both appear in [params][google.spanner.v1.ExecuteBatchDmlRequest.Statement.params] as JSON strings. + // + // In these cases, `param_types` can be used to specify the exact + // SQL type for some or all of the SQL statement parameters. See the + // definition of [Type][google.spanner.v1.Type] for more information + // about SQL types. + map param_types = 3; + } + + // Required. The session in which the DML statements should be performed. + string session = 1; + + // The transaction to use. A ReadWrite transaction is required. Single-use + // transactions are not supported (to avoid replay). The caller must either + // supply an existing transaction ID or begin a new transaction. + TransactionSelector transaction = 2; + + // The list of statements to execute in this batch. Statements are executed + // serially, such that the effects of statement i are visible to statement + // i+1. Each statement must be a DML statement. Execution will stop at the + // first failed statement; the remaining statements will not run. + // + // REQUIRES: statements_size() > 0. + repeated Statement statements = 3; + + // A per-transaction sequence number used to identify this request. This is + // used in the same space as the seqno in + // [ExecuteSqlRequest][Spanner.ExecuteSqlRequest]. See more details + // in [ExecuteSqlRequest][Spanner.ExecuteSqlRequest]. + int64 seqno = 4; +} + +// The response for [ExecuteBatchDml][google.spanner.v1.Spanner.ExecuteBatchDml]. Contains a list +// of [ResultSet][google.spanner.v1.ResultSet], one for each DML statement that has successfully executed. +// If a statement fails, the error is returned as part of the response payload. +// Clients can determine whether all DML statements have run successfully, or if +// a statement failed, using one of the following approaches: +// +// 1. Check if 'status' field is OkStatus. +// 2. Check if result_sets_size() equals the number of statements in +// [ExecuteBatchDmlRequest][Spanner.ExecuteBatchDmlRequest]. +// +// Example 1: A request with 5 DML statements, all executed successfully. +// Result: A response with 5 ResultSets, one for each statement in the same +// order, and an OK status. +// +// Example 2: A request with 5 DML statements. The 3rd statement has a syntax +// error. +// Result: A response with 2 ResultSets, for the first 2 statements that +// run successfully, and a syntax error (INVALID_ARGUMENT) status. From +// result_set_size() client can determine that the 3rd statement has failed. +message ExecuteBatchDmlResponse { + // ResultSets, one for each statement in the request that ran successfully, in + // the same order as the statements in the request. Each [ResultSet][google.spanner.v1.ResultSet] will + // not contain any rows. The [ResultSetStats][google.spanner.v1.ResultSetStats] in each [ResultSet][google.spanner.v1.ResultSet] will + // contain the number of rows modified by the statement. + // + // Only the first ResultSet in the response contains a valid + // [ResultSetMetadata][google.spanner.v1.ResultSetMetadata]. + repeated ResultSet result_sets = 1; + + // If all DML statements are executed successfully, status will be OK. + // Otherwise, the error status of the first failed statement. + google.rpc.Status status = 2; +} + // Options for a PartitionQueryRequest and // PartitionReadRequest. message PartitionOptions { diff --git a/google-api-grpc/proto-google-cloud-speech-v1/pom.xml b/google-api-grpc/proto-google-cloud-speech-v1/pom.xml index 2d835e067f07..935d2c7746a1 100644 --- a/google-api-grpc/proto-google-cloud-speech-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-speech-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-speech-v1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-speech-v1 PROTO library for proto-google-cloud-speech-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-speech-v1beta1/pom.xml b/google-api-grpc/proto-google-cloud-speech-v1beta1/pom.xml index 6b24caef88f4..7f7d0b5db887 100644 --- a/google-api-grpc/proto-google-cloud-speech-v1beta1/pom.xml +++ b/google-api-grpc/proto-google-cloud-speech-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-speech-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-speech-v1beta1 PROTO library for proto-google-cloud-speech-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-speech-v1p1beta1/pom.xml b/google-api-grpc/proto-google-cloud-speech-v1p1beta1/pom.xml index f729e0cfdc79..6b83c9da606a 100644 --- a/google-api-grpc/proto-google-cloud-speech-v1p1beta1/pom.xml +++ b/google-api-grpc/proto-google-cloud-speech-v1p1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-speech-v1p1beta1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-speech-v1p1beta1 PROTO library for proto-google-cloud-speech-v1p1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-tasks-v2beta2/pom.xml b/google-api-grpc/proto-google-cloud-tasks-v2beta2/pom.xml index 24bb970c1628..ed95fadee5bf 100644 --- a/google-api-grpc/proto-google-cloud-tasks-v2beta2/pom.xml +++ b/google-api-grpc/proto-google-cloud-tasks-v2beta2/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-tasks-v2beta2 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-tasks-v2beta2 PROTO library for proto-google-cloud-tasks-v2beta2 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-tasks-v2beta3/pom.xml b/google-api-grpc/proto-google-cloud-tasks-v2beta3/pom.xml index a4d07240f2ad..5ad3eefae386 100644 --- a/google-api-grpc/proto-google-cloud-tasks-v2beta3/pom.xml +++ b/google-api-grpc/proto-google-cloud-tasks-v2beta3/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-tasks-v2beta3 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-tasks-v2beta3 PROTO library for proto-google-cloud-tasks-v2beta3 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-texttospeech-v1/pom.xml b/google-api-grpc/proto-google-cloud-texttospeech-v1/pom.xml index cf821f54d424..7b5f5b568a45 100644 --- a/google-api-grpc/proto-google-cloud-texttospeech-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-texttospeech-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-texttospeech-v1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-texttospeech-v1 PROTO library for proto-google-cloud-texttospeech-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-texttospeech-v1beta1/pom.xml b/google-api-grpc/proto-google-cloud-texttospeech-v1beta1/pom.xml index 49ad6ba89279..3aa8525a19a3 100644 --- a/google-api-grpc/proto-google-cloud-texttospeech-v1beta1/pom.xml +++ b/google-api-grpc/proto-google-cloud-texttospeech-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-texttospeech-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-texttospeech-v1beta1 PROTO library for proto-google-cloud-texttospeech-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-trace-v1/pom.xml b/google-api-grpc/proto-google-cloud-trace-v1/pom.xml index 46b76cad098f..162ea4d6cd84 100644 --- a/google-api-grpc/proto-google-cloud-trace-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-trace-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-trace-v1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-trace-v1 PROTO library for proto-google-cloud-trace-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-trace-v2/pom.xml b/google-api-grpc/proto-google-cloud-trace-v2/pom.xml index 8b22bd952ed0..2f0334d9ee18 100644 --- a/google-api-grpc/proto-google-cloud-trace-v2/pom.xml +++ b/google-api-grpc/proto-google-cloud-trace-v2/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-trace-v2 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-trace-v2 PROTO library for proto-google-cloud-trace-v2 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/pom.xml b/google-api-grpc/proto-google-cloud-video-intelligence-v1/pom.xml index 64d65e2a3793..3b64a5c99fea 100644 --- a/google-api-grpc/proto-google-cloud-video-intelligence-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-video-intelligence-v1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-video-intelligence-v1 PROTO library for proto-google-cloud-video-intelligence-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/Feature.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/Feature.java index 0c5d9cdef787..82a170ee4e0a 100644 --- a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/Feature.java +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/Feature.java @@ -73,6 +73,26 @@ public enum Feature implements com.google.protobuf.ProtocolMessageEnum { * SPEECH_TRANSCRIPTION = 6; */ SPEECH_TRANSCRIPTION(6), + /** + * + * + *
+   * OCR text detection and tracking.
+   * 
+ * + * TEXT_DETECTION = 7; + */ + TEXT_DETECTION(7), + /** + * + * + *
+   * Object detection and tracking.
+   * 
+ * + * OBJECT_TRACKING = 9; + */ + OBJECT_TRACKING(9), UNRECOGNIZED(-1), ; @@ -136,6 +156,26 @@ public enum Feature implements com.google.protobuf.ProtocolMessageEnum { * SPEECH_TRANSCRIPTION = 6; */ public static final int SPEECH_TRANSCRIPTION_VALUE = 6; + /** + * + * + *
+   * OCR text detection and tracking.
+   * 
+ * + * TEXT_DETECTION = 7; + */ + public static final int TEXT_DETECTION_VALUE = 7; + /** + * + * + *
+   * Object detection and tracking.
+   * 
+ * + * OBJECT_TRACKING = 9; + */ + public static final int OBJECT_TRACKING_VALUE = 9; public final int getNumber() { if (this == UNRECOGNIZED) { @@ -165,6 +205,10 @@ public static Feature forNumber(int value) { return FACE_DETECTION; case 6: return SPEECH_TRANSCRIPTION; + case 7: + return TEXT_DETECTION; + case 9: + return OBJECT_TRACKING; default: return null; } diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/NormalizedBoundingPoly.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/NormalizedBoundingPoly.java new file mode 100644 index 000000000000..243db3ce6e4d --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/NormalizedBoundingPoly.java @@ -0,0 +1,974 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +/** + * + * + *
+ * Normalized bounding polygon for text (that might not be aligned with axis).
+ * Contains list of the corner points in clockwise order starting from
+ * top-left corner. For example, for a rectangular bounding box:
+ * When the text is horizontal it might look like:
+ *         0----1
+ *         |    |
+ *         3----2
+ * When it's clockwise rotated 180 degrees around the top-left corner it
+ * becomes:
+ *         2----3
+ *         |    |
+ *         1----0
+ * and the vertex order will still be (0, 1, 2, 3). Note that values can be less
+ * than 0, or greater than 1 due to trignometric calculations for location of
+ * the box.
+ * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.NormalizedBoundingPoly} + */ +public final class NormalizedBoundingPoly extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.cloud.videointelligence.v1.NormalizedBoundingPoly) + NormalizedBoundingPolyOrBuilder { + private static final long serialVersionUID = 0L; + // Use NormalizedBoundingPoly.newBuilder() to construct. + private NormalizedBoundingPoly(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private NormalizedBoundingPoly() { + vertices_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private NormalizedBoundingPoly( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + vertices_ = + new java.util.ArrayList< + com.google.cloud.videointelligence.v1.NormalizedVertex>(); + mutable_bitField0_ |= 0x00000001; + } + vertices_.add( + input.readMessage( + com.google.cloud.videointelligence.v1.NormalizedVertex.parser(), + extensionRegistry)); + break; + } + default: + { + if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + vertices_ = java.util.Collections.unmodifiableList(vertices_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_NormalizedBoundingPoly_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_NormalizedBoundingPoly_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.class, + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.Builder.class); + } + + public static final int VERTICES_FIELD_NUMBER = 1; + private java.util.List vertices_; + /** + * + * + *
+   * Normalized vertices of the bounding polygon.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public java.util.List getVerticesList() { + return vertices_; + } + /** + * + * + *
+   * Normalized vertices of the bounding polygon.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public java.util.List + getVerticesOrBuilderList() { + return vertices_; + } + /** + * + * + *
+   * Normalized vertices of the bounding polygon.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public int getVerticesCount() { + return vertices_.size(); + } + /** + * + * + *
+   * Normalized vertices of the bounding polygon.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public com.google.cloud.videointelligence.v1.NormalizedVertex getVertices(int index) { + return vertices_.get(index); + } + /** + * + * + *
+   * Normalized vertices of the bounding polygon.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public com.google.cloud.videointelligence.v1.NormalizedVertexOrBuilder getVerticesOrBuilder( + int index) { + return vertices_.get(index); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + for (int i = 0; i < vertices_.size(); i++) { + output.writeMessage(1, vertices_.get(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < vertices_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, vertices_.get(i)); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.cloud.videointelligence.v1.NormalizedBoundingPoly)) { + return super.equals(obj); + } + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly other = + (com.google.cloud.videointelligence.v1.NormalizedBoundingPoly) obj; + + boolean result = true; + result = result && getVerticesList().equals(other.getVerticesList()); + result = result && unknownFields.equals(other.unknownFields); + return result; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getVerticesCount() > 0) { + hash = (37 * hash) + VERTICES_FIELD_NUMBER; + hash = (53 * hash) + getVerticesList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.cloud.videointelligence.v1.NormalizedBoundingPoly parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.NormalizedBoundingPoly parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.NormalizedBoundingPoly parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.NormalizedBoundingPoly parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.NormalizedBoundingPoly parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.NormalizedBoundingPoly parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.NormalizedBoundingPoly parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.NormalizedBoundingPoly parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.NormalizedBoundingPoly parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.NormalizedBoundingPoly parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.NormalizedBoundingPoly parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.NormalizedBoundingPoly parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Normalized bounding polygon for text (that might not be aligned with axis).
+   * Contains list of the corner points in clockwise order starting from
+   * top-left corner. For example, for a rectangular bounding box:
+   * When the text is horizontal it might look like:
+   *         0----1
+   *         |    |
+   *         3----2
+   * When it's clockwise rotated 180 degrees around the top-left corner it
+   * becomes:
+   *         2----3
+   *         |    |
+   *         1----0
+   * and the vertex order will still be (0, 1, 2, 3). Note that values can be less
+   * than 0, or greater than 1 due to trignometric calculations for location of
+   * the box.
+   * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.NormalizedBoundingPoly} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.cloud.videointelligence.v1.NormalizedBoundingPoly) + com.google.cloud.videointelligence.v1.NormalizedBoundingPolyOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_NormalizedBoundingPoly_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_NormalizedBoundingPoly_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.class, + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.Builder.class); + } + + // Construct using com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getVerticesFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + if (verticesBuilder_ == null) { + vertices_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + verticesBuilder_.clear(); + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_NormalizedBoundingPoly_descriptor; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.NormalizedBoundingPoly + getDefaultInstanceForType() { + return com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.getDefaultInstance(); + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.NormalizedBoundingPoly build() { + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.NormalizedBoundingPoly buildPartial() { + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly result = + new com.google.cloud.videointelligence.v1.NormalizedBoundingPoly(this); + int from_bitField0_ = bitField0_; + if (verticesBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { + vertices_ = java.util.Collections.unmodifiableList(vertices_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.vertices_ = vertices_; + } else { + result.vertices_ = verticesBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return (Builder) super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return (Builder) super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return (Builder) super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return (Builder) super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.cloud.videointelligence.v1.NormalizedBoundingPoly) { + return mergeFrom((com.google.cloud.videointelligence.v1.NormalizedBoundingPoly) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.cloud.videointelligence.v1.NormalizedBoundingPoly other) { + if (other + == com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.getDefaultInstance()) + return this; + if (verticesBuilder_ == null) { + if (!other.vertices_.isEmpty()) { + if (vertices_.isEmpty()) { + vertices_ = other.vertices_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureVerticesIsMutable(); + vertices_.addAll(other.vertices_); + } + onChanged(); + } + } else { + if (!other.vertices_.isEmpty()) { + if (verticesBuilder_.isEmpty()) { + verticesBuilder_.dispose(); + verticesBuilder_ = null; + vertices_ = other.vertices_; + bitField0_ = (bitField0_ & ~0x00000001); + verticesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getVerticesFieldBuilder() + : null; + } else { + verticesBuilder_.addAllMessages(other.vertices_); + } + } + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = + (com.google.cloud.videointelligence.v1.NormalizedBoundingPoly) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int bitField0_; + + private java.util.List vertices_ = + java.util.Collections.emptyList(); + + private void ensureVerticesIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + vertices_ = + new java.util.ArrayList( + vertices_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.NormalizedVertex, + com.google.cloud.videointelligence.v1.NormalizedVertex.Builder, + com.google.cloud.videointelligence.v1.NormalizedVertexOrBuilder> + verticesBuilder_; + + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public java.util.List + getVerticesList() { + if (verticesBuilder_ == null) { + return java.util.Collections.unmodifiableList(vertices_); + } else { + return verticesBuilder_.getMessageList(); + } + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public int getVerticesCount() { + if (verticesBuilder_ == null) { + return vertices_.size(); + } else { + return verticesBuilder_.getCount(); + } + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public com.google.cloud.videointelligence.v1.NormalizedVertex getVertices(int index) { + if (verticesBuilder_ == null) { + return vertices_.get(index); + } else { + return verticesBuilder_.getMessage(index); + } + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public Builder setVertices( + int index, com.google.cloud.videointelligence.v1.NormalizedVertex value) { + if (verticesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureVerticesIsMutable(); + vertices_.set(index, value); + onChanged(); + } else { + verticesBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public Builder setVertices( + int index, com.google.cloud.videointelligence.v1.NormalizedVertex.Builder builderForValue) { + if (verticesBuilder_ == null) { + ensureVerticesIsMutable(); + vertices_.set(index, builderForValue.build()); + onChanged(); + } else { + verticesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public Builder addVertices(com.google.cloud.videointelligence.v1.NormalizedVertex value) { + if (verticesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureVerticesIsMutable(); + vertices_.add(value); + onChanged(); + } else { + verticesBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public Builder addVertices( + int index, com.google.cloud.videointelligence.v1.NormalizedVertex value) { + if (verticesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureVerticesIsMutable(); + vertices_.add(index, value); + onChanged(); + } else { + verticesBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public Builder addVertices( + com.google.cloud.videointelligence.v1.NormalizedVertex.Builder builderForValue) { + if (verticesBuilder_ == null) { + ensureVerticesIsMutable(); + vertices_.add(builderForValue.build()); + onChanged(); + } else { + verticesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public Builder addVertices( + int index, com.google.cloud.videointelligence.v1.NormalizedVertex.Builder builderForValue) { + if (verticesBuilder_ == null) { + ensureVerticesIsMutable(); + vertices_.add(index, builderForValue.build()); + onChanged(); + } else { + verticesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public Builder addAllVertices( + java.lang.Iterable + values) { + if (verticesBuilder_ == null) { + ensureVerticesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, vertices_); + onChanged(); + } else { + verticesBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public Builder clearVertices() { + if (verticesBuilder_ == null) { + vertices_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + verticesBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public Builder removeVertices(int index) { + if (verticesBuilder_ == null) { + ensureVerticesIsMutable(); + vertices_.remove(index); + onChanged(); + } else { + verticesBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public com.google.cloud.videointelligence.v1.NormalizedVertex.Builder getVerticesBuilder( + int index) { + return getVerticesFieldBuilder().getBuilder(index); + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public com.google.cloud.videointelligence.v1.NormalizedVertexOrBuilder getVerticesOrBuilder( + int index) { + if (verticesBuilder_ == null) { + return vertices_.get(index); + } else { + return verticesBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public java.util.List + getVerticesOrBuilderList() { + if (verticesBuilder_ != null) { + return verticesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(vertices_); + } + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public com.google.cloud.videointelligence.v1.NormalizedVertex.Builder addVerticesBuilder() { + return getVerticesFieldBuilder() + .addBuilder(com.google.cloud.videointelligence.v1.NormalizedVertex.getDefaultInstance()); + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public com.google.cloud.videointelligence.v1.NormalizedVertex.Builder addVerticesBuilder( + int index) { + return getVerticesFieldBuilder() + .addBuilder( + index, com.google.cloud.videointelligence.v1.NormalizedVertex.getDefaultInstance()); + } + /** + * + * + *
+     * Normalized vertices of the bounding polygon.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + public java.util.List + getVerticesBuilderList() { + return getVerticesFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.NormalizedVertex, + com.google.cloud.videointelligence.v1.NormalizedVertex.Builder, + com.google.cloud.videointelligence.v1.NormalizedVertexOrBuilder> + getVerticesFieldBuilder() { + if (verticesBuilder_ == null) { + verticesBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.NormalizedVertex, + com.google.cloud.videointelligence.v1.NormalizedVertex.Builder, + com.google.cloud.videointelligence.v1.NormalizedVertexOrBuilder>( + vertices_, + ((bitField0_ & 0x00000001) == 0x00000001), + getParentForChildren(), + isClean()); + vertices_ = null; + } + return verticesBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFieldsProto3(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.cloud.videointelligence.v1.NormalizedBoundingPoly) + } + + // @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1.NormalizedBoundingPoly) + private static final com.google.cloud.videointelligence.v1.NormalizedBoundingPoly + DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.cloud.videointelligence.v1.NormalizedBoundingPoly(); + } + + public static com.google.cloud.videointelligence.v1.NormalizedBoundingPoly getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public NormalizedBoundingPoly parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new NormalizedBoundingPoly(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.NormalizedBoundingPoly getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/NormalizedBoundingPolyOrBuilder.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/NormalizedBoundingPolyOrBuilder.java new file mode 100644 index 000000000000..336f0295b2b0 --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/NormalizedBoundingPolyOrBuilder.java @@ -0,0 +1,62 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +public interface NormalizedBoundingPolyOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.cloud.videointelligence.v1.NormalizedBoundingPoly) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Normalized vertices of the bounding polygon.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + java.util.List getVerticesList(); + /** + * + * + *
+   * Normalized vertices of the bounding polygon.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + com.google.cloud.videointelligence.v1.NormalizedVertex getVertices(int index); + /** + * + * + *
+   * Normalized vertices of the bounding polygon.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + int getVerticesCount(); + /** + * + * + *
+   * Normalized vertices of the bounding polygon.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + java.util.List + getVerticesOrBuilderList(); + /** + * + * + *
+   * Normalized vertices of the bounding polygon.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.NormalizedVertex vertices = 1; + */ + com.google.cloud.videointelligence.v1.NormalizedVertexOrBuilder getVerticesOrBuilder(int index); +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/NormalizedVertex.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/NormalizedVertex.java new file mode 100644 index 000000000000..702d52c178b8 --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/NormalizedVertex.java @@ -0,0 +1,609 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +/** + * + * + *
+ * A vertex represents a 2D point in the image.
+ * NOTE: the normalized vertex coordinates are relative to the original image
+ * and range from 0 to 1.
+ * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.NormalizedVertex} + */ +public final class NormalizedVertex extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.cloud.videointelligence.v1.NormalizedVertex) + NormalizedVertexOrBuilder { + private static final long serialVersionUID = 0L; + // Use NormalizedVertex.newBuilder() to construct. + private NormalizedVertex(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private NormalizedVertex() { + x_ = 0F; + y_ = 0F; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private NormalizedVertex( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 13: + { + x_ = input.readFloat(); + break; + } + case 21: + { + y_ = input.readFloat(); + break; + } + default: + { + if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_NormalizedVertex_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_NormalizedVertex_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.NormalizedVertex.class, + com.google.cloud.videointelligence.v1.NormalizedVertex.Builder.class); + } + + public static final int X_FIELD_NUMBER = 1; + private float x_; + /** + * + * + *
+   * X coordinate.
+   * 
+ * + * float x = 1; + */ + public float getX() { + return x_; + } + + public static final int Y_FIELD_NUMBER = 2; + private float y_; + /** + * + * + *
+   * Y coordinate.
+   * 
+ * + * float y = 2; + */ + public float getY() { + return y_; + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (x_ != 0F) { + output.writeFloat(1, x_); + } + if (y_ != 0F) { + output.writeFloat(2, y_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (x_ != 0F) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(1, x_); + } + if (y_ != 0F) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, y_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.cloud.videointelligence.v1.NormalizedVertex)) { + return super.equals(obj); + } + com.google.cloud.videointelligence.v1.NormalizedVertex other = + (com.google.cloud.videointelligence.v1.NormalizedVertex) obj; + + boolean result = true; + result = + result + && (java.lang.Float.floatToIntBits(getX()) + == java.lang.Float.floatToIntBits(other.getX())); + result = + result + && (java.lang.Float.floatToIntBits(getY()) + == java.lang.Float.floatToIntBits(other.getY())); + result = result && unknownFields.equals(other.unknownFields); + return result; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + X_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getX()); + hash = (37 * hash) + Y_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getY()); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.cloud.videointelligence.v1.NormalizedVertex parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.NormalizedVertex parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.NormalizedVertex parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.NormalizedVertex parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.NormalizedVertex parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.NormalizedVertex parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.NormalizedVertex parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.NormalizedVertex parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.NormalizedVertex parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.NormalizedVertex parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.NormalizedVertex parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.NormalizedVertex parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.cloud.videointelligence.v1.NormalizedVertex prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * A vertex represents a 2D point in the image.
+   * NOTE: the normalized vertex coordinates are relative to the original image
+   * and range from 0 to 1.
+   * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.NormalizedVertex} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.cloud.videointelligence.v1.NormalizedVertex) + com.google.cloud.videointelligence.v1.NormalizedVertexOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_NormalizedVertex_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_NormalizedVertex_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.NormalizedVertex.class, + com.google.cloud.videointelligence.v1.NormalizedVertex.Builder.class); + } + + // Construct using com.google.cloud.videointelligence.v1.NormalizedVertex.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} + } + + @java.lang.Override + public Builder clear() { + super.clear(); + x_ = 0F; + + y_ = 0F; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_NormalizedVertex_descriptor; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.NormalizedVertex getDefaultInstanceForType() { + return com.google.cloud.videointelligence.v1.NormalizedVertex.getDefaultInstance(); + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.NormalizedVertex build() { + com.google.cloud.videointelligence.v1.NormalizedVertex result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.NormalizedVertex buildPartial() { + com.google.cloud.videointelligence.v1.NormalizedVertex result = + new com.google.cloud.videointelligence.v1.NormalizedVertex(this); + result.x_ = x_; + result.y_ = y_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return (Builder) super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return (Builder) super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return (Builder) super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return (Builder) super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.cloud.videointelligence.v1.NormalizedVertex) { + return mergeFrom((com.google.cloud.videointelligence.v1.NormalizedVertex) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.cloud.videointelligence.v1.NormalizedVertex other) { + if (other == com.google.cloud.videointelligence.v1.NormalizedVertex.getDefaultInstance()) + return this; + if (other.getX() != 0F) { + setX(other.getX()); + } + if (other.getY() != 0F) { + setY(other.getY()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.cloud.videointelligence.v1.NormalizedVertex parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = + (com.google.cloud.videointelligence.v1.NormalizedVertex) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private float x_; + /** + * + * + *
+     * X coordinate.
+     * 
+ * + * float x = 1; + */ + public float getX() { + return x_; + } + /** + * + * + *
+     * X coordinate.
+     * 
+ * + * float x = 1; + */ + public Builder setX(float value) { + + x_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * X coordinate.
+     * 
+ * + * float x = 1; + */ + public Builder clearX() { + + x_ = 0F; + onChanged(); + return this; + } + + private float y_; + /** + * + * + *
+     * Y coordinate.
+     * 
+ * + * float y = 2; + */ + public float getY() { + return y_; + } + /** + * + * + *
+     * Y coordinate.
+     * 
+ * + * float y = 2; + */ + public Builder setY(float value) { + + y_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Y coordinate.
+     * 
+ * + * float y = 2; + */ + public Builder clearY() { + + y_ = 0F; + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFieldsProto3(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.cloud.videointelligence.v1.NormalizedVertex) + } + + // @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1.NormalizedVertex) + private static final com.google.cloud.videointelligence.v1.NormalizedVertex DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.cloud.videointelligence.v1.NormalizedVertex(); + } + + public static com.google.cloud.videointelligence.v1.NormalizedVertex getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public NormalizedVertex parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new NormalizedVertex(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.NormalizedVertex getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/NormalizedVertexOrBuilder.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/NormalizedVertexOrBuilder.java new file mode 100644 index 000000000000..9aad33032b6d --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/NormalizedVertexOrBuilder.java @@ -0,0 +1,32 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +public interface NormalizedVertexOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.cloud.videointelligence.v1.NormalizedVertex) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * X coordinate.
+   * 
+ * + * float x = 1; + */ + float getX(); + + /** + * + * + *
+   * Y coordinate.
+   * 
+ * + * float y = 2; + */ + float getY(); +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/ObjectTrackingAnnotation.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/ObjectTrackingAnnotation.java new file mode 100644 index 000000000000..d62de0f8a9e4 --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/ObjectTrackingAnnotation.java @@ -0,0 +1,1868 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +/** + * + * + *
+ * Annotations corresponding to one tracked object.
+ * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.ObjectTrackingAnnotation} + */ +public final class ObjectTrackingAnnotation extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.cloud.videointelligence.v1.ObjectTrackingAnnotation) + ObjectTrackingAnnotationOrBuilder { + private static final long serialVersionUID = 0L; + // Use ObjectTrackingAnnotation.newBuilder() to construct. + private ObjectTrackingAnnotation(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ObjectTrackingAnnotation() { + confidence_ = 0F; + frames_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private ObjectTrackingAnnotation( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + com.google.cloud.videointelligence.v1.Entity.Builder subBuilder = null; + if (entity_ != null) { + subBuilder = entity_.toBuilder(); + } + entity_ = + input.readMessage( + com.google.cloud.videointelligence.v1.Entity.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(entity_); + entity_ = subBuilder.buildPartial(); + } + + break; + } + case 18: + { + if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) { + frames_ = + new java.util.ArrayList< + com.google.cloud.videointelligence.v1.ObjectTrackingFrame>(); + mutable_bitField0_ |= 0x00000010; + } + frames_.add( + input.readMessage( + com.google.cloud.videointelligence.v1.ObjectTrackingFrame.parser(), + extensionRegistry)); + break; + } + case 26: + { + com.google.cloud.videointelligence.v1.VideoSegment.Builder subBuilder = null; + if (trackInfoCase_ == 3) { + subBuilder = + ((com.google.cloud.videointelligence.v1.VideoSegment) trackInfo_).toBuilder(); + } + trackInfo_ = + input.readMessage( + com.google.cloud.videointelligence.v1.VideoSegment.parser(), + extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom( + (com.google.cloud.videointelligence.v1.VideoSegment) trackInfo_); + trackInfo_ = subBuilder.buildPartial(); + } + trackInfoCase_ = 3; + break; + } + case 37: + { + confidence_ = input.readFloat(); + break; + } + case 40: + { + trackInfoCase_ = 5; + trackInfo_ = input.readInt64(); + break; + } + default: + { + if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) { + frames_ = java.util.Collections.unmodifiableList(frames_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_ObjectTrackingAnnotation_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_ObjectTrackingAnnotation_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.class, + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.Builder.class); + } + + private int bitField0_; + private int trackInfoCase_ = 0; + private java.lang.Object trackInfo_; + + public enum TrackInfoCase implements com.google.protobuf.Internal.EnumLite { + SEGMENT(3), + TRACK_ID(5), + TRACKINFO_NOT_SET(0); + private final int value; + + private TrackInfoCase(int value) { + this.value = value; + } + /** @deprecated Use {@link #forNumber(int)} instead. */ + @java.lang.Deprecated + public static TrackInfoCase valueOf(int value) { + return forNumber(value); + } + + public static TrackInfoCase forNumber(int value) { + switch (value) { + case 3: + return SEGMENT; + case 5: + return TRACK_ID; + case 0: + return TRACKINFO_NOT_SET; + default: + return null; + } + } + + public int getNumber() { + return this.value; + } + }; + + public TrackInfoCase getTrackInfoCase() { + return TrackInfoCase.forNumber(trackInfoCase_); + } + + public static final int SEGMENT_FIELD_NUMBER = 3; + /** + * + * + *
+   * Non-streaming batch mode ONLY.
+   * Each object track corresponds to one video segment where it appears.
+   * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 3; + */ + public boolean hasSegment() { + return trackInfoCase_ == 3; + } + /** + * + * + *
+   * Non-streaming batch mode ONLY.
+   * Each object track corresponds to one video segment where it appears.
+   * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 3; + */ + public com.google.cloud.videointelligence.v1.VideoSegment getSegment() { + if (trackInfoCase_ == 3) { + return (com.google.cloud.videointelligence.v1.VideoSegment) trackInfo_; + } + return com.google.cloud.videointelligence.v1.VideoSegment.getDefaultInstance(); + } + /** + * + * + *
+   * Non-streaming batch mode ONLY.
+   * Each object track corresponds to one video segment where it appears.
+   * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 3; + */ + public com.google.cloud.videointelligence.v1.VideoSegmentOrBuilder getSegmentOrBuilder() { + if (trackInfoCase_ == 3) { + return (com.google.cloud.videointelligence.v1.VideoSegment) trackInfo_; + } + return com.google.cloud.videointelligence.v1.VideoSegment.getDefaultInstance(); + } + + public static final int TRACK_ID_FIELD_NUMBER = 5; + /** + * + * + *
+   * Streaming mode ONLY.
+   * In streaming mode, we do not know the end time of a tracked object
+   * before it is completed. Hence, there is no VideoSegment info returned.
+   * Instead, we provide a unique identifiable integer track_id so that
+   * the customers can correlate the results of the ongoing
+   * ObjectTrackAnnotation of the same track_id over time.
+   * 
+ * + * int64 track_id = 5; + */ + public long getTrackId() { + if (trackInfoCase_ == 5) { + return (java.lang.Long) trackInfo_; + } + return 0L; + } + + public static final int ENTITY_FIELD_NUMBER = 1; + private com.google.cloud.videointelligence.v1.Entity entity_; + /** + * + * + *
+   * Entity to specify the object category that this track is labeled as.
+   * 
+ * + * .google.cloud.videointelligence.v1.Entity entity = 1; + */ + public boolean hasEntity() { + return entity_ != null; + } + /** + * + * + *
+   * Entity to specify the object category that this track is labeled as.
+   * 
+ * + * .google.cloud.videointelligence.v1.Entity entity = 1; + */ + public com.google.cloud.videointelligence.v1.Entity getEntity() { + return entity_ == null + ? com.google.cloud.videointelligence.v1.Entity.getDefaultInstance() + : entity_; + } + /** + * + * + *
+   * Entity to specify the object category that this track is labeled as.
+   * 
+ * + * .google.cloud.videointelligence.v1.Entity entity = 1; + */ + public com.google.cloud.videointelligence.v1.EntityOrBuilder getEntityOrBuilder() { + return getEntity(); + } + + public static final int CONFIDENCE_FIELD_NUMBER = 4; + private float confidence_; + /** + * + * + *
+   * Object category's labeling confidence of this track.
+   * 
+ * + * float confidence = 4; + */ + public float getConfidence() { + return confidence_; + } + + public static final int FRAMES_FIELD_NUMBER = 2; + private java.util.List frames_; + /** + * + * + *
+   * Information corresponding to all frames where this object track appears.
+   * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+   * messages in frames.
+   * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public java.util.List getFramesList() { + return frames_; + } + /** + * + * + *
+   * Information corresponding to all frames where this object track appears.
+   * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+   * messages in frames.
+   * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public java.util.List< + ? extends com.google.cloud.videointelligence.v1.ObjectTrackingFrameOrBuilder> + getFramesOrBuilderList() { + return frames_; + } + /** + * + * + *
+   * Information corresponding to all frames where this object track appears.
+   * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+   * messages in frames.
+   * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public int getFramesCount() { + return frames_.size(); + } + /** + * + * + *
+   * Information corresponding to all frames where this object track appears.
+   * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+   * messages in frames.
+   * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public com.google.cloud.videointelligence.v1.ObjectTrackingFrame getFrames(int index) { + return frames_.get(index); + } + /** + * + * + *
+   * Information corresponding to all frames where this object track appears.
+   * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+   * messages in frames.
+   * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public com.google.cloud.videointelligence.v1.ObjectTrackingFrameOrBuilder getFramesOrBuilder( + int index) { + return frames_.get(index); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (entity_ != null) { + output.writeMessage(1, getEntity()); + } + for (int i = 0; i < frames_.size(); i++) { + output.writeMessage(2, frames_.get(i)); + } + if (trackInfoCase_ == 3) { + output.writeMessage(3, (com.google.cloud.videointelligence.v1.VideoSegment) trackInfo_); + } + if (confidence_ != 0F) { + output.writeFloat(4, confidence_); + } + if (trackInfoCase_ == 5) { + output.writeInt64(5, (long) ((java.lang.Long) trackInfo_)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (entity_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getEntity()); + } + for (int i = 0; i < frames_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, frames_.get(i)); + } + if (trackInfoCase_ == 3) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize( + 3, (com.google.cloud.videointelligence.v1.VideoSegment) trackInfo_); + } + if (confidence_ != 0F) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(4, confidence_); + } + if (trackInfoCase_ == 5) { + size += + com.google.protobuf.CodedOutputStream.computeInt64Size( + 5, (long) ((java.lang.Long) trackInfo_)); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation)) { + return super.equals(obj); + } + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation other = + (com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation) obj; + + boolean result = true; + result = result && (hasEntity() == other.hasEntity()); + if (hasEntity()) { + result = result && getEntity().equals(other.getEntity()); + } + result = + result + && (java.lang.Float.floatToIntBits(getConfidence()) + == java.lang.Float.floatToIntBits(other.getConfidence())); + result = result && getFramesList().equals(other.getFramesList()); + result = result && getTrackInfoCase().equals(other.getTrackInfoCase()); + if (!result) return false; + switch (trackInfoCase_) { + case 3: + result = result && getSegment().equals(other.getSegment()); + break; + case 5: + result = result && (getTrackId() == other.getTrackId()); + break; + case 0: + default: + } + result = result && unknownFields.equals(other.unknownFields); + return result; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasEntity()) { + hash = (37 * hash) + ENTITY_FIELD_NUMBER; + hash = (53 * hash) + getEntity().hashCode(); + } + hash = (37 * hash) + CONFIDENCE_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getConfidence()); + if (getFramesCount() > 0) { + hash = (37 * hash) + FRAMES_FIELD_NUMBER; + hash = (53 * hash) + getFramesList().hashCode(); + } + switch (trackInfoCase_) { + case 3: + hash = (37 * hash) + SEGMENT_FIELD_NUMBER; + hash = (53 * hash) + getSegment().hashCode(); + break; + case 5: + hash = (37 * hash) + TRACK_ID_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong(getTrackId()); + break; + case 0: + default: + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation parseFrom( + byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Annotations corresponding to one tracked object.
+   * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.ObjectTrackingAnnotation} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.cloud.videointelligence.v1.ObjectTrackingAnnotation) + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotationOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_ObjectTrackingAnnotation_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_ObjectTrackingAnnotation_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.class, + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.Builder.class); + } + + // Construct using com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getFramesFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + if (entityBuilder_ == null) { + entity_ = null; + } else { + entity_ = null; + entityBuilder_ = null; + } + confidence_ = 0F; + + if (framesBuilder_ == null) { + frames_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + } else { + framesBuilder_.clear(); + } + trackInfoCase_ = 0; + trackInfo_ = null; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_ObjectTrackingAnnotation_descriptor; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation + getDefaultInstanceForType() { + return com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.getDefaultInstance(); + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation build() { + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation buildPartial() { + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation result = + new com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (trackInfoCase_ == 3) { + if (segmentBuilder_ == null) { + result.trackInfo_ = trackInfo_; + } else { + result.trackInfo_ = segmentBuilder_.build(); + } + } + if (trackInfoCase_ == 5) { + result.trackInfo_ = trackInfo_; + } + if (entityBuilder_ == null) { + result.entity_ = entity_; + } else { + result.entity_ = entityBuilder_.build(); + } + result.confidence_ = confidence_; + if (framesBuilder_ == null) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { + frames_ = java.util.Collections.unmodifiableList(frames_); + bitField0_ = (bitField0_ & ~0x00000010); + } + result.frames_ = frames_; + } else { + result.frames_ = framesBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + result.trackInfoCase_ = trackInfoCase_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return (Builder) super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return (Builder) super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return (Builder) super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return (Builder) super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation) { + return mergeFrom((com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation other) { + if (other + == com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.getDefaultInstance()) + return this; + if (other.hasEntity()) { + mergeEntity(other.getEntity()); + } + if (other.getConfidence() != 0F) { + setConfidence(other.getConfidence()); + } + if (framesBuilder_ == null) { + if (!other.frames_.isEmpty()) { + if (frames_.isEmpty()) { + frames_ = other.frames_; + bitField0_ = (bitField0_ & ~0x00000010); + } else { + ensureFramesIsMutable(); + frames_.addAll(other.frames_); + } + onChanged(); + } + } else { + if (!other.frames_.isEmpty()) { + if (framesBuilder_.isEmpty()) { + framesBuilder_.dispose(); + framesBuilder_ = null; + frames_ = other.frames_; + bitField0_ = (bitField0_ & ~0x00000010); + framesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getFramesFieldBuilder() + : null; + } else { + framesBuilder_.addAllMessages(other.frames_); + } + } + } + switch (other.getTrackInfoCase()) { + case SEGMENT: + { + mergeSegment(other.getSegment()); + break; + } + case TRACK_ID: + { + setTrackId(other.getTrackId()); + break; + } + case TRACKINFO_NOT_SET: + { + break; + } + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = + (com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation) + e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int trackInfoCase_ = 0; + private java.lang.Object trackInfo_; + + public TrackInfoCase getTrackInfoCase() { + return TrackInfoCase.forNumber(trackInfoCase_); + } + + public Builder clearTrackInfo() { + trackInfoCase_ = 0; + trackInfo_ = null; + onChanged(); + return this; + } + + private int bitField0_; + + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.VideoSegment, + com.google.cloud.videointelligence.v1.VideoSegment.Builder, + com.google.cloud.videointelligence.v1.VideoSegmentOrBuilder> + segmentBuilder_; + /** + * + * + *
+     * Non-streaming batch mode ONLY.
+     * Each object track corresponds to one video segment where it appears.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 3; + */ + public boolean hasSegment() { + return trackInfoCase_ == 3; + } + /** + * + * + *
+     * Non-streaming batch mode ONLY.
+     * Each object track corresponds to one video segment where it appears.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 3; + */ + public com.google.cloud.videointelligence.v1.VideoSegment getSegment() { + if (segmentBuilder_ == null) { + if (trackInfoCase_ == 3) { + return (com.google.cloud.videointelligence.v1.VideoSegment) trackInfo_; + } + return com.google.cloud.videointelligence.v1.VideoSegment.getDefaultInstance(); + } else { + if (trackInfoCase_ == 3) { + return segmentBuilder_.getMessage(); + } + return com.google.cloud.videointelligence.v1.VideoSegment.getDefaultInstance(); + } + } + /** + * + * + *
+     * Non-streaming batch mode ONLY.
+     * Each object track corresponds to one video segment where it appears.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 3; + */ + public Builder setSegment(com.google.cloud.videointelligence.v1.VideoSegment value) { + if (segmentBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + trackInfo_ = value; + onChanged(); + } else { + segmentBuilder_.setMessage(value); + } + trackInfoCase_ = 3; + return this; + } + /** + * + * + *
+     * Non-streaming batch mode ONLY.
+     * Each object track corresponds to one video segment where it appears.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 3; + */ + public Builder setSegment( + com.google.cloud.videointelligence.v1.VideoSegment.Builder builderForValue) { + if (segmentBuilder_ == null) { + trackInfo_ = builderForValue.build(); + onChanged(); + } else { + segmentBuilder_.setMessage(builderForValue.build()); + } + trackInfoCase_ = 3; + return this; + } + /** + * + * + *
+     * Non-streaming batch mode ONLY.
+     * Each object track corresponds to one video segment where it appears.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 3; + */ + public Builder mergeSegment(com.google.cloud.videointelligence.v1.VideoSegment value) { + if (segmentBuilder_ == null) { + if (trackInfoCase_ == 3 + && trackInfo_ + != com.google.cloud.videointelligence.v1.VideoSegment.getDefaultInstance()) { + trackInfo_ = + com.google.cloud.videointelligence.v1.VideoSegment.newBuilder( + (com.google.cloud.videointelligence.v1.VideoSegment) trackInfo_) + .mergeFrom(value) + .buildPartial(); + } else { + trackInfo_ = value; + } + onChanged(); + } else { + if (trackInfoCase_ == 3) { + segmentBuilder_.mergeFrom(value); + } + segmentBuilder_.setMessage(value); + } + trackInfoCase_ = 3; + return this; + } + /** + * + * + *
+     * Non-streaming batch mode ONLY.
+     * Each object track corresponds to one video segment where it appears.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 3; + */ + public Builder clearSegment() { + if (segmentBuilder_ == null) { + if (trackInfoCase_ == 3) { + trackInfoCase_ = 0; + trackInfo_ = null; + onChanged(); + } + } else { + if (trackInfoCase_ == 3) { + trackInfoCase_ = 0; + trackInfo_ = null; + } + segmentBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Non-streaming batch mode ONLY.
+     * Each object track corresponds to one video segment where it appears.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 3; + */ + public com.google.cloud.videointelligence.v1.VideoSegment.Builder getSegmentBuilder() { + return getSegmentFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Non-streaming batch mode ONLY.
+     * Each object track corresponds to one video segment where it appears.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 3; + */ + public com.google.cloud.videointelligence.v1.VideoSegmentOrBuilder getSegmentOrBuilder() { + if ((trackInfoCase_ == 3) && (segmentBuilder_ != null)) { + return segmentBuilder_.getMessageOrBuilder(); + } else { + if (trackInfoCase_ == 3) { + return (com.google.cloud.videointelligence.v1.VideoSegment) trackInfo_; + } + return com.google.cloud.videointelligence.v1.VideoSegment.getDefaultInstance(); + } + } + /** + * + * + *
+     * Non-streaming batch mode ONLY.
+     * Each object track corresponds to one video segment where it appears.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.VideoSegment, + com.google.cloud.videointelligence.v1.VideoSegment.Builder, + com.google.cloud.videointelligence.v1.VideoSegmentOrBuilder> + getSegmentFieldBuilder() { + if (segmentBuilder_ == null) { + if (!(trackInfoCase_ == 3)) { + trackInfo_ = com.google.cloud.videointelligence.v1.VideoSegment.getDefaultInstance(); + } + segmentBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.VideoSegment, + com.google.cloud.videointelligence.v1.VideoSegment.Builder, + com.google.cloud.videointelligence.v1.VideoSegmentOrBuilder>( + (com.google.cloud.videointelligence.v1.VideoSegment) trackInfo_, + getParentForChildren(), + isClean()); + trackInfo_ = null; + } + trackInfoCase_ = 3; + onChanged(); + ; + return segmentBuilder_; + } + + /** + * + * + *
+     * Streaming mode ONLY.
+     * In streaming mode, we do not know the end time of a tracked object
+     * before it is completed. Hence, there is no VideoSegment info returned.
+     * Instead, we provide a unique identifiable integer track_id so that
+     * the customers can correlate the results of the ongoing
+     * ObjectTrackAnnotation of the same track_id over time.
+     * 
+ * + * int64 track_id = 5; + */ + public long getTrackId() { + if (trackInfoCase_ == 5) { + return (java.lang.Long) trackInfo_; + } + return 0L; + } + /** + * + * + *
+     * Streaming mode ONLY.
+     * In streaming mode, we do not know the end time of a tracked object
+     * before it is completed. Hence, there is no VideoSegment info returned.
+     * Instead, we provide a unique identifiable integer track_id so that
+     * the customers can correlate the results of the ongoing
+     * ObjectTrackAnnotation of the same track_id over time.
+     * 
+ * + * int64 track_id = 5; + */ + public Builder setTrackId(long value) { + trackInfoCase_ = 5; + trackInfo_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Streaming mode ONLY.
+     * In streaming mode, we do not know the end time of a tracked object
+     * before it is completed. Hence, there is no VideoSegment info returned.
+     * Instead, we provide a unique identifiable integer track_id so that
+     * the customers can correlate the results of the ongoing
+     * ObjectTrackAnnotation of the same track_id over time.
+     * 
+ * + * int64 track_id = 5; + */ + public Builder clearTrackId() { + if (trackInfoCase_ == 5) { + trackInfoCase_ = 0; + trackInfo_ = null; + onChanged(); + } + return this; + } + + private com.google.cloud.videointelligence.v1.Entity entity_ = null; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.Entity, + com.google.cloud.videointelligence.v1.Entity.Builder, + com.google.cloud.videointelligence.v1.EntityOrBuilder> + entityBuilder_; + /** + * + * + *
+     * Entity to specify the object category that this track is labeled as.
+     * 
+ * + * .google.cloud.videointelligence.v1.Entity entity = 1; + */ + public boolean hasEntity() { + return entityBuilder_ != null || entity_ != null; + } + /** + * + * + *
+     * Entity to specify the object category that this track is labeled as.
+     * 
+ * + * .google.cloud.videointelligence.v1.Entity entity = 1; + */ + public com.google.cloud.videointelligence.v1.Entity getEntity() { + if (entityBuilder_ == null) { + return entity_ == null + ? com.google.cloud.videointelligence.v1.Entity.getDefaultInstance() + : entity_; + } else { + return entityBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Entity to specify the object category that this track is labeled as.
+     * 
+ * + * .google.cloud.videointelligence.v1.Entity entity = 1; + */ + public Builder setEntity(com.google.cloud.videointelligence.v1.Entity value) { + if (entityBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + entity_ = value; + onChanged(); + } else { + entityBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * Entity to specify the object category that this track is labeled as.
+     * 
+ * + * .google.cloud.videointelligence.v1.Entity entity = 1; + */ + public Builder setEntity(com.google.cloud.videointelligence.v1.Entity.Builder builderForValue) { + if (entityBuilder_ == null) { + entity_ = builderForValue.build(); + onChanged(); + } else { + entityBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * Entity to specify the object category that this track is labeled as.
+     * 
+ * + * .google.cloud.videointelligence.v1.Entity entity = 1; + */ + public Builder mergeEntity(com.google.cloud.videointelligence.v1.Entity value) { + if (entityBuilder_ == null) { + if (entity_ != null) { + entity_ = + com.google.cloud.videointelligence.v1.Entity.newBuilder(entity_) + .mergeFrom(value) + .buildPartial(); + } else { + entity_ = value; + } + onChanged(); + } else { + entityBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * Entity to specify the object category that this track is labeled as.
+     * 
+ * + * .google.cloud.videointelligence.v1.Entity entity = 1; + */ + public Builder clearEntity() { + if (entityBuilder_ == null) { + entity_ = null; + onChanged(); + } else { + entity_ = null; + entityBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * Entity to specify the object category that this track is labeled as.
+     * 
+ * + * .google.cloud.videointelligence.v1.Entity entity = 1; + */ + public com.google.cloud.videointelligence.v1.Entity.Builder getEntityBuilder() { + + onChanged(); + return getEntityFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Entity to specify the object category that this track is labeled as.
+     * 
+ * + * .google.cloud.videointelligence.v1.Entity entity = 1; + */ + public com.google.cloud.videointelligence.v1.EntityOrBuilder getEntityOrBuilder() { + if (entityBuilder_ != null) { + return entityBuilder_.getMessageOrBuilder(); + } else { + return entity_ == null + ? com.google.cloud.videointelligence.v1.Entity.getDefaultInstance() + : entity_; + } + } + /** + * + * + *
+     * Entity to specify the object category that this track is labeled as.
+     * 
+ * + * .google.cloud.videointelligence.v1.Entity entity = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.Entity, + com.google.cloud.videointelligence.v1.Entity.Builder, + com.google.cloud.videointelligence.v1.EntityOrBuilder> + getEntityFieldBuilder() { + if (entityBuilder_ == null) { + entityBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.Entity, + com.google.cloud.videointelligence.v1.Entity.Builder, + com.google.cloud.videointelligence.v1.EntityOrBuilder>( + getEntity(), getParentForChildren(), isClean()); + entity_ = null; + } + return entityBuilder_; + } + + private float confidence_; + /** + * + * + *
+     * Object category's labeling confidence of this track.
+     * 
+ * + * float confidence = 4; + */ + public float getConfidence() { + return confidence_; + } + /** + * + * + *
+     * Object category's labeling confidence of this track.
+     * 
+ * + * float confidence = 4; + */ + public Builder setConfidence(float value) { + + confidence_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Object category's labeling confidence of this track.
+     * 
+ * + * float confidence = 4; + */ + public Builder clearConfidence() { + + confidence_ = 0F; + onChanged(); + return this; + } + + private java.util.List frames_ = + java.util.Collections.emptyList(); + + private void ensureFramesIsMutable() { + if (!((bitField0_ & 0x00000010) == 0x00000010)) { + frames_ = + new java.util.ArrayList( + frames_); + bitField0_ |= 0x00000010; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.ObjectTrackingFrame, + com.google.cloud.videointelligence.v1.ObjectTrackingFrame.Builder, + com.google.cloud.videointelligence.v1.ObjectTrackingFrameOrBuilder> + framesBuilder_; + + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public java.util.List + getFramesList() { + if (framesBuilder_ == null) { + return java.util.Collections.unmodifiableList(frames_); + } else { + return framesBuilder_.getMessageList(); + } + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public int getFramesCount() { + if (framesBuilder_ == null) { + return frames_.size(); + } else { + return framesBuilder_.getCount(); + } + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public com.google.cloud.videointelligence.v1.ObjectTrackingFrame getFrames(int index) { + if (framesBuilder_ == null) { + return frames_.get(index); + } else { + return framesBuilder_.getMessage(index); + } + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public Builder setFrames( + int index, com.google.cloud.videointelligence.v1.ObjectTrackingFrame value) { + if (framesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureFramesIsMutable(); + frames_.set(index, value); + onChanged(); + } else { + framesBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public Builder setFrames( + int index, + com.google.cloud.videointelligence.v1.ObjectTrackingFrame.Builder builderForValue) { + if (framesBuilder_ == null) { + ensureFramesIsMutable(); + frames_.set(index, builderForValue.build()); + onChanged(); + } else { + framesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public Builder addFrames(com.google.cloud.videointelligence.v1.ObjectTrackingFrame value) { + if (framesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureFramesIsMutable(); + frames_.add(value); + onChanged(); + } else { + framesBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public Builder addFrames( + int index, com.google.cloud.videointelligence.v1.ObjectTrackingFrame value) { + if (framesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureFramesIsMutable(); + frames_.add(index, value); + onChanged(); + } else { + framesBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public Builder addFrames( + com.google.cloud.videointelligence.v1.ObjectTrackingFrame.Builder builderForValue) { + if (framesBuilder_ == null) { + ensureFramesIsMutable(); + frames_.add(builderForValue.build()); + onChanged(); + } else { + framesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public Builder addFrames( + int index, + com.google.cloud.videointelligence.v1.ObjectTrackingFrame.Builder builderForValue) { + if (framesBuilder_ == null) { + ensureFramesIsMutable(); + frames_.add(index, builderForValue.build()); + onChanged(); + } else { + framesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public Builder addAllFrames( + java.lang.Iterable + values) { + if (framesBuilder_ == null) { + ensureFramesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, frames_); + onChanged(); + } else { + framesBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public Builder clearFrames() { + if (framesBuilder_ == null) { + frames_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + onChanged(); + } else { + framesBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public Builder removeFrames(int index) { + if (framesBuilder_ == null) { + ensureFramesIsMutable(); + frames_.remove(index); + onChanged(); + } else { + framesBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public com.google.cloud.videointelligence.v1.ObjectTrackingFrame.Builder getFramesBuilder( + int index) { + return getFramesFieldBuilder().getBuilder(index); + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public com.google.cloud.videointelligence.v1.ObjectTrackingFrameOrBuilder getFramesOrBuilder( + int index) { + if (framesBuilder_ == null) { + return frames_.get(index); + } else { + return framesBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public java.util.List< + ? extends com.google.cloud.videointelligence.v1.ObjectTrackingFrameOrBuilder> + getFramesOrBuilderList() { + if (framesBuilder_ != null) { + return framesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(frames_); + } + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public com.google.cloud.videointelligence.v1.ObjectTrackingFrame.Builder addFramesBuilder() { + return getFramesFieldBuilder() + .addBuilder( + com.google.cloud.videointelligence.v1.ObjectTrackingFrame.getDefaultInstance()); + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public com.google.cloud.videointelligence.v1.ObjectTrackingFrame.Builder addFramesBuilder( + int index) { + return getFramesFieldBuilder() + .addBuilder( + index, + com.google.cloud.videointelligence.v1.ObjectTrackingFrame.getDefaultInstance()); + } + /** + * + * + *
+     * Information corresponding to all frames where this object track appears.
+     * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+     * messages in frames.
+     * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + public java.util.List + getFramesBuilderList() { + return getFramesFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.ObjectTrackingFrame, + com.google.cloud.videointelligence.v1.ObjectTrackingFrame.Builder, + com.google.cloud.videointelligence.v1.ObjectTrackingFrameOrBuilder> + getFramesFieldBuilder() { + if (framesBuilder_ == null) { + framesBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.ObjectTrackingFrame, + com.google.cloud.videointelligence.v1.ObjectTrackingFrame.Builder, + com.google.cloud.videointelligence.v1.ObjectTrackingFrameOrBuilder>( + frames_, + ((bitField0_ & 0x00000010) == 0x00000010), + getParentForChildren(), + isClean()); + frames_ = null; + } + return framesBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFieldsProto3(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.cloud.videointelligence.v1.ObjectTrackingAnnotation) + } + + // @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1.ObjectTrackingAnnotation) + private static final com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation + DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation(); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation + getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ObjectTrackingAnnotation parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ObjectTrackingAnnotation(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation + getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/ObjectTrackingAnnotationOrBuilder.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/ObjectTrackingAnnotationOrBuilder.java new file mode 100644 index 000000000000..ecb08e85e1ef --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/ObjectTrackingAnnotationOrBuilder.java @@ -0,0 +1,172 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +public interface ObjectTrackingAnnotationOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.cloud.videointelligence.v1.ObjectTrackingAnnotation) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Non-streaming batch mode ONLY.
+   * Each object track corresponds to one video segment where it appears.
+   * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 3; + */ + boolean hasSegment(); + /** + * + * + *
+   * Non-streaming batch mode ONLY.
+   * Each object track corresponds to one video segment where it appears.
+   * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 3; + */ + com.google.cloud.videointelligence.v1.VideoSegment getSegment(); + /** + * + * + *
+   * Non-streaming batch mode ONLY.
+   * Each object track corresponds to one video segment where it appears.
+   * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 3; + */ + com.google.cloud.videointelligence.v1.VideoSegmentOrBuilder getSegmentOrBuilder(); + + /** + * + * + *
+   * Streaming mode ONLY.
+   * In streaming mode, we do not know the end time of a tracked object
+   * before it is completed. Hence, there is no VideoSegment info returned.
+   * Instead, we provide a unique identifiable integer track_id so that
+   * the customers can correlate the results of the ongoing
+   * ObjectTrackAnnotation of the same track_id over time.
+   * 
+ * + * int64 track_id = 5; + */ + long getTrackId(); + + /** + * + * + *
+   * Entity to specify the object category that this track is labeled as.
+   * 
+ * + * .google.cloud.videointelligence.v1.Entity entity = 1; + */ + boolean hasEntity(); + /** + * + * + *
+   * Entity to specify the object category that this track is labeled as.
+   * 
+ * + * .google.cloud.videointelligence.v1.Entity entity = 1; + */ + com.google.cloud.videointelligence.v1.Entity getEntity(); + /** + * + * + *
+   * Entity to specify the object category that this track is labeled as.
+   * 
+ * + * .google.cloud.videointelligence.v1.Entity entity = 1; + */ + com.google.cloud.videointelligence.v1.EntityOrBuilder getEntityOrBuilder(); + + /** + * + * + *
+   * Object category's labeling confidence of this track.
+   * 
+ * + * float confidence = 4; + */ + float getConfidence(); + + /** + * + * + *
+   * Information corresponding to all frames where this object track appears.
+   * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+   * messages in frames.
+   * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + java.util.List getFramesList(); + /** + * + * + *
+   * Information corresponding to all frames where this object track appears.
+   * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+   * messages in frames.
+   * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + com.google.cloud.videointelligence.v1.ObjectTrackingFrame getFrames(int index); + /** + * + * + *
+   * Information corresponding to all frames where this object track appears.
+   * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+   * messages in frames.
+   * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + int getFramesCount(); + /** + * + * + *
+   * Information corresponding to all frames where this object track appears.
+   * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+   * messages in frames.
+   * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + java.util.List + getFramesOrBuilderList(); + /** + * + * + *
+   * Information corresponding to all frames where this object track appears.
+   * Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame
+   * messages in frames.
+   * Streaming mode: it can only be one ObjectTrackingFrame message in frames.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingFrame frames = 2; + */ + com.google.cloud.videointelligence.v1.ObjectTrackingFrameOrBuilder getFramesOrBuilder(int index); + + public com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.TrackInfoCase + getTrackInfoCase(); +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/ObjectTrackingFrame.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/ObjectTrackingFrame.java new file mode 100644 index 000000000000..90c38769d66a --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/ObjectTrackingFrame.java @@ -0,0 +1,989 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +/** + * + * + *
+ * Video frame level annotations for object detection and tracking. This field
+ * stores per frame location, time offset, and confidence.
+ * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.ObjectTrackingFrame} + */ +public final class ObjectTrackingFrame extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.cloud.videointelligence.v1.ObjectTrackingFrame) + ObjectTrackingFrameOrBuilder { + private static final long serialVersionUID = 0L; + // Use ObjectTrackingFrame.newBuilder() to construct. + private ObjectTrackingFrame(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private ObjectTrackingFrame() {} + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private ObjectTrackingFrame( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + com.google.cloud.videointelligence.v1.NormalizedBoundingBox.Builder subBuilder = null; + if (normalizedBoundingBox_ != null) { + subBuilder = normalizedBoundingBox_.toBuilder(); + } + normalizedBoundingBox_ = + input.readMessage( + com.google.cloud.videointelligence.v1.NormalizedBoundingBox.parser(), + extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(normalizedBoundingBox_); + normalizedBoundingBox_ = subBuilder.buildPartial(); + } + + break; + } + case 18: + { + com.google.protobuf.Duration.Builder subBuilder = null; + if (timeOffset_ != null) { + subBuilder = timeOffset_.toBuilder(); + } + timeOffset_ = + input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(timeOffset_); + timeOffset_ = subBuilder.buildPartial(); + } + + break; + } + default: + { + if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_ObjectTrackingFrame_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_ObjectTrackingFrame_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.ObjectTrackingFrame.class, + com.google.cloud.videointelligence.v1.ObjectTrackingFrame.Builder.class); + } + + public static final int NORMALIZED_BOUNDING_BOX_FIELD_NUMBER = 1; + private com.google.cloud.videointelligence.v1.NormalizedBoundingBox normalizedBoundingBox_; + /** + * + * + *
+   * The normalized bounding box location of this object track for the frame.
+   * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingBox normalized_bounding_box = 1; + * + */ + public boolean hasNormalizedBoundingBox() { + return normalizedBoundingBox_ != null; + } + /** + * + * + *
+   * The normalized bounding box location of this object track for the frame.
+   * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingBox normalized_bounding_box = 1; + * + */ + public com.google.cloud.videointelligence.v1.NormalizedBoundingBox getNormalizedBoundingBox() { + return normalizedBoundingBox_ == null + ? com.google.cloud.videointelligence.v1.NormalizedBoundingBox.getDefaultInstance() + : normalizedBoundingBox_; + } + /** + * + * + *
+   * The normalized bounding box location of this object track for the frame.
+   * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingBox normalized_bounding_box = 1; + * + */ + public com.google.cloud.videointelligence.v1.NormalizedBoundingBoxOrBuilder + getNormalizedBoundingBoxOrBuilder() { + return getNormalizedBoundingBox(); + } + + public static final int TIME_OFFSET_FIELD_NUMBER = 2; + private com.google.protobuf.Duration timeOffset_; + /** + * + * + *
+   * The timestamp of the frame in microseconds.
+   * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public boolean hasTimeOffset() { + return timeOffset_ != null; + } + /** + * + * + *
+   * The timestamp of the frame in microseconds.
+   * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public com.google.protobuf.Duration getTimeOffset() { + return timeOffset_ == null ? com.google.protobuf.Duration.getDefaultInstance() : timeOffset_; + } + /** + * + * + *
+   * The timestamp of the frame in microseconds.
+   * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public com.google.protobuf.DurationOrBuilder getTimeOffsetOrBuilder() { + return getTimeOffset(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (normalizedBoundingBox_ != null) { + output.writeMessage(1, getNormalizedBoundingBox()); + } + if (timeOffset_ != null) { + output.writeMessage(2, getTimeOffset()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (normalizedBoundingBox_ != null) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize(1, getNormalizedBoundingBox()); + } + if (timeOffset_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTimeOffset()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.cloud.videointelligence.v1.ObjectTrackingFrame)) { + return super.equals(obj); + } + com.google.cloud.videointelligence.v1.ObjectTrackingFrame other = + (com.google.cloud.videointelligence.v1.ObjectTrackingFrame) obj; + + boolean result = true; + result = result && (hasNormalizedBoundingBox() == other.hasNormalizedBoundingBox()); + if (hasNormalizedBoundingBox()) { + result = result && getNormalizedBoundingBox().equals(other.getNormalizedBoundingBox()); + } + result = result && (hasTimeOffset() == other.hasTimeOffset()); + if (hasTimeOffset()) { + result = result && getTimeOffset().equals(other.getTimeOffset()); + } + result = result && unknownFields.equals(other.unknownFields); + return result; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasNormalizedBoundingBox()) { + hash = (37 * hash) + NORMALIZED_BOUNDING_BOX_FIELD_NUMBER; + hash = (53 * hash) + getNormalizedBoundingBox().hashCode(); + } + if (hasTimeOffset()) { + hash = (37 * hash) + TIME_OFFSET_FIELD_NUMBER; + hash = (53 * hash) + getTimeOffset().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingFrame parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingFrame parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingFrame parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingFrame parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingFrame parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingFrame parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingFrame parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingFrame parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingFrame parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingFrame parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingFrame parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingFrame parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.cloud.videointelligence.v1.ObjectTrackingFrame prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Video frame level annotations for object detection and tracking. This field
+   * stores per frame location, time offset, and confidence.
+   * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.ObjectTrackingFrame} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.cloud.videointelligence.v1.ObjectTrackingFrame) + com.google.cloud.videointelligence.v1.ObjectTrackingFrameOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_ObjectTrackingFrame_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_ObjectTrackingFrame_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.ObjectTrackingFrame.class, + com.google.cloud.videointelligence.v1.ObjectTrackingFrame.Builder.class); + } + + // Construct using com.google.cloud.videointelligence.v1.ObjectTrackingFrame.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} + } + + @java.lang.Override + public Builder clear() { + super.clear(); + if (normalizedBoundingBoxBuilder_ == null) { + normalizedBoundingBox_ = null; + } else { + normalizedBoundingBox_ = null; + normalizedBoundingBoxBuilder_ = null; + } + if (timeOffsetBuilder_ == null) { + timeOffset_ = null; + } else { + timeOffset_ = null; + timeOffsetBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_ObjectTrackingFrame_descriptor; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.ObjectTrackingFrame getDefaultInstanceForType() { + return com.google.cloud.videointelligence.v1.ObjectTrackingFrame.getDefaultInstance(); + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.ObjectTrackingFrame build() { + com.google.cloud.videointelligence.v1.ObjectTrackingFrame result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.ObjectTrackingFrame buildPartial() { + com.google.cloud.videointelligence.v1.ObjectTrackingFrame result = + new com.google.cloud.videointelligence.v1.ObjectTrackingFrame(this); + if (normalizedBoundingBoxBuilder_ == null) { + result.normalizedBoundingBox_ = normalizedBoundingBox_; + } else { + result.normalizedBoundingBox_ = normalizedBoundingBoxBuilder_.build(); + } + if (timeOffsetBuilder_ == null) { + result.timeOffset_ = timeOffset_; + } else { + result.timeOffset_ = timeOffsetBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return (Builder) super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return (Builder) super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return (Builder) super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return (Builder) super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.cloud.videointelligence.v1.ObjectTrackingFrame) { + return mergeFrom((com.google.cloud.videointelligence.v1.ObjectTrackingFrame) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.cloud.videointelligence.v1.ObjectTrackingFrame other) { + if (other == com.google.cloud.videointelligence.v1.ObjectTrackingFrame.getDefaultInstance()) + return this; + if (other.hasNormalizedBoundingBox()) { + mergeNormalizedBoundingBox(other.getNormalizedBoundingBox()); + } + if (other.hasTimeOffset()) { + mergeTimeOffset(other.getTimeOffset()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.cloud.videointelligence.v1.ObjectTrackingFrame parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = + (com.google.cloud.videointelligence.v1.ObjectTrackingFrame) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private com.google.cloud.videointelligence.v1.NormalizedBoundingBox normalizedBoundingBox_ = + null; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.NormalizedBoundingBox, + com.google.cloud.videointelligence.v1.NormalizedBoundingBox.Builder, + com.google.cloud.videointelligence.v1.NormalizedBoundingBoxOrBuilder> + normalizedBoundingBoxBuilder_; + /** + * + * + *
+     * The normalized bounding box location of this object track for the frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingBox normalized_bounding_box = 1; + * + */ + public boolean hasNormalizedBoundingBox() { + return normalizedBoundingBoxBuilder_ != null || normalizedBoundingBox_ != null; + } + /** + * + * + *
+     * The normalized bounding box location of this object track for the frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingBox normalized_bounding_box = 1; + * + */ + public com.google.cloud.videointelligence.v1.NormalizedBoundingBox getNormalizedBoundingBox() { + if (normalizedBoundingBoxBuilder_ == null) { + return normalizedBoundingBox_ == null + ? com.google.cloud.videointelligence.v1.NormalizedBoundingBox.getDefaultInstance() + : normalizedBoundingBox_; + } else { + return normalizedBoundingBoxBuilder_.getMessage(); + } + } + /** + * + * + *
+     * The normalized bounding box location of this object track for the frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingBox normalized_bounding_box = 1; + * + */ + public Builder setNormalizedBoundingBox( + com.google.cloud.videointelligence.v1.NormalizedBoundingBox value) { + if (normalizedBoundingBoxBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + normalizedBoundingBox_ = value; + onChanged(); + } else { + normalizedBoundingBoxBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * The normalized bounding box location of this object track for the frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingBox normalized_bounding_box = 1; + * + */ + public Builder setNormalizedBoundingBox( + com.google.cloud.videointelligence.v1.NormalizedBoundingBox.Builder builderForValue) { + if (normalizedBoundingBoxBuilder_ == null) { + normalizedBoundingBox_ = builderForValue.build(); + onChanged(); + } else { + normalizedBoundingBoxBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * The normalized bounding box location of this object track for the frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingBox normalized_bounding_box = 1; + * + */ + public Builder mergeNormalizedBoundingBox( + com.google.cloud.videointelligence.v1.NormalizedBoundingBox value) { + if (normalizedBoundingBoxBuilder_ == null) { + if (normalizedBoundingBox_ != null) { + normalizedBoundingBox_ = + com.google.cloud.videointelligence.v1.NormalizedBoundingBox.newBuilder( + normalizedBoundingBox_) + .mergeFrom(value) + .buildPartial(); + } else { + normalizedBoundingBox_ = value; + } + onChanged(); + } else { + normalizedBoundingBoxBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * The normalized bounding box location of this object track for the frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingBox normalized_bounding_box = 1; + * + */ + public Builder clearNormalizedBoundingBox() { + if (normalizedBoundingBoxBuilder_ == null) { + normalizedBoundingBox_ = null; + onChanged(); + } else { + normalizedBoundingBox_ = null; + normalizedBoundingBoxBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * The normalized bounding box location of this object track for the frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingBox normalized_bounding_box = 1; + * + */ + public com.google.cloud.videointelligence.v1.NormalizedBoundingBox.Builder + getNormalizedBoundingBoxBuilder() { + + onChanged(); + return getNormalizedBoundingBoxFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * The normalized bounding box location of this object track for the frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingBox normalized_bounding_box = 1; + * + */ + public com.google.cloud.videointelligence.v1.NormalizedBoundingBoxOrBuilder + getNormalizedBoundingBoxOrBuilder() { + if (normalizedBoundingBoxBuilder_ != null) { + return normalizedBoundingBoxBuilder_.getMessageOrBuilder(); + } else { + return normalizedBoundingBox_ == null + ? com.google.cloud.videointelligence.v1.NormalizedBoundingBox.getDefaultInstance() + : normalizedBoundingBox_; + } + } + /** + * + * + *
+     * The normalized bounding box location of this object track for the frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingBox normalized_bounding_box = 1; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.NormalizedBoundingBox, + com.google.cloud.videointelligence.v1.NormalizedBoundingBox.Builder, + com.google.cloud.videointelligence.v1.NormalizedBoundingBoxOrBuilder> + getNormalizedBoundingBoxFieldBuilder() { + if (normalizedBoundingBoxBuilder_ == null) { + normalizedBoundingBoxBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.NormalizedBoundingBox, + com.google.cloud.videointelligence.v1.NormalizedBoundingBox.Builder, + com.google.cloud.videointelligence.v1.NormalizedBoundingBoxOrBuilder>( + getNormalizedBoundingBox(), getParentForChildren(), isClean()); + normalizedBoundingBox_ = null; + } + return normalizedBoundingBoxBuilder_; + } + + private com.google.protobuf.Duration timeOffset_ = null; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Duration, + com.google.protobuf.Duration.Builder, + com.google.protobuf.DurationOrBuilder> + timeOffsetBuilder_; + /** + * + * + *
+     * The timestamp of the frame in microseconds.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public boolean hasTimeOffset() { + return timeOffsetBuilder_ != null || timeOffset_ != null; + } + /** + * + * + *
+     * The timestamp of the frame in microseconds.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public com.google.protobuf.Duration getTimeOffset() { + if (timeOffsetBuilder_ == null) { + return timeOffset_ == null + ? com.google.protobuf.Duration.getDefaultInstance() + : timeOffset_; + } else { + return timeOffsetBuilder_.getMessage(); + } + } + /** + * + * + *
+     * The timestamp of the frame in microseconds.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public Builder setTimeOffset(com.google.protobuf.Duration value) { + if (timeOffsetBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + timeOffset_ = value; + onChanged(); + } else { + timeOffsetBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * The timestamp of the frame in microseconds.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public Builder setTimeOffset(com.google.protobuf.Duration.Builder builderForValue) { + if (timeOffsetBuilder_ == null) { + timeOffset_ = builderForValue.build(); + onChanged(); + } else { + timeOffsetBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * The timestamp of the frame in microseconds.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public Builder mergeTimeOffset(com.google.protobuf.Duration value) { + if (timeOffsetBuilder_ == null) { + if (timeOffset_ != null) { + timeOffset_ = + com.google.protobuf.Duration.newBuilder(timeOffset_).mergeFrom(value).buildPartial(); + } else { + timeOffset_ = value; + } + onChanged(); + } else { + timeOffsetBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * The timestamp of the frame in microseconds.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public Builder clearTimeOffset() { + if (timeOffsetBuilder_ == null) { + timeOffset_ = null; + onChanged(); + } else { + timeOffset_ = null; + timeOffsetBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * The timestamp of the frame in microseconds.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public com.google.protobuf.Duration.Builder getTimeOffsetBuilder() { + + onChanged(); + return getTimeOffsetFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * The timestamp of the frame in microseconds.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public com.google.protobuf.DurationOrBuilder getTimeOffsetOrBuilder() { + if (timeOffsetBuilder_ != null) { + return timeOffsetBuilder_.getMessageOrBuilder(); + } else { + return timeOffset_ == null + ? com.google.protobuf.Duration.getDefaultInstance() + : timeOffset_; + } + } + /** + * + * + *
+     * The timestamp of the frame in microseconds.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Duration, + com.google.protobuf.Duration.Builder, + com.google.protobuf.DurationOrBuilder> + getTimeOffsetFieldBuilder() { + if (timeOffsetBuilder_ == null) { + timeOffsetBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Duration, + com.google.protobuf.Duration.Builder, + com.google.protobuf.DurationOrBuilder>( + getTimeOffset(), getParentForChildren(), isClean()); + timeOffset_ = null; + } + return timeOffsetBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFieldsProto3(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.cloud.videointelligence.v1.ObjectTrackingFrame) + } + + // @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1.ObjectTrackingFrame) + private static final com.google.cloud.videointelligence.v1.ObjectTrackingFrame DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.cloud.videointelligence.v1.ObjectTrackingFrame(); + } + + public static com.google.cloud.videointelligence.v1.ObjectTrackingFrame getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ObjectTrackingFrame parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ObjectTrackingFrame(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.ObjectTrackingFrame getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/ObjectTrackingFrameOrBuilder.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/ObjectTrackingFrameOrBuilder.java new file mode 100644 index 000000000000..468daca7120b --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/ObjectTrackingFrameOrBuilder.java @@ -0,0 +1,76 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +public interface ObjectTrackingFrameOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.cloud.videointelligence.v1.ObjectTrackingFrame) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * The normalized bounding box location of this object track for the frame.
+   * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingBox normalized_bounding_box = 1; + * + */ + boolean hasNormalizedBoundingBox(); + /** + * + * + *
+   * The normalized bounding box location of this object track for the frame.
+   * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingBox normalized_bounding_box = 1; + * + */ + com.google.cloud.videointelligence.v1.NormalizedBoundingBox getNormalizedBoundingBox(); + /** + * + * + *
+   * The normalized bounding box location of this object track for the frame.
+   * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingBox normalized_bounding_box = 1; + * + */ + com.google.cloud.videointelligence.v1.NormalizedBoundingBoxOrBuilder + getNormalizedBoundingBoxOrBuilder(); + + /** + * + * + *
+   * The timestamp of the frame in microseconds.
+   * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + boolean hasTimeOffset(); + /** + * + * + *
+   * The timestamp of the frame in microseconds.
+   * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + com.google.protobuf.Duration getTimeOffset(); + /** + * + * + *
+   * The timestamp of the frame in microseconds.
+   * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + com.google.protobuf.DurationOrBuilder getTimeOffsetOrBuilder(); +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextAnnotation.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextAnnotation.java new file mode 100644 index 000000000000..aa34458d6689 --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextAnnotation.java @@ -0,0 +1,1102 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +/** + * + * + *
+ * Annotations related to one detected OCR text snippet. This will contain the
+ * corresponding text, confidence value, and frame level information for each
+ * detection.
+ * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.TextAnnotation} + */ +public final class TextAnnotation extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.cloud.videointelligence.v1.TextAnnotation) + TextAnnotationOrBuilder { + private static final long serialVersionUID = 0L; + // Use TextAnnotation.newBuilder() to construct. + private TextAnnotation(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private TextAnnotation() { + text_ = ""; + segments_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private TextAnnotation( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + java.lang.String s = input.readStringRequireUtf8(); + + text_ = s; + break; + } + case 18: + { + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + segments_ = + new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000002; + } + segments_.add( + input.readMessage( + com.google.cloud.videointelligence.v1.TextSegment.parser(), + extensionRegistry)); + break; + } + default: + { + if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + segments_ = java.util.Collections.unmodifiableList(segments_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextAnnotation_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextAnnotation_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.TextAnnotation.class, + com.google.cloud.videointelligence.v1.TextAnnotation.Builder.class); + } + + private int bitField0_; + public static final int TEXT_FIELD_NUMBER = 1; + private volatile java.lang.Object text_; + /** + * + * + *
+   * The detected text.
+   * 
+ * + * string text = 1; + */ + public java.lang.String getText() { + java.lang.Object ref = text_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + text_ = s; + return s; + } + } + /** + * + * + *
+   * The detected text.
+   * 
+ * + * string text = 1; + */ + public com.google.protobuf.ByteString getTextBytes() { + java.lang.Object ref = text_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + text_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int SEGMENTS_FIELD_NUMBER = 2; + private java.util.List segments_; + /** + * + * + *
+   * All video segments where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public java.util.List getSegmentsList() { + return segments_; + } + /** + * + * + *
+   * All video segments where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public java.util.List + getSegmentsOrBuilderList() { + return segments_; + } + /** + * + * + *
+   * All video segments where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public int getSegmentsCount() { + return segments_.size(); + } + /** + * + * + *
+   * All video segments where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public com.google.cloud.videointelligence.v1.TextSegment getSegments(int index) { + return segments_.get(index); + } + /** + * + * + *
+   * All video segments where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public com.google.cloud.videointelligence.v1.TextSegmentOrBuilder getSegmentsOrBuilder( + int index) { + return segments_.get(index); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (!getTextBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, text_); + } + for (int i = 0; i < segments_.size(); i++) { + output.writeMessage(2, segments_.get(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!getTextBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, text_); + } + for (int i = 0; i < segments_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, segments_.get(i)); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.cloud.videointelligence.v1.TextAnnotation)) { + return super.equals(obj); + } + com.google.cloud.videointelligence.v1.TextAnnotation other = + (com.google.cloud.videointelligence.v1.TextAnnotation) obj; + + boolean result = true; + result = result && getText().equals(other.getText()); + result = result && getSegmentsList().equals(other.getSegmentsList()); + result = result && unknownFields.equals(other.unknownFields); + return result; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + TEXT_FIELD_NUMBER; + hash = (53 * hash) + getText().hashCode(); + if (getSegmentsCount() > 0) { + hash = (37 * hash) + SEGMENTS_FIELD_NUMBER; + hash = (53 * hash) + getSegmentsList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.cloud.videointelligence.v1.TextAnnotation parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.TextAnnotation parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextAnnotation parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.TextAnnotation parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextAnnotation parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.TextAnnotation parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextAnnotation parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.TextAnnotation parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextAnnotation parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.TextAnnotation parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextAnnotation parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.TextAnnotation parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.cloud.videointelligence.v1.TextAnnotation prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Annotations related to one detected OCR text snippet. This will contain the
+   * corresponding text, confidence value, and frame level information for each
+   * detection.
+   * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.TextAnnotation} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.cloud.videointelligence.v1.TextAnnotation) + com.google.cloud.videointelligence.v1.TextAnnotationOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextAnnotation_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextAnnotation_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.TextAnnotation.class, + com.google.cloud.videointelligence.v1.TextAnnotation.Builder.class); + } + + // Construct using com.google.cloud.videointelligence.v1.TextAnnotation.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getSegmentsFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + text_ = ""; + + if (segmentsBuilder_ == null) { + segments_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + } else { + segmentsBuilder_.clear(); + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextAnnotation_descriptor; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextAnnotation getDefaultInstanceForType() { + return com.google.cloud.videointelligence.v1.TextAnnotation.getDefaultInstance(); + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextAnnotation build() { + com.google.cloud.videointelligence.v1.TextAnnotation result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextAnnotation buildPartial() { + com.google.cloud.videointelligence.v1.TextAnnotation result = + new com.google.cloud.videointelligence.v1.TextAnnotation(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + result.text_ = text_; + if (segmentsBuilder_ == null) { + if (((bitField0_ & 0x00000002) == 0x00000002)) { + segments_ = java.util.Collections.unmodifiableList(segments_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.segments_ = segments_; + } else { + result.segments_ = segmentsBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return (Builder) super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return (Builder) super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return (Builder) super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return (Builder) super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.cloud.videointelligence.v1.TextAnnotation) { + return mergeFrom((com.google.cloud.videointelligence.v1.TextAnnotation) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.cloud.videointelligence.v1.TextAnnotation other) { + if (other == com.google.cloud.videointelligence.v1.TextAnnotation.getDefaultInstance()) + return this; + if (!other.getText().isEmpty()) { + text_ = other.text_; + onChanged(); + } + if (segmentsBuilder_ == null) { + if (!other.segments_.isEmpty()) { + if (segments_.isEmpty()) { + segments_ = other.segments_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureSegmentsIsMutable(); + segments_.addAll(other.segments_); + } + onChanged(); + } + } else { + if (!other.segments_.isEmpty()) { + if (segmentsBuilder_.isEmpty()) { + segmentsBuilder_.dispose(); + segmentsBuilder_ = null; + segments_ = other.segments_; + bitField0_ = (bitField0_ & ~0x00000002); + segmentsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getSegmentsFieldBuilder() + : null; + } else { + segmentsBuilder_.addAllMessages(other.segments_); + } + } + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.cloud.videointelligence.v1.TextAnnotation parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = + (com.google.cloud.videointelligence.v1.TextAnnotation) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int bitField0_; + + private java.lang.Object text_ = ""; + /** + * + * + *
+     * The detected text.
+     * 
+ * + * string text = 1; + */ + public java.lang.String getText() { + java.lang.Object ref = text_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + text_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * + * + *
+     * The detected text.
+     * 
+ * + * string text = 1; + */ + public com.google.protobuf.ByteString getTextBytes() { + java.lang.Object ref = text_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref); + text_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * + * + *
+     * The detected text.
+     * 
+ * + * string text = 1; + */ + public Builder setText(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + text_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * The detected text.
+     * 
+ * + * string text = 1; + */ + public Builder clearText() { + + text_ = getDefaultInstance().getText(); + onChanged(); + return this; + } + /** + * + * + *
+     * The detected text.
+     * 
+ * + * string text = 1; + */ + public Builder setTextBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + text_ = value; + onChanged(); + return this; + } + + private java.util.List segments_ = + java.util.Collections.emptyList(); + + private void ensureSegmentsIsMutable() { + if (!((bitField0_ & 0x00000002) == 0x00000002)) { + segments_ = + new java.util.ArrayList(segments_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.TextSegment, + com.google.cloud.videointelligence.v1.TextSegment.Builder, + com.google.cloud.videointelligence.v1.TextSegmentOrBuilder> + segmentsBuilder_; + + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public java.util.List getSegmentsList() { + if (segmentsBuilder_ == null) { + return java.util.Collections.unmodifiableList(segments_); + } else { + return segmentsBuilder_.getMessageList(); + } + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public int getSegmentsCount() { + if (segmentsBuilder_ == null) { + return segments_.size(); + } else { + return segmentsBuilder_.getCount(); + } + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public com.google.cloud.videointelligence.v1.TextSegment getSegments(int index) { + if (segmentsBuilder_ == null) { + return segments_.get(index); + } else { + return segmentsBuilder_.getMessage(index); + } + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public Builder setSegments(int index, com.google.cloud.videointelligence.v1.TextSegment value) { + if (segmentsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSegmentsIsMutable(); + segments_.set(index, value); + onChanged(); + } else { + segmentsBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public Builder setSegments( + int index, com.google.cloud.videointelligence.v1.TextSegment.Builder builderForValue) { + if (segmentsBuilder_ == null) { + ensureSegmentsIsMutable(); + segments_.set(index, builderForValue.build()); + onChanged(); + } else { + segmentsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public Builder addSegments(com.google.cloud.videointelligence.v1.TextSegment value) { + if (segmentsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSegmentsIsMutable(); + segments_.add(value); + onChanged(); + } else { + segmentsBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public Builder addSegments(int index, com.google.cloud.videointelligence.v1.TextSegment value) { + if (segmentsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureSegmentsIsMutable(); + segments_.add(index, value); + onChanged(); + } else { + segmentsBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public Builder addSegments( + com.google.cloud.videointelligence.v1.TextSegment.Builder builderForValue) { + if (segmentsBuilder_ == null) { + ensureSegmentsIsMutable(); + segments_.add(builderForValue.build()); + onChanged(); + } else { + segmentsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public Builder addSegments( + int index, com.google.cloud.videointelligence.v1.TextSegment.Builder builderForValue) { + if (segmentsBuilder_ == null) { + ensureSegmentsIsMutable(); + segments_.add(index, builderForValue.build()); + onChanged(); + } else { + segmentsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public Builder addAllSegments( + java.lang.Iterable values) { + if (segmentsBuilder_ == null) { + ensureSegmentsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, segments_); + onChanged(); + } else { + segmentsBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public Builder clearSegments() { + if (segmentsBuilder_ == null) { + segments_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + segmentsBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public Builder removeSegments(int index) { + if (segmentsBuilder_ == null) { + ensureSegmentsIsMutable(); + segments_.remove(index); + onChanged(); + } else { + segmentsBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public com.google.cloud.videointelligence.v1.TextSegment.Builder getSegmentsBuilder(int index) { + return getSegmentsFieldBuilder().getBuilder(index); + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public com.google.cloud.videointelligence.v1.TextSegmentOrBuilder getSegmentsOrBuilder( + int index) { + if (segmentsBuilder_ == null) { + return segments_.get(index); + } else { + return segmentsBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public java.util.List + getSegmentsOrBuilderList() { + if (segmentsBuilder_ != null) { + return segmentsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(segments_); + } + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public com.google.cloud.videointelligence.v1.TextSegment.Builder addSegmentsBuilder() { + return getSegmentsFieldBuilder() + .addBuilder(com.google.cloud.videointelligence.v1.TextSegment.getDefaultInstance()); + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public com.google.cloud.videointelligence.v1.TextSegment.Builder addSegmentsBuilder(int index) { + return getSegmentsFieldBuilder() + .addBuilder( + index, com.google.cloud.videointelligence.v1.TextSegment.getDefaultInstance()); + } + /** + * + * + *
+     * All video segments where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + public java.util.List + getSegmentsBuilderList() { + return getSegmentsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.TextSegment, + com.google.cloud.videointelligence.v1.TextSegment.Builder, + com.google.cloud.videointelligence.v1.TextSegmentOrBuilder> + getSegmentsFieldBuilder() { + if (segmentsBuilder_ == null) { + segmentsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.TextSegment, + com.google.cloud.videointelligence.v1.TextSegment.Builder, + com.google.cloud.videointelligence.v1.TextSegmentOrBuilder>( + segments_, + ((bitField0_ & 0x00000002) == 0x00000002), + getParentForChildren(), + isClean()); + segments_ = null; + } + return segmentsBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFieldsProto3(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.cloud.videointelligence.v1.TextAnnotation) + } + + // @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1.TextAnnotation) + private static final com.google.cloud.videointelligence.v1.TextAnnotation DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.cloud.videointelligence.v1.TextAnnotation(); + } + + public static com.google.cloud.videointelligence.v1.TextAnnotation getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public TextAnnotation parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new TextAnnotation(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextAnnotation getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextAnnotationOrBuilder.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextAnnotationOrBuilder.java new file mode 100644 index 000000000000..cb21f99fac35 --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextAnnotationOrBuilder.java @@ -0,0 +1,83 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +public interface TextAnnotationOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.cloud.videointelligence.v1.TextAnnotation) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * The detected text.
+   * 
+ * + * string text = 1; + */ + java.lang.String getText(); + /** + * + * + *
+   * The detected text.
+   * 
+ * + * string text = 1; + */ + com.google.protobuf.ByteString getTextBytes(); + + /** + * + * + *
+   * All video segments where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + java.util.List getSegmentsList(); + /** + * + * + *
+   * All video segments where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + com.google.cloud.videointelligence.v1.TextSegment getSegments(int index); + /** + * + * + *
+   * All video segments where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + int getSegmentsCount(); + /** + * + * + *
+   * All video segments where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + java.util.List + getSegmentsOrBuilderList(); + /** + * + * + *
+   * All video segments where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextSegment segments = 2; + */ + com.google.cloud.videointelligence.v1.TextSegmentOrBuilder getSegmentsOrBuilder(int index); +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextDetectionConfig.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextDetectionConfig.java new file mode 100644 index 000000000000..3ad7b4a3c3aa --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextDetectionConfig.java @@ -0,0 +1,722 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +/** + * + * + *
+ * Config for TEXT_DETECTION.
+ * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.TextDetectionConfig} + */ +public final class TextDetectionConfig extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.cloud.videointelligence.v1.TextDetectionConfig) + TextDetectionConfigOrBuilder { + private static final long serialVersionUID = 0L; + // Use TextDetectionConfig.newBuilder() to construct. + private TextDetectionConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private TextDetectionConfig() { + languageHints_ = com.google.protobuf.LazyStringArrayList.EMPTY; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private TextDetectionConfig( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + java.lang.String s = input.readStringRequireUtf8(); + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + languageHints_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000001; + } + languageHints_.add(s); + break; + } + default: + { + if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + languageHints_ = languageHints_.getUnmodifiableView(); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextDetectionConfig_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextDetectionConfig_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.TextDetectionConfig.class, + com.google.cloud.videointelligence.v1.TextDetectionConfig.Builder.class); + } + + public static final int LANGUAGE_HINTS_FIELD_NUMBER = 1; + private com.google.protobuf.LazyStringList languageHints_; + /** + * + * + *
+   * Language hint can be specified if the language to be detected is known a
+   * priori. It can increase the accuracy of the detection. Language hint must
+   * be language code in BCP-47 format.
+   * Automatic language detection is performed if no hint is provided.
+   * 
+ * + * repeated string language_hints = 1; + */ + public com.google.protobuf.ProtocolStringList getLanguageHintsList() { + return languageHints_; + } + /** + * + * + *
+   * Language hint can be specified if the language to be detected is known a
+   * priori. It can increase the accuracy of the detection. Language hint must
+   * be language code in BCP-47 format.
+   * Automatic language detection is performed if no hint is provided.
+   * 
+ * + * repeated string language_hints = 1; + */ + public int getLanguageHintsCount() { + return languageHints_.size(); + } + /** + * + * + *
+   * Language hint can be specified if the language to be detected is known a
+   * priori. It can increase the accuracy of the detection. Language hint must
+   * be language code in BCP-47 format.
+   * Automatic language detection is performed if no hint is provided.
+   * 
+ * + * repeated string language_hints = 1; + */ + public java.lang.String getLanguageHints(int index) { + return languageHints_.get(index); + } + /** + * + * + *
+   * Language hint can be specified if the language to be detected is known a
+   * priori. It can increase the accuracy of the detection. Language hint must
+   * be language code in BCP-47 format.
+   * Automatic language detection is performed if no hint is provided.
+   * 
+ * + * repeated string language_hints = 1; + */ + public com.google.protobuf.ByteString getLanguageHintsBytes(int index) { + return languageHints_.getByteString(index); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + for (int i = 0; i < languageHints_.size(); i++) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, languageHints_.getRaw(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + { + int dataSize = 0; + for (int i = 0; i < languageHints_.size(); i++) { + dataSize += computeStringSizeNoTag(languageHints_.getRaw(i)); + } + size += dataSize; + size += 1 * getLanguageHintsList().size(); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.cloud.videointelligence.v1.TextDetectionConfig)) { + return super.equals(obj); + } + com.google.cloud.videointelligence.v1.TextDetectionConfig other = + (com.google.cloud.videointelligence.v1.TextDetectionConfig) obj; + + boolean result = true; + result = result && getLanguageHintsList().equals(other.getLanguageHintsList()); + result = result && unknownFields.equals(other.unknownFields); + return result; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (getLanguageHintsCount() > 0) { + hash = (37 * hash) + LANGUAGE_HINTS_FIELD_NUMBER; + hash = (53 * hash) + getLanguageHintsList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.cloud.videointelligence.v1.TextDetectionConfig parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.TextDetectionConfig parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextDetectionConfig parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.TextDetectionConfig parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextDetectionConfig parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.TextDetectionConfig parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextDetectionConfig parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.TextDetectionConfig parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextDetectionConfig parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.TextDetectionConfig parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextDetectionConfig parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.TextDetectionConfig parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder( + com.google.cloud.videointelligence.v1.TextDetectionConfig prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Config for TEXT_DETECTION.
+   * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.TextDetectionConfig} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.cloud.videointelligence.v1.TextDetectionConfig) + com.google.cloud.videointelligence.v1.TextDetectionConfigOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextDetectionConfig_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextDetectionConfig_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.TextDetectionConfig.class, + com.google.cloud.videointelligence.v1.TextDetectionConfig.Builder.class); + } + + // Construct using com.google.cloud.videointelligence.v1.TextDetectionConfig.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} + } + + @java.lang.Override + public Builder clear() { + super.clear(); + languageHints_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextDetectionConfig_descriptor; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextDetectionConfig getDefaultInstanceForType() { + return com.google.cloud.videointelligence.v1.TextDetectionConfig.getDefaultInstance(); + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextDetectionConfig build() { + com.google.cloud.videointelligence.v1.TextDetectionConfig result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextDetectionConfig buildPartial() { + com.google.cloud.videointelligence.v1.TextDetectionConfig result = + new com.google.cloud.videointelligence.v1.TextDetectionConfig(this); + int from_bitField0_ = bitField0_; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + languageHints_ = languageHints_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.languageHints_ = languageHints_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return (Builder) super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return (Builder) super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return (Builder) super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return (Builder) super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.cloud.videointelligence.v1.TextDetectionConfig) { + return mergeFrom((com.google.cloud.videointelligence.v1.TextDetectionConfig) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.cloud.videointelligence.v1.TextDetectionConfig other) { + if (other == com.google.cloud.videointelligence.v1.TextDetectionConfig.getDefaultInstance()) + return this; + if (!other.languageHints_.isEmpty()) { + if (languageHints_.isEmpty()) { + languageHints_ = other.languageHints_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureLanguageHintsIsMutable(); + languageHints_.addAll(other.languageHints_); + } + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.cloud.videointelligence.v1.TextDetectionConfig parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = + (com.google.cloud.videointelligence.v1.TextDetectionConfig) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int bitField0_; + + private com.google.protobuf.LazyStringList languageHints_ = + com.google.protobuf.LazyStringArrayList.EMPTY; + + private void ensureLanguageHintsIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + languageHints_ = new com.google.protobuf.LazyStringArrayList(languageHints_); + bitField0_ |= 0x00000001; + } + } + /** + * + * + *
+     * Language hint can be specified if the language to be detected is known a
+     * priori. It can increase the accuracy of the detection. Language hint must
+     * be language code in BCP-47 format.
+     * Automatic language detection is performed if no hint is provided.
+     * 
+ * + * repeated string language_hints = 1; + */ + public com.google.protobuf.ProtocolStringList getLanguageHintsList() { + return languageHints_.getUnmodifiableView(); + } + /** + * + * + *
+     * Language hint can be specified if the language to be detected is known a
+     * priori. It can increase the accuracy of the detection. Language hint must
+     * be language code in BCP-47 format.
+     * Automatic language detection is performed if no hint is provided.
+     * 
+ * + * repeated string language_hints = 1; + */ + public int getLanguageHintsCount() { + return languageHints_.size(); + } + /** + * + * + *
+     * Language hint can be specified if the language to be detected is known a
+     * priori. It can increase the accuracy of the detection. Language hint must
+     * be language code in BCP-47 format.
+     * Automatic language detection is performed if no hint is provided.
+     * 
+ * + * repeated string language_hints = 1; + */ + public java.lang.String getLanguageHints(int index) { + return languageHints_.get(index); + } + /** + * + * + *
+     * Language hint can be specified if the language to be detected is known a
+     * priori. It can increase the accuracy of the detection. Language hint must
+     * be language code in BCP-47 format.
+     * Automatic language detection is performed if no hint is provided.
+     * 
+ * + * repeated string language_hints = 1; + */ + public com.google.protobuf.ByteString getLanguageHintsBytes(int index) { + return languageHints_.getByteString(index); + } + /** + * + * + *
+     * Language hint can be specified if the language to be detected is known a
+     * priori. It can increase the accuracy of the detection. Language hint must
+     * be language code in BCP-47 format.
+     * Automatic language detection is performed if no hint is provided.
+     * 
+ * + * repeated string language_hints = 1; + */ + public Builder setLanguageHints(int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureLanguageHintsIsMutable(); + languageHints_.set(index, value); + onChanged(); + return this; + } + /** + * + * + *
+     * Language hint can be specified if the language to be detected is known a
+     * priori. It can increase the accuracy of the detection. Language hint must
+     * be language code in BCP-47 format.
+     * Automatic language detection is performed if no hint is provided.
+     * 
+ * + * repeated string language_hints = 1; + */ + public Builder addLanguageHints(java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureLanguageHintsIsMutable(); + languageHints_.add(value); + onChanged(); + return this; + } + /** + * + * + *
+     * Language hint can be specified if the language to be detected is known a
+     * priori. It can increase the accuracy of the detection. Language hint must
+     * be language code in BCP-47 format.
+     * Automatic language detection is performed if no hint is provided.
+     * 
+ * + * repeated string language_hints = 1; + */ + public Builder addAllLanguageHints(java.lang.Iterable values) { + ensureLanguageHintsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, languageHints_); + onChanged(); + return this; + } + /** + * + * + *
+     * Language hint can be specified if the language to be detected is known a
+     * priori. It can increase the accuracy of the detection. Language hint must
+     * be language code in BCP-47 format.
+     * Automatic language detection is performed if no hint is provided.
+     * 
+ * + * repeated string language_hints = 1; + */ + public Builder clearLanguageHints() { + languageHints_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * + * + *
+     * Language hint can be specified if the language to be detected is known a
+     * priori. It can increase the accuracy of the detection. Language hint must
+     * be language code in BCP-47 format.
+     * Automatic language detection is performed if no hint is provided.
+     * 
+ * + * repeated string language_hints = 1; + */ + public Builder addLanguageHintsBytes(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + ensureLanguageHintsIsMutable(); + languageHints_.add(value); + onChanged(); + return this; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFieldsProto3(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.cloud.videointelligence.v1.TextDetectionConfig) + } + + // @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1.TextDetectionConfig) + private static final com.google.cloud.videointelligence.v1.TextDetectionConfig DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.cloud.videointelligence.v1.TextDetectionConfig(); + } + + public static com.google.cloud.videointelligence.v1.TextDetectionConfig getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public TextDetectionConfig parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new TextDetectionConfig(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextDetectionConfig getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextDetectionConfigOrBuilder.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextDetectionConfigOrBuilder.java new file mode 100644 index 000000000000..db7b6331485b --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextDetectionConfigOrBuilder.java @@ -0,0 +1,63 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +public interface TextDetectionConfigOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.cloud.videointelligence.v1.TextDetectionConfig) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Language hint can be specified if the language to be detected is known a
+   * priori. It can increase the accuracy of the detection. Language hint must
+   * be language code in BCP-47 format.
+   * Automatic language detection is performed if no hint is provided.
+   * 
+ * + * repeated string language_hints = 1; + */ + java.util.List getLanguageHintsList(); + /** + * + * + *
+   * Language hint can be specified if the language to be detected is known a
+   * priori. It can increase the accuracy of the detection. Language hint must
+   * be language code in BCP-47 format.
+   * Automatic language detection is performed if no hint is provided.
+   * 
+ * + * repeated string language_hints = 1; + */ + int getLanguageHintsCount(); + /** + * + * + *
+   * Language hint can be specified if the language to be detected is known a
+   * priori. It can increase the accuracy of the detection. Language hint must
+   * be language code in BCP-47 format.
+   * Automatic language detection is performed if no hint is provided.
+   * 
+ * + * repeated string language_hints = 1; + */ + java.lang.String getLanguageHints(int index); + /** + * + * + *
+   * Language hint can be specified if the language to be detected is known a
+   * priori. It can increase the accuracy of the detection. Language hint must
+   * be language code in BCP-47 format.
+   * Automatic language detection is performed if no hint is provided.
+   * 
+ * + * repeated string language_hints = 1; + */ + com.google.protobuf.ByteString getLanguageHintsBytes(int index); +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextFrame.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextFrame.java new file mode 100644 index 000000000000..73dbf86f637e --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextFrame.java @@ -0,0 +1,988 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +/** + * + * + *
+ * Video frame level annotation results for text annotation (OCR).
+ * Contains information regarding timestamp and bounding box locations for the
+ * frames containing detected OCR text snippets.
+ * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.TextFrame} + */ +public final class TextFrame extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.cloud.videointelligence.v1.TextFrame) + TextFrameOrBuilder { + private static final long serialVersionUID = 0L; + // Use TextFrame.newBuilder() to construct. + private TextFrame(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private TextFrame() {} + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private TextFrame( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.Builder subBuilder = + null; + if (rotatedBoundingBox_ != null) { + subBuilder = rotatedBoundingBox_.toBuilder(); + } + rotatedBoundingBox_ = + input.readMessage( + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.parser(), + extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(rotatedBoundingBox_); + rotatedBoundingBox_ = subBuilder.buildPartial(); + } + + break; + } + case 18: + { + com.google.protobuf.Duration.Builder subBuilder = null; + if (timeOffset_ != null) { + subBuilder = timeOffset_.toBuilder(); + } + timeOffset_ = + input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(timeOffset_); + timeOffset_ = subBuilder.buildPartial(); + } + + break; + } + default: + { + if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextFrame_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextFrame_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.TextFrame.class, + com.google.cloud.videointelligence.v1.TextFrame.Builder.class); + } + + public static final int ROTATED_BOUNDING_BOX_FIELD_NUMBER = 1; + private com.google.cloud.videointelligence.v1.NormalizedBoundingPoly rotatedBoundingBox_; + /** + * + * + *
+   * Bounding polygon of the detected text for this frame.
+   * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingPoly rotated_bounding_box = 1; + * + */ + public boolean hasRotatedBoundingBox() { + return rotatedBoundingBox_ != null; + } + /** + * + * + *
+   * Bounding polygon of the detected text for this frame.
+   * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingPoly rotated_bounding_box = 1; + * + */ + public com.google.cloud.videointelligence.v1.NormalizedBoundingPoly getRotatedBoundingBox() { + return rotatedBoundingBox_ == null + ? com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.getDefaultInstance() + : rotatedBoundingBox_; + } + /** + * + * + *
+   * Bounding polygon of the detected text for this frame.
+   * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingPoly rotated_bounding_box = 1; + * + */ + public com.google.cloud.videointelligence.v1.NormalizedBoundingPolyOrBuilder + getRotatedBoundingBoxOrBuilder() { + return getRotatedBoundingBox(); + } + + public static final int TIME_OFFSET_FIELD_NUMBER = 2; + private com.google.protobuf.Duration timeOffset_; + /** + * + * + *
+   * Timestamp of this frame.
+   * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public boolean hasTimeOffset() { + return timeOffset_ != null; + } + /** + * + * + *
+   * Timestamp of this frame.
+   * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public com.google.protobuf.Duration getTimeOffset() { + return timeOffset_ == null ? com.google.protobuf.Duration.getDefaultInstance() : timeOffset_; + } + /** + * + * + *
+   * Timestamp of this frame.
+   * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public com.google.protobuf.DurationOrBuilder getTimeOffsetOrBuilder() { + return getTimeOffset(); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (rotatedBoundingBox_ != null) { + output.writeMessage(1, getRotatedBoundingBox()); + } + if (timeOffset_ != null) { + output.writeMessage(2, getTimeOffset()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (rotatedBoundingBox_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getRotatedBoundingBox()); + } + if (timeOffset_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTimeOffset()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.cloud.videointelligence.v1.TextFrame)) { + return super.equals(obj); + } + com.google.cloud.videointelligence.v1.TextFrame other = + (com.google.cloud.videointelligence.v1.TextFrame) obj; + + boolean result = true; + result = result && (hasRotatedBoundingBox() == other.hasRotatedBoundingBox()); + if (hasRotatedBoundingBox()) { + result = result && getRotatedBoundingBox().equals(other.getRotatedBoundingBox()); + } + result = result && (hasTimeOffset() == other.hasTimeOffset()); + if (hasTimeOffset()) { + result = result && getTimeOffset().equals(other.getTimeOffset()); + } + result = result && unknownFields.equals(other.unknownFields); + return result; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasRotatedBoundingBox()) { + hash = (37 * hash) + ROTATED_BOUNDING_BOX_FIELD_NUMBER; + hash = (53 * hash) + getRotatedBoundingBox().hashCode(); + } + if (hasTimeOffset()) { + hash = (37 * hash) + TIME_OFFSET_FIELD_NUMBER; + hash = (53 * hash) + getTimeOffset().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.cloud.videointelligence.v1.TextFrame parseFrom(java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.TextFrame parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextFrame parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.TextFrame parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextFrame parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.TextFrame parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextFrame parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.TextFrame parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextFrame parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.TextFrame parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextFrame parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.TextFrame parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.cloud.videointelligence.v1.TextFrame prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Video frame level annotation results for text annotation (OCR).
+   * Contains information regarding timestamp and bounding box locations for the
+   * frames containing detected OCR text snippets.
+   * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.TextFrame} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.cloud.videointelligence.v1.TextFrame) + com.google.cloud.videointelligence.v1.TextFrameOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextFrame_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextFrame_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.TextFrame.class, + com.google.cloud.videointelligence.v1.TextFrame.Builder.class); + } + + // Construct using com.google.cloud.videointelligence.v1.TextFrame.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {} + } + + @java.lang.Override + public Builder clear() { + super.clear(); + if (rotatedBoundingBoxBuilder_ == null) { + rotatedBoundingBox_ = null; + } else { + rotatedBoundingBox_ = null; + rotatedBoundingBoxBuilder_ = null; + } + if (timeOffsetBuilder_ == null) { + timeOffset_ = null; + } else { + timeOffset_ = null; + timeOffsetBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextFrame_descriptor; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextFrame getDefaultInstanceForType() { + return com.google.cloud.videointelligence.v1.TextFrame.getDefaultInstance(); + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextFrame build() { + com.google.cloud.videointelligence.v1.TextFrame result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextFrame buildPartial() { + com.google.cloud.videointelligence.v1.TextFrame result = + new com.google.cloud.videointelligence.v1.TextFrame(this); + if (rotatedBoundingBoxBuilder_ == null) { + result.rotatedBoundingBox_ = rotatedBoundingBox_; + } else { + result.rotatedBoundingBox_ = rotatedBoundingBoxBuilder_.build(); + } + if (timeOffsetBuilder_ == null) { + result.timeOffset_ = timeOffset_; + } else { + result.timeOffset_ = timeOffsetBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return (Builder) super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return (Builder) super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return (Builder) super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return (Builder) super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.cloud.videointelligence.v1.TextFrame) { + return mergeFrom((com.google.cloud.videointelligence.v1.TextFrame) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.cloud.videointelligence.v1.TextFrame other) { + if (other == com.google.cloud.videointelligence.v1.TextFrame.getDefaultInstance()) + return this; + if (other.hasRotatedBoundingBox()) { + mergeRotatedBoundingBox(other.getRotatedBoundingBox()); + } + if (other.hasTimeOffset()) { + mergeTimeOffset(other.getTimeOffset()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.cloud.videointelligence.v1.TextFrame parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.google.cloud.videointelligence.v1.TextFrame) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private com.google.cloud.videointelligence.v1.NormalizedBoundingPoly rotatedBoundingBox_ = null; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly, + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.Builder, + com.google.cloud.videointelligence.v1.NormalizedBoundingPolyOrBuilder> + rotatedBoundingBoxBuilder_; + /** + * + * + *
+     * Bounding polygon of the detected text for this frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingPoly rotated_bounding_box = 1; + * + */ + public boolean hasRotatedBoundingBox() { + return rotatedBoundingBoxBuilder_ != null || rotatedBoundingBox_ != null; + } + /** + * + * + *
+     * Bounding polygon of the detected text for this frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingPoly rotated_bounding_box = 1; + * + */ + public com.google.cloud.videointelligence.v1.NormalizedBoundingPoly getRotatedBoundingBox() { + if (rotatedBoundingBoxBuilder_ == null) { + return rotatedBoundingBox_ == null + ? com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.getDefaultInstance() + : rotatedBoundingBox_; + } else { + return rotatedBoundingBoxBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Bounding polygon of the detected text for this frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingPoly rotated_bounding_box = 1; + * + */ + public Builder setRotatedBoundingBox( + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly value) { + if (rotatedBoundingBoxBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + rotatedBoundingBox_ = value; + onChanged(); + } else { + rotatedBoundingBoxBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * Bounding polygon of the detected text for this frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingPoly rotated_bounding_box = 1; + * + */ + public Builder setRotatedBoundingBox( + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.Builder builderForValue) { + if (rotatedBoundingBoxBuilder_ == null) { + rotatedBoundingBox_ = builderForValue.build(); + onChanged(); + } else { + rotatedBoundingBoxBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * Bounding polygon of the detected text for this frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingPoly rotated_bounding_box = 1; + * + */ + public Builder mergeRotatedBoundingBox( + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly value) { + if (rotatedBoundingBoxBuilder_ == null) { + if (rotatedBoundingBox_ != null) { + rotatedBoundingBox_ = + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.newBuilder( + rotatedBoundingBox_) + .mergeFrom(value) + .buildPartial(); + } else { + rotatedBoundingBox_ = value; + } + onChanged(); + } else { + rotatedBoundingBoxBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * Bounding polygon of the detected text for this frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingPoly rotated_bounding_box = 1; + * + */ + public Builder clearRotatedBoundingBox() { + if (rotatedBoundingBoxBuilder_ == null) { + rotatedBoundingBox_ = null; + onChanged(); + } else { + rotatedBoundingBox_ = null; + rotatedBoundingBoxBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * Bounding polygon of the detected text for this frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingPoly rotated_bounding_box = 1; + * + */ + public com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.Builder + getRotatedBoundingBoxBuilder() { + + onChanged(); + return getRotatedBoundingBoxFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Bounding polygon of the detected text for this frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingPoly rotated_bounding_box = 1; + * + */ + public com.google.cloud.videointelligence.v1.NormalizedBoundingPolyOrBuilder + getRotatedBoundingBoxOrBuilder() { + if (rotatedBoundingBoxBuilder_ != null) { + return rotatedBoundingBoxBuilder_.getMessageOrBuilder(); + } else { + return rotatedBoundingBox_ == null + ? com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.getDefaultInstance() + : rotatedBoundingBox_; + } + } + /** + * + * + *
+     * Bounding polygon of the detected text for this frame.
+     * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingPoly rotated_bounding_box = 1; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly, + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.Builder, + com.google.cloud.videointelligence.v1.NormalizedBoundingPolyOrBuilder> + getRotatedBoundingBoxFieldBuilder() { + if (rotatedBoundingBoxBuilder_ == null) { + rotatedBoundingBoxBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly, + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly.Builder, + com.google.cloud.videointelligence.v1.NormalizedBoundingPolyOrBuilder>( + getRotatedBoundingBox(), getParentForChildren(), isClean()); + rotatedBoundingBox_ = null; + } + return rotatedBoundingBoxBuilder_; + } + + private com.google.protobuf.Duration timeOffset_ = null; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Duration, + com.google.protobuf.Duration.Builder, + com.google.protobuf.DurationOrBuilder> + timeOffsetBuilder_; + /** + * + * + *
+     * Timestamp of this frame.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public boolean hasTimeOffset() { + return timeOffsetBuilder_ != null || timeOffset_ != null; + } + /** + * + * + *
+     * Timestamp of this frame.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public com.google.protobuf.Duration getTimeOffset() { + if (timeOffsetBuilder_ == null) { + return timeOffset_ == null + ? com.google.protobuf.Duration.getDefaultInstance() + : timeOffset_; + } else { + return timeOffsetBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Timestamp of this frame.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public Builder setTimeOffset(com.google.protobuf.Duration value) { + if (timeOffsetBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + timeOffset_ = value; + onChanged(); + } else { + timeOffsetBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * Timestamp of this frame.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public Builder setTimeOffset(com.google.protobuf.Duration.Builder builderForValue) { + if (timeOffsetBuilder_ == null) { + timeOffset_ = builderForValue.build(); + onChanged(); + } else { + timeOffsetBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * Timestamp of this frame.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public Builder mergeTimeOffset(com.google.protobuf.Duration value) { + if (timeOffsetBuilder_ == null) { + if (timeOffset_ != null) { + timeOffset_ = + com.google.protobuf.Duration.newBuilder(timeOffset_).mergeFrom(value).buildPartial(); + } else { + timeOffset_ = value; + } + onChanged(); + } else { + timeOffsetBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * Timestamp of this frame.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public Builder clearTimeOffset() { + if (timeOffsetBuilder_ == null) { + timeOffset_ = null; + onChanged(); + } else { + timeOffset_ = null; + timeOffsetBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * Timestamp of this frame.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public com.google.protobuf.Duration.Builder getTimeOffsetBuilder() { + + onChanged(); + return getTimeOffsetFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Timestamp of this frame.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + public com.google.protobuf.DurationOrBuilder getTimeOffsetOrBuilder() { + if (timeOffsetBuilder_ != null) { + return timeOffsetBuilder_.getMessageOrBuilder(); + } else { + return timeOffset_ == null + ? com.google.protobuf.Duration.getDefaultInstance() + : timeOffset_; + } + } + /** + * + * + *
+     * Timestamp of this frame.
+     * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Duration, + com.google.protobuf.Duration.Builder, + com.google.protobuf.DurationOrBuilder> + getTimeOffsetFieldBuilder() { + if (timeOffsetBuilder_ == null) { + timeOffsetBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.Duration, + com.google.protobuf.Duration.Builder, + com.google.protobuf.DurationOrBuilder>( + getTimeOffset(), getParentForChildren(), isClean()); + timeOffset_ = null; + } + return timeOffsetBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFieldsProto3(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.cloud.videointelligence.v1.TextFrame) + } + + // @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1.TextFrame) + private static final com.google.cloud.videointelligence.v1.TextFrame DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.cloud.videointelligence.v1.TextFrame(); + } + + public static com.google.cloud.videointelligence.v1.TextFrame getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public TextFrame parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new TextFrame(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextFrame getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextFrameOrBuilder.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextFrameOrBuilder.java new file mode 100644 index 000000000000..82f0a39cf710 --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextFrameOrBuilder.java @@ -0,0 +1,76 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +public interface TextFrameOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.cloud.videointelligence.v1.TextFrame) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Bounding polygon of the detected text for this frame.
+   * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingPoly rotated_bounding_box = 1; + * + */ + boolean hasRotatedBoundingBox(); + /** + * + * + *
+   * Bounding polygon of the detected text for this frame.
+   * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingPoly rotated_bounding_box = 1; + * + */ + com.google.cloud.videointelligence.v1.NormalizedBoundingPoly getRotatedBoundingBox(); + /** + * + * + *
+   * Bounding polygon of the detected text for this frame.
+   * 
+ * + * .google.cloud.videointelligence.v1.NormalizedBoundingPoly rotated_bounding_box = 1; + * + */ + com.google.cloud.videointelligence.v1.NormalizedBoundingPolyOrBuilder + getRotatedBoundingBoxOrBuilder(); + + /** + * + * + *
+   * Timestamp of this frame.
+   * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + boolean hasTimeOffset(); + /** + * + * + *
+   * Timestamp of this frame.
+   * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + com.google.protobuf.Duration getTimeOffset(); + /** + * + * + *
+   * Timestamp of this frame.
+   * 
+ * + * .google.protobuf.Duration time_offset = 2; + */ + com.google.protobuf.DurationOrBuilder getTimeOffsetOrBuilder(); +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextSegment.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextSegment.java new file mode 100644 index 000000000000..916e356f77b5 --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextSegment.java @@ -0,0 +1,1287 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +/** + * + * + *
+ * Video segment level annotation results for text detection.
+ * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.TextSegment} + */ +public final class TextSegment extends com.google.protobuf.GeneratedMessageV3 + implements + // @@protoc_insertion_point(message_implements:google.cloud.videointelligence.v1.TextSegment) + TextSegmentOrBuilder { + private static final long serialVersionUID = 0L; + // Use TextSegment.newBuilder() to construct. + private TextSegment(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + + private TextSegment() { + confidence_ = 0F; + frames_ = java.util.Collections.emptyList(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet getUnknownFields() { + return this.unknownFields; + } + + private TextSegment( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: + { + com.google.cloud.videointelligence.v1.VideoSegment.Builder subBuilder = null; + if (segment_ != null) { + subBuilder = segment_.toBuilder(); + } + segment_ = + input.readMessage( + com.google.cloud.videointelligence.v1.VideoSegment.parser(), + extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(segment_); + segment_ = subBuilder.buildPartial(); + } + + break; + } + case 21: + { + confidence_ = input.readFloat(); + break; + } + case 26: + { + if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + frames_ = + new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000004; + } + frames_.add( + input.readMessage( + com.google.cloud.videointelligence.v1.TextFrame.parser(), extensionRegistry)); + break; + } + default: + { + if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + frames_ = java.util.Collections.unmodifiableList(frames_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextSegment_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextSegment_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.TextSegment.class, + com.google.cloud.videointelligence.v1.TextSegment.Builder.class); + } + + private int bitField0_; + public static final int SEGMENT_FIELD_NUMBER = 1; + private com.google.cloud.videointelligence.v1.VideoSegment segment_; + /** + * + * + *
+   * Video segment where a text snippet was detected.
+   * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 1; + */ + public boolean hasSegment() { + return segment_ != null; + } + /** + * + * + *
+   * Video segment where a text snippet was detected.
+   * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 1; + */ + public com.google.cloud.videointelligence.v1.VideoSegment getSegment() { + return segment_ == null + ? com.google.cloud.videointelligence.v1.VideoSegment.getDefaultInstance() + : segment_; + } + /** + * + * + *
+   * Video segment where a text snippet was detected.
+   * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 1; + */ + public com.google.cloud.videointelligence.v1.VideoSegmentOrBuilder getSegmentOrBuilder() { + return getSegment(); + } + + public static final int CONFIDENCE_FIELD_NUMBER = 2; + private float confidence_; + /** + * + * + *
+   * Confidence for the track of detected text. It is calculated as the highest
+   * over all frames where OCR detected text appears.
+   * 
+ * + * float confidence = 2; + */ + public float getConfidence() { + return confidence_; + } + + public static final int FRAMES_FIELD_NUMBER = 3; + private java.util.List frames_; + /** + * + * + *
+   * Information related to the frames where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public java.util.List getFramesList() { + return frames_; + } + /** + * + * + *
+   * Information related to the frames where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public java.util.List + getFramesOrBuilderList() { + return frames_; + } + /** + * + * + *
+   * Information related to the frames where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public int getFramesCount() { + return frames_.size(); + } + /** + * + * + *
+   * Information related to the frames where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public com.google.cloud.videointelligence.v1.TextFrame getFrames(int index) { + return frames_.get(index); + } + /** + * + * + *
+   * Information related to the frames where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public com.google.cloud.videointelligence.v1.TextFrameOrBuilder getFramesOrBuilder(int index) { + return frames_.get(index); + } + + private byte memoizedIsInitialized = -1; + + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (segment_ != null) { + output.writeMessage(1, getSegment()); + } + if (confidence_ != 0F) { + output.writeFloat(2, confidence_); + } + for (int i = 0; i < frames_.size(); i++) { + output.writeMessage(3, frames_.get(i)); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (segment_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSegment()); + } + if (confidence_ != 0F) { + size += com.google.protobuf.CodedOutputStream.computeFloatSize(2, confidence_); + } + for (int i = 0; i < frames_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, frames_.get(i)); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.cloud.videointelligence.v1.TextSegment)) { + return super.equals(obj); + } + com.google.cloud.videointelligence.v1.TextSegment other = + (com.google.cloud.videointelligence.v1.TextSegment) obj; + + boolean result = true; + result = result && (hasSegment() == other.hasSegment()); + if (hasSegment()) { + result = result && getSegment().equals(other.getSegment()); + } + result = + result + && (java.lang.Float.floatToIntBits(getConfidence()) + == java.lang.Float.floatToIntBits(other.getConfidence())); + result = result && getFramesList().equals(other.getFramesList()); + result = result && unknownFields.equals(other.unknownFields); + return result; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasSegment()) { + hash = (37 * hash) + SEGMENT_FIELD_NUMBER; + hash = (53 * hash) + getSegment().hashCode(); + } + hash = (37 * hash) + CONFIDENCE_FIELD_NUMBER; + hash = (53 * hash) + java.lang.Float.floatToIntBits(getConfidence()); + if (getFramesCount() > 0) { + hash = (37 * hash) + FRAMES_FIELD_NUMBER; + hash = (53 * hash) + getFramesList().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.cloud.videointelligence.v1.TextSegment parseFrom( + java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.TextSegment parseFrom( + java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextSegment parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.TextSegment parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextSegment parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + + public static com.google.cloud.videointelligence.v1.TextSegment parseFrom( + byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextSegment parseFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.TextSegment parseFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextSegment parseDelimitedFrom( + java.io.InputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.TextSegment parseDelimitedFrom( + java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException( + PARSER, input, extensionRegistry); + } + + public static com.google.cloud.videointelligence.v1.TextSegment parseFrom( + com.google.protobuf.CodedInputStream input) throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input); + } + + public static com.google.cloud.videointelligence.v1.TextSegment parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3.parseWithIOException( + PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { + return newBuilder(); + } + + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + + public static Builder newBuilder(com.google.cloud.videointelligence.v1.TextSegment prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * + * + *
+   * Video segment level annotation results for text detection.
+   * 
+ * + * Protobuf type {@code google.cloud.videointelligence.v1.TextSegment} + */ + public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder + implements + // @@protoc_insertion_point(builder_implements:google.cloud.videointelligence.v1.TextSegment) + com.google.cloud.videointelligence.v1.TextSegmentOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextSegment_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextSegment_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.cloud.videointelligence.v1.TextSegment.class, + com.google.cloud.videointelligence.v1.TextSegment.Builder.class); + } + + // Construct using com.google.cloud.videointelligence.v1.TextSegment.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) { + getFramesFieldBuilder(); + } + } + + @java.lang.Override + public Builder clear() { + super.clear(); + if (segmentBuilder_ == null) { + segment_ = null; + } else { + segment_ = null; + segmentBuilder_ = null; + } + confidence_ = 0F; + + if (framesBuilder_ == null) { + frames_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + } else { + framesBuilder_.clear(); + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { + return com.google.cloud.videointelligence.v1.VideoIntelligenceServiceProto + .internal_static_google_cloud_videointelligence_v1_TextSegment_descriptor; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextSegment getDefaultInstanceForType() { + return com.google.cloud.videointelligence.v1.TextSegment.getDefaultInstance(); + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextSegment build() { + com.google.cloud.videointelligence.v1.TextSegment result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextSegment buildPartial() { + com.google.cloud.videointelligence.v1.TextSegment result = + new com.google.cloud.videointelligence.v1.TextSegment(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (segmentBuilder_ == null) { + result.segment_ = segment_; + } else { + result.segment_ = segmentBuilder_.build(); + } + result.confidence_ = confidence_; + if (framesBuilder_ == null) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { + frames_ = java.util.Collections.unmodifiableList(frames_); + bitField0_ = (bitField0_ & ~0x00000004); + } + result.frames_ = frames_; + } else { + result.frames_ = framesBuilder_.build(); + } + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return (Builder) super.clone(); + } + + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.setField(field, value); + } + + @java.lang.Override + public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) { + return (Builder) super.clearField(field); + } + + @java.lang.Override + public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return (Builder) super.clearOneof(oneof); + } + + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value) { + return (Builder) super.setRepeatedField(field, index, value); + } + + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) { + return (Builder) super.addRepeatedField(field, value); + } + + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.cloud.videointelligence.v1.TextSegment) { + return mergeFrom((com.google.cloud.videointelligence.v1.TextSegment) other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.cloud.videointelligence.v1.TextSegment other) { + if (other == com.google.cloud.videointelligence.v1.TextSegment.getDefaultInstance()) + return this; + if (other.hasSegment()) { + mergeSegment(other.getSegment()); + } + if (other.getConfidence() != 0F) { + setConfidence(other.getConfidence()); + } + if (framesBuilder_ == null) { + if (!other.frames_.isEmpty()) { + if (frames_.isEmpty()) { + frames_ = other.frames_; + bitField0_ = (bitField0_ & ~0x00000004); + } else { + ensureFramesIsMutable(); + frames_.addAll(other.frames_); + } + onChanged(); + } + } else { + if (!other.frames_.isEmpty()) { + if (framesBuilder_.isEmpty()) { + framesBuilder_.dispose(); + framesBuilder_ = null; + frames_ = other.frames_; + bitField0_ = (bitField0_ & ~0x00000004); + framesBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getFramesFieldBuilder() + : null; + } else { + framesBuilder_.addAllMessages(other.frames_); + } + } + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.cloud.videointelligence.v1.TextSegment parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = + (com.google.cloud.videointelligence.v1.TextSegment) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int bitField0_; + + private com.google.cloud.videointelligence.v1.VideoSegment segment_ = null; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.VideoSegment, + com.google.cloud.videointelligence.v1.VideoSegment.Builder, + com.google.cloud.videointelligence.v1.VideoSegmentOrBuilder> + segmentBuilder_; + /** + * + * + *
+     * Video segment where a text snippet was detected.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 1; + */ + public boolean hasSegment() { + return segmentBuilder_ != null || segment_ != null; + } + /** + * + * + *
+     * Video segment where a text snippet was detected.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 1; + */ + public com.google.cloud.videointelligence.v1.VideoSegment getSegment() { + if (segmentBuilder_ == null) { + return segment_ == null + ? com.google.cloud.videointelligence.v1.VideoSegment.getDefaultInstance() + : segment_; + } else { + return segmentBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Video segment where a text snippet was detected.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 1; + */ + public Builder setSegment(com.google.cloud.videointelligence.v1.VideoSegment value) { + if (segmentBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + segment_ = value; + onChanged(); + } else { + segmentBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * Video segment where a text snippet was detected.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 1; + */ + public Builder setSegment( + com.google.cloud.videointelligence.v1.VideoSegment.Builder builderForValue) { + if (segmentBuilder_ == null) { + segment_ = builderForValue.build(); + onChanged(); + } else { + segmentBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * Video segment where a text snippet was detected.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 1; + */ + public Builder mergeSegment(com.google.cloud.videointelligence.v1.VideoSegment value) { + if (segmentBuilder_ == null) { + if (segment_ != null) { + segment_ = + com.google.cloud.videointelligence.v1.VideoSegment.newBuilder(segment_) + .mergeFrom(value) + .buildPartial(); + } else { + segment_ = value; + } + onChanged(); + } else { + segmentBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * Video segment where a text snippet was detected.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 1; + */ + public Builder clearSegment() { + if (segmentBuilder_ == null) { + segment_ = null; + onChanged(); + } else { + segment_ = null; + segmentBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * Video segment where a text snippet was detected.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 1; + */ + public com.google.cloud.videointelligence.v1.VideoSegment.Builder getSegmentBuilder() { + + onChanged(); + return getSegmentFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Video segment where a text snippet was detected.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 1; + */ + public com.google.cloud.videointelligence.v1.VideoSegmentOrBuilder getSegmentOrBuilder() { + if (segmentBuilder_ != null) { + return segmentBuilder_.getMessageOrBuilder(); + } else { + return segment_ == null + ? com.google.cloud.videointelligence.v1.VideoSegment.getDefaultInstance() + : segment_; + } + } + /** + * + * + *
+     * Video segment where a text snippet was detected.
+     * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 1; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.VideoSegment, + com.google.cloud.videointelligence.v1.VideoSegment.Builder, + com.google.cloud.videointelligence.v1.VideoSegmentOrBuilder> + getSegmentFieldBuilder() { + if (segmentBuilder_ == null) { + segmentBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.VideoSegment, + com.google.cloud.videointelligence.v1.VideoSegment.Builder, + com.google.cloud.videointelligence.v1.VideoSegmentOrBuilder>( + getSegment(), getParentForChildren(), isClean()); + segment_ = null; + } + return segmentBuilder_; + } + + private float confidence_; + /** + * + * + *
+     * Confidence for the track of detected text. It is calculated as the highest
+     * over all frames where OCR detected text appears.
+     * 
+ * + * float confidence = 2; + */ + public float getConfidence() { + return confidence_; + } + /** + * + * + *
+     * Confidence for the track of detected text. It is calculated as the highest
+     * over all frames where OCR detected text appears.
+     * 
+ * + * float confidence = 2; + */ + public Builder setConfidence(float value) { + + confidence_ = value; + onChanged(); + return this; + } + /** + * + * + *
+     * Confidence for the track of detected text. It is calculated as the highest
+     * over all frames where OCR detected text appears.
+     * 
+ * + * float confidence = 2; + */ + public Builder clearConfidence() { + + confidence_ = 0F; + onChanged(); + return this; + } + + private java.util.List frames_ = + java.util.Collections.emptyList(); + + private void ensureFramesIsMutable() { + if (!((bitField0_ & 0x00000004) == 0x00000004)) { + frames_ = new java.util.ArrayList(frames_); + bitField0_ |= 0x00000004; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.TextFrame, + com.google.cloud.videointelligence.v1.TextFrame.Builder, + com.google.cloud.videointelligence.v1.TextFrameOrBuilder> + framesBuilder_; + + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public java.util.List getFramesList() { + if (framesBuilder_ == null) { + return java.util.Collections.unmodifiableList(frames_); + } else { + return framesBuilder_.getMessageList(); + } + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public int getFramesCount() { + if (framesBuilder_ == null) { + return frames_.size(); + } else { + return framesBuilder_.getCount(); + } + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public com.google.cloud.videointelligence.v1.TextFrame getFrames(int index) { + if (framesBuilder_ == null) { + return frames_.get(index); + } else { + return framesBuilder_.getMessage(index); + } + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public Builder setFrames(int index, com.google.cloud.videointelligence.v1.TextFrame value) { + if (framesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureFramesIsMutable(); + frames_.set(index, value); + onChanged(); + } else { + framesBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public Builder setFrames( + int index, com.google.cloud.videointelligence.v1.TextFrame.Builder builderForValue) { + if (framesBuilder_ == null) { + ensureFramesIsMutable(); + frames_.set(index, builderForValue.build()); + onChanged(); + } else { + framesBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public Builder addFrames(com.google.cloud.videointelligence.v1.TextFrame value) { + if (framesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureFramesIsMutable(); + frames_.add(value); + onChanged(); + } else { + framesBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public Builder addFrames(int index, com.google.cloud.videointelligence.v1.TextFrame value) { + if (framesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureFramesIsMutable(); + frames_.add(index, value); + onChanged(); + } else { + framesBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public Builder addFrames( + com.google.cloud.videointelligence.v1.TextFrame.Builder builderForValue) { + if (framesBuilder_ == null) { + ensureFramesIsMutable(); + frames_.add(builderForValue.build()); + onChanged(); + } else { + framesBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public Builder addFrames( + int index, com.google.cloud.videointelligence.v1.TextFrame.Builder builderForValue) { + if (framesBuilder_ == null) { + ensureFramesIsMutable(); + frames_.add(index, builderForValue.build()); + onChanged(); + } else { + framesBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public Builder addAllFrames( + java.lang.Iterable values) { + if (framesBuilder_ == null) { + ensureFramesIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, frames_); + onChanged(); + } else { + framesBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public Builder clearFrames() { + if (framesBuilder_ == null) { + frames_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + onChanged(); + } else { + framesBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public Builder removeFrames(int index) { + if (framesBuilder_ == null) { + ensureFramesIsMutable(); + frames_.remove(index); + onChanged(); + } else { + framesBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public com.google.cloud.videointelligence.v1.TextFrame.Builder getFramesBuilder(int index) { + return getFramesFieldBuilder().getBuilder(index); + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public com.google.cloud.videointelligence.v1.TextFrameOrBuilder getFramesOrBuilder(int index) { + if (framesBuilder_ == null) { + return frames_.get(index); + } else { + return framesBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public java.util.List + getFramesOrBuilderList() { + if (framesBuilder_ != null) { + return framesBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(frames_); + } + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public com.google.cloud.videointelligence.v1.TextFrame.Builder addFramesBuilder() { + return getFramesFieldBuilder() + .addBuilder(com.google.cloud.videointelligence.v1.TextFrame.getDefaultInstance()); + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public com.google.cloud.videointelligence.v1.TextFrame.Builder addFramesBuilder(int index) { + return getFramesFieldBuilder() + .addBuilder(index, com.google.cloud.videointelligence.v1.TextFrame.getDefaultInstance()); + } + /** + * + * + *
+     * Information related to the frames where OCR detected text appears.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + public java.util.List + getFramesBuilderList() { + return getFramesFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.TextFrame, + com.google.cloud.videointelligence.v1.TextFrame.Builder, + com.google.cloud.videointelligence.v1.TextFrameOrBuilder> + getFramesFieldBuilder() { + if (framesBuilder_ == null) { + framesBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.TextFrame, + com.google.cloud.videointelligence.v1.TextFrame.Builder, + com.google.cloud.videointelligence.v1.TextFrameOrBuilder>( + frames_, + ((bitField0_ & 0x00000004) == 0x00000004), + getParentForChildren(), + isClean()); + frames_ = null; + } + return framesBuilder_; + } + + @java.lang.Override + public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFieldsProto3(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + // @@protoc_insertion_point(builder_scope:google.cloud.videointelligence.v1.TextSegment) + } + + // @@protoc_insertion_point(class_scope:google.cloud.videointelligence.v1.TextSegment) + private static final com.google.cloud.videointelligence.v1.TextSegment DEFAULT_INSTANCE; + + static { + DEFAULT_INSTANCE = new com.google.cloud.videointelligence.v1.TextSegment(); + } + + public static com.google.cloud.videointelligence.v1.TextSegment getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + @java.lang.Override + public TextSegment parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new TextSegment(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.cloud.videointelligence.v1.TextSegment getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextSegmentOrBuilder.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextSegmentOrBuilder.java new file mode 100644 index 000000000000..c8d417eb06c6 --- /dev/null +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/TextSegmentOrBuilder.java @@ -0,0 +1,105 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: google/cloud/videointelligence/v1/video_intelligence.proto + +package com.google.cloud.videointelligence.v1; + +public interface TextSegmentOrBuilder + extends + // @@protoc_insertion_point(interface_extends:google.cloud.videointelligence.v1.TextSegment) + com.google.protobuf.MessageOrBuilder { + + /** + * + * + *
+   * Video segment where a text snippet was detected.
+   * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 1; + */ + boolean hasSegment(); + /** + * + * + *
+   * Video segment where a text snippet was detected.
+   * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 1; + */ + com.google.cloud.videointelligence.v1.VideoSegment getSegment(); + /** + * + * + *
+   * Video segment where a text snippet was detected.
+   * 
+ * + * .google.cloud.videointelligence.v1.VideoSegment segment = 1; + */ + com.google.cloud.videointelligence.v1.VideoSegmentOrBuilder getSegmentOrBuilder(); + + /** + * + * + *
+   * Confidence for the track of detected text. It is calculated as the highest
+   * over all frames where OCR detected text appears.
+   * 
+ * + * float confidence = 2; + */ + float getConfidence(); + + /** + * + * + *
+   * Information related to the frames where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + java.util.List getFramesList(); + /** + * + * + *
+   * Information related to the frames where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + com.google.cloud.videointelligence.v1.TextFrame getFrames(int index); + /** + * + * + *
+   * Information related to the frames where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + int getFramesCount(); + /** + * + * + *
+   * Information related to the frames where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + java.util.List + getFramesOrBuilderList(); + /** + * + * + *
+   * Information related to the frames where OCR detected text appears.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextFrame frames = 3; + */ + com.google.cloud.videointelligence.v1.TextFrameOrBuilder getFramesOrBuilder(int index); +} diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoAnnotationResults.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoAnnotationResults.java index a67d7facb16b..83062c1520a2 100644 --- a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoAnnotationResults.java +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoAnnotationResults.java @@ -30,6 +30,8 @@ private VideoAnnotationResults() { faceAnnotations_ = java.util.Collections.emptyList(); shotAnnotations_ = java.util.Collections.emptyList(); speechTranscriptions_ = java.util.Collections.emptyList(); + textAnnotations_ = java.util.Collections.emptyList(); + objectAnnotations_ = java.util.Collections.emptyList(); } @java.lang.Override @@ -177,6 +179,33 @@ private VideoAnnotationResults( extensionRegistry)); break; } + case 98: + { + if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) { + textAnnotations_ = + new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000100; + } + textAnnotations_.add( + input.readMessage( + com.google.cloud.videointelligence.v1.TextAnnotation.parser(), + extensionRegistry)); + break; + } + case 114: + { + if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) { + objectAnnotations_ = + new java.util.ArrayList< + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation>(); + mutable_bitField0_ |= 0x00000200; + } + objectAnnotations_.add( + input.readMessage( + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.parser(), + extensionRegistry)); + break; + } default: { if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) { @@ -209,6 +238,12 @@ private VideoAnnotationResults( if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) { speechTranscriptions_ = java.util.Collections.unmodifiableList(speechTranscriptions_); } + if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) { + textAnnotations_ = java.util.Collections.unmodifiableList(textAnnotations_); + } + if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) { + objectAnnotations_ = java.util.Collections.unmodifiableList(objectAnnotations_); + } this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); } @@ -768,6 +803,161 @@ public com.google.cloud.videointelligence.v1.SpeechTranscription getSpeechTransc return speechTranscriptions_.get(index); } + public static final int TEXT_ANNOTATIONS_FIELD_NUMBER = 12; + private java.util.List textAnnotations_; + /** + * + * + *
+   * OCR text detection and tracking.
+   * Annotations for list of detected text snippets. Each will have list of
+   * frame information associated with it.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + */ + public java.util.List + getTextAnnotationsList() { + return textAnnotations_; + } + /** + * + * + *
+   * OCR text detection and tracking.
+   * Annotations for list of detected text snippets. Each will have list of
+   * frame information associated with it.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + */ + public java.util.List + getTextAnnotationsOrBuilderList() { + return textAnnotations_; + } + /** + * + * + *
+   * OCR text detection and tracking.
+   * Annotations for list of detected text snippets. Each will have list of
+   * frame information associated with it.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + */ + public int getTextAnnotationsCount() { + return textAnnotations_.size(); + } + /** + * + * + *
+   * OCR text detection and tracking.
+   * Annotations for list of detected text snippets. Each will have list of
+   * frame information associated with it.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + */ + public com.google.cloud.videointelligence.v1.TextAnnotation getTextAnnotations(int index) { + return textAnnotations_.get(index); + } + /** + * + * + *
+   * OCR text detection and tracking.
+   * Annotations for list of detected text snippets. Each will have list of
+   * frame information associated with it.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + */ + public com.google.cloud.videointelligence.v1.TextAnnotationOrBuilder getTextAnnotationsOrBuilder( + int index) { + return textAnnotations_.get(index); + } + + public static final int OBJECT_ANNOTATIONS_FIELD_NUMBER = 14; + private java.util.List + objectAnnotations_; + /** + * + * + *
+   * Annotations for list of objects detected and tracked in video.
+   * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public java.util.List + getObjectAnnotationsList() { + return objectAnnotations_; + } + /** + * + * + *
+   * Annotations for list of objects detected and tracked in video.
+   * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public java.util.List< + ? extends com.google.cloud.videointelligence.v1.ObjectTrackingAnnotationOrBuilder> + getObjectAnnotationsOrBuilderList() { + return objectAnnotations_; + } + /** + * + * + *
+   * Annotations for list of objects detected and tracked in video.
+   * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public int getObjectAnnotationsCount() { + return objectAnnotations_.size(); + } + /** + * + * + *
+   * Annotations for list of objects detected and tracked in video.
+   * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation getObjectAnnotations( + int index) { + return objectAnnotations_.get(index); + } + /** + * + * + *
+   * Annotations for list of objects detected and tracked in video.
+   * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public com.google.cloud.videointelligence.v1.ObjectTrackingAnnotationOrBuilder + getObjectAnnotationsOrBuilder(int index) { + return objectAnnotations_.get(index); + } + public static final int ERROR_FIELD_NUMBER = 9; private com.google.rpc.Status error_; /** @@ -851,6 +1041,12 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io for (int i = 0; i < speechTranscriptions_.size(); i++) { output.writeMessage(11, speechTranscriptions_.get(i)); } + for (int i = 0; i < textAnnotations_.size(); i++) { + output.writeMessage(12, textAnnotations_.get(i)); + } + for (int i = 0; i < objectAnnotations_.size(); i++) { + output.writeMessage(14, objectAnnotations_.get(i)); + } unknownFields.writeTo(output); } @@ -894,6 +1090,13 @@ public int getSerializedSize() { com.google.protobuf.CodedOutputStream.computeMessageSize( 11, speechTranscriptions_.get(i)); } + for (int i = 0; i < textAnnotations_.size(); i++) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(12, textAnnotations_.get(i)); + } + for (int i = 0; i < objectAnnotations_.size(); i++) { + size += + com.google.protobuf.CodedOutputStream.computeMessageSize(14, objectAnnotations_.get(i)); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -923,6 +1126,8 @@ public boolean equals(final java.lang.Object obj) { result = result && getExplicitAnnotation().equals(other.getExplicitAnnotation()); } result = result && getSpeechTranscriptionsList().equals(other.getSpeechTranscriptionsList()); + result = result && getTextAnnotationsList().equals(other.getTextAnnotationsList()); + result = result && getObjectAnnotationsList().equals(other.getObjectAnnotationsList()); result = result && (hasError() == other.hasError()); if (hasError()) { result = result && getError().equals(other.getError()); @@ -968,6 +1173,14 @@ public int hashCode() { hash = (37 * hash) + SPEECH_TRANSCRIPTIONS_FIELD_NUMBER; hash = (53 * hash) + getSpeechTranscriptionsList().hashCode(); } + if (getTextAnnotationsCount() > 0) { + hash = (37 * hash) + TEXT_ANNOTATIONS_FIELD_NUMBER; + hash = (53 * hash) + getTextAnnotationsList().hashCode(); + } + if (getObjectAnnotationsCount() > 0) { + hash = (37 * hash) + OBJECT_ANNOTATIONS_FIELD_NUMBER; + hash = (53 * hash) + getObjectAnnotationsList().hashCode(); + } if (hasError()) { hash = (37 * hash) + ERROR_FIELD_NUMBER; hash = (53 * hash) + getError().hashCode(); @@ -1119,6 +1332,8 @@ private void maybeForceBuilderInitialization() { getFaceAnnotationsFieldBuilder(); getShotAnnotationsFieldBuilder(); getSpeechTranscriptionsFieldBuilder(); + getTextAnnotationsFieldBuilder(); + getObjectAnnotationsFieldBuilder(); } } @@ -1169,6 +1384,18 @@ public Builder clear() { } else { speechTranscriptionsBuilder_.clear(); } + if (textAnnotationsBuilder_ == null) { + textAnnotations_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000100); + } else { + textAnnotationsBuilder_.clear(); + } + if (objectAnnotationsBuilder_ == null) { + objectAnnotations_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000200); + } else { + objectAnnotationsBuilder_.clear(); + } if (errorBuilder_ == null) { error_ = null; } else { @@ -1266,6 +1493,24 @@ public com.google.cloud.videointelligence.v1.VideoAnnotationResults buildPartial } else { result.speechTranscriptions_ = speechTranscriptionsBuilder_.build(); } + if (textAnnotationsBuilder_ == null) { + if (((bitField0_ & 0x00000100) == 0x00000100)) { + textAnnotations_ = java.util.Collections.unmodifiableList(textAnnotations_); + bitField0_ = (bitField0_ & ~0x00000100); + } + result.textAnnotations_ = textAnnotations_; + } else { + result.textAnnotations_ = textAnnotationsBuilder_.build(); + } + if (objectAnnotationsBuilder_ == null) { + if (((bitField0_ & 0x00000200) == 0x00000200)) { + objectAnnotations_ = java.util.Collections.unmodifiableList(objectAnnotations_); + bitField0_ = (bitField0_ & ~0x00000200); + } + result.objectAnnotations_ = objectAnnotations_; + } else { + result.objectAnnotations_ = objectAnnotationsBuilder_.build(); + } if (errorBuilder_ == null) { result.error_ = error_; } else { @@ -1492,6 +1737,60 @@ public Builder mergeFrom(com.google.cloud.videointelligence.v1.VideoAnnotationRe } } } + if (textAnnotationsBuilder_ == null) { + if (!other.textAnnotations_.isEmpty()) { + if (textAnnotations_.isEmpty()) { + textAnnotations_ = other.textAnnotations_; + bitField0_ = (bitField0_ & ~0x00000100); + } else { + ensureTextAnnotationsIsMutable(); + textAnnotations_.addAll(other.textAnnotations_); + } + onChanged(); + } + } else { + if (!other.textAnnotations_.isEmpty()) { + if (textAnnotationsBuilder_.isEmpty()) { + textAnnotationsBuilder_.dispose(); + textAnnotationsBuilder_ = null; + textAnnotations_ = other.textAnnotations_; + bitField0_ = (bitField0_ & ~0x00000100); + textAnnotationsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getTextAnnotationsFieldBuilder() + : null; + } else { + textAnnotationsBuilder_.addAllMessages(other.textAnnotations_); + } + } + } + if (objectAnnotationsBuilder_ == null) { + if (!other.objectAnnotations_.isEmpty()) { + if (objectAnnotations_.isEmpty()) { + objectAnnotations_ = other.objectAnnotations_; + bitField0_ = (bitField0_ & ~0x00000200); + } else { + ensureObjectAnnotationsIsMutable(); + objectAnnotations_.addAll(other.objectAnnotations_); + } + onChanged(); + } + } else { + if (!other.objectAnnotations_.isEmpty()) { + if (objectAnnotationsBuilder_.isEmpty()) { + objectAnnotationsBuilder_.dispose(); + objectAnnotationsBuilder_ = null; + objectAnnotations_ = other.objectAnnotations_; + bitField0_ = (bitField0_ & ~0x00000200); + objectAnnotationsBuilder_ = + com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders + ? getObjectAnnotationsFieldBuilder() + : null; + } else { + objectAnnotationsBuilder_.addAllMessages(other.objectAnnotations_); + } + } + } if (other.hasError()) { mergeError(other.getError()); } @@ -4197,6 +4496,830 @@ public Builder removeSpeechTranscriptions(int index) { return speechTranscriptionsBuilder_; } + private java.util.List textAnnotations_ = + java.util.Collections.emptyList(); + + private void ensureTextAnnotationsIsMutable() { + if (!((bitField0_ & 0x00000100) == 0x00000100)) { + textAnnotations_ = + new java.util.ArrayList( + textAnnotations_); + bitField0_ |= 0x00000100; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.TextAnnotation, + com.google.cloud.videointelligence.v1.TextAnnotation.Builder, + com.google.cloud.videointelligence.v1.TextAnnotationOrBuilder> + textAnnotationsBuilder_; + + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public java.util.List + getTextAnnotationsList() { + if (textAnnotationsBuilder_ == null) { + return java.util.Collections.unmodifiableList(textAnnotations_); + } else { + return textAnnotationsBuilder_.getMessageList(); + } + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public int getTextAnnotationsCount() { + if (textAnnotationsBuilder_ == null) { + return textAnnotations_.size(); + } else { + return textAnnotationsBuilder_.getCount(); + } + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public com.google.cloud.videointelligence.v1.TextAnnotation getTextAnnotations(int index) { + if (textAnnotationsBuilder_ == null) { + return textAnnotations_.get(index); + } else { + return textAnnotationsBuilder_.getMessage(index); + } + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public Builder setTextAnnotations( + int index, com.google.cloud.videointelligence.v1.TextAnnotation value) { + if (textAnnotationsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureTextAnnotationsIsMutable(); + textAnnotations_.set(index, value); + onChanged(); + } else { + textAnnotationsBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public Builder setTextAnnotations( + int index, com.google.cloud.videointelligence.v1.TextAnnotation.Builder builderForValue) { + if (textAnnotationsBuilder_ == null) { + ensureTextAnnotationsIsMutable(); + textAnnotations_.set(index, builderForValue.build()); + onChanged(); + } else { + textAnnotationsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public Builder addTextAnnotations(com.google.cloud.videointelligence.v1.TextAnnotation value) { + if (textAnnotationsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureTextAnnotationsIsMutable(); + textAnnotations_.add(value); + onChanged(); + } else { + textAnnotationsBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public Builder addTextAnnotations( + int index, com.google.cloud.videointelligence.v1.TextAnnotation value) { + if (textAnnotationsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureTextAnnotationsIsMutable(); + textAnnotations_.add(index, value); + onChanged(); + } else { + textAnnotationsBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public Builder addTextAnnotations( + com.google.cloud.videointelligence.v1.TextAnnotation.Builder builderForValue) { + if (textAnnotationsBuilder_ == null) { + ensureTextAnnotationsIsMutable(); + textAnnotations_.add(builderForValue.build()); + onChanged(); + } else { + textAnnotationsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public Builder addTextAnnotations( + int index, com.google.cloud.videointelligence.v1.TextAnnotation.Builder builderForValue) { + if (textAnnotationsBuilder_ == null) { + ensureTextAnnotationsIsMutable(); + textAnnotations_.add(index, builderForValue.build()); + onChanged(); + } else { + textAnnotationsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public Builder addAllTextAnnotations( + java.lang.Iterable values) { + if (textAnnotationsBuilder_ == null) { + ensureTextAnnotationsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, textAnnotations_); + onChanged(); + } else { + textAnnotationsBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public Builder clearTextAnnotations() { + if (textAnnotationsBuilder_ == null) { + textAnnotations_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000100); + onChanged(); + } else { + textAnnotationsBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public Builder removeTextAnnotations(int index) { + if (textAnnotationsBuilder_ == null) { + ensureTextAnnotationsIsMutable(); + textAnnotations_.remove(index); + onChanged(); + } else { + textAnnotationsBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public com.google.cloud.videointelligence.v1.TextAnnotation.Builder getTextAnnotationsBuilder( + int index) { + return getTextAnnotationsFieldBuilder().getBuilder(index); + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public com.google.cloud.videointelligence.v1.TextAnnotationOrBuilder + getTextAnnotationsOrBuilder(int index) { + if (textAnnotationsBuilder_ == null) { + return textAnnotations_.get(index); + } else { + return textAnnotationsBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public java.util.List + getTextAnnotationsOrBuilderList() { + if (textAnnotationsBuilder_ != null) { + return textAnnotationsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(textAnnotations_); + } + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public com.google.cloud.videointelligence.v1.TextAnnotation.Builder + addTextAnnotationsBuilder() { + return getTextAnnotationsFieldBuilder() + .addBuilder(com.google.cloud.videointelligence.v1.TextAnnotation.getDefaultInstance()); + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public com.google.cloud.videointelligence.v1.TextAnnotation.Builder addTextAnnotationsBuilder( + int index) { + return getTextAnnotationsFieldBuilder() + .addBuilder( + index, com.google.cloud.videointelligence.v1.TextAnnotation.getDefaultInstance()); + } + /** + * + * + *
+     * OCR text detection and tracking.
+     * Annotations for list of detected text snippets. Each will have list of
+     * frame information associated with it.
+     * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + * + */ + public java.util.List + getTextAnnotationsBuilderList() { + return getTextAnnotationsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.TextAnnotation, + com.google.cloud.videointelligence.v1.TextAnnotation.Builder, + com.google.cloud.videointelligence.v1.TextAnnotationOrBuilder> + getTextAnnotationsFieldBuilder() { + if (textAnnotationsBuilder_ == null) { + textAnnotationsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.TextAnnotation, + com.google.cloud.videointelligence.v1.TextAnnotation.Builder, + com.google.cloud.videointelligence.v1.TextAnnotationOrBuilder>( + textAnnotations_, + ((bitField0_ & 0x00000100) == 0x00000100), + getParentForChildren(), + isClean()); + textAnnotations_ = null; + } + return textAnnotationsBuilder_; + } + + private java.util.List + objectAnnotations_ = java.util.Collections.emptyList(); + + private void ensureObjectAnnotationsIsMutable() { + if (!((bitField0_ & 0x00000200) == 0x00000200)) { + objectAnnotations_ = + new java.util.ArrayList( + objectAnnotations_); + bitField0_ |= 0x00000200; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation, + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.Builder, + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotationOrBuilder> + objectAnnotationsBuilder_; + + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public java.util.List + getObjectAnnotationsList() { + if (objectAnnotationsBuilder_ == null) { + return java.util.Collections.unmodifiableList(objectAnnotations_); + } else { + return objectAnnotationsBuilder_.getMessageList(); + } + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public int getObjectAnnotationsCount() { + if (objectAnnotationsBuilder_ == null) { + return objectAnnotations_.size(); + } else { + return objectAnnotationsBuilder_.getCount(); + } + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation getObjectAnnotations( + int index) { + if (objectAnnotationsBuilder_ == null) { + return objectAnnotations_.get(index); + } else { + return objectAnnotationsBuilder_.getMessage(index); + } + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public Builder setObjectAnnotations( + int index, com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation value) { + if (objectAnnotationsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureObjectAnnotationsIsMutable(); + objectAnnotations_.set(index, value); + onChanged(); + } else { + objectAnnotationsBuilder_.setMessage(index, value); + } + return this; + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public Builder setObjectAnnotations( + int index, + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.Builder builderForValue) { + if (objectAnnotationsBuilder_ == null) { + ensureObjectAnnotationsIsMutable(); + objectAnnotations_.set(index, builderForValue.build()); + onChanged(); + } else { + objectAnnotationsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public Builder addObjectAnnotations( + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation value) { + if (objectAnnotationsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureObjectAnnotationsIsMutable(); + objectAnnotations_.add(value); + onChanged(); + } else { + objectAnnotationsBuilder_.addMessage(value); + } + return this; + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public Builder addObjectAnnotations( + int index, com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation value) { + if (objectAnnotationsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureObjectAnnotationsIsMutable(); + objectAnnotations_.add(index, value); + onChanged(); + } else { + objectAnnotationsBuilder_.addMessage(index, value); + } + return this; + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public Builder addObjectAnnotations( + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.Builder builderForValue) { + if (objectAnnotationsBuilder_ == null) { + ensureObjectAnnotationsIsMutable(); + objectAnnotations_.add(builderForValue.build()); + onChanged(); + } else { + objectAnnotationsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public Builder addObjectAnnotations( + int index, + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.Builder builderForValue) { + if (objectAnnotationsBuilder_ == null) { + ensureObjectAnnotationsIsMutable(); + objectAnnotations_.add(index, builderForValue.build()); + onChanged(); + } else { + objectAnnotationsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public Builder addAllObjectAnnotations( + java.lang.Iterable + values) { + if (objectAnnotationsBuilder_ == null) { + ensureObjectAnnotationsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll(values, objectAnnotations_); + onChanged(); + } else { + objectAnnotationsBuilder_.addAllMessages(values); + } + return this; + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public Builder clearObjectAnnotations() { + if (objectAnnotationsBuilder_ == null) { + objectAnnotations_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000200); + onChanged(); + } else { + objectAnnotationsBuilder_.clear(); + } + return this; + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public Builder removeObjectAnnotations(int index) { + if (objectAnnotationsBuilder_ == null) { + ensureObjectAnnotationsIsMutable(); + objectAnnotations_.remove(index); + onChanged(); + } else { + objectAnnotationsBuilder_.remove(index); + } + return this; + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.Builder + getObjectAnnotationsBuilder(int index) { + return getObjectAnnotationsFieldBuilder().getBuilder(index); + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public com.google.cloud.videointelligence.v1.ObjectTrackingAnnotationOrBuilder + getObjectAnnotationsOrBuilder(int index) { + if (objectAnnotationsBuilder_ == null) { + return objectAnnotations_.get(index); + } else { + return objectAnnotationsBuilder_.getMessageOrBuilder(index); + } + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public java.util.List< + ? extends com.google.cloud.videointelligence.v1.ObjectTrackingAnnotationOrBuilder> + getObjectAnnotationsOrBuilderList() { + if (objectAnnotationsBuilder_ != null) { + return objectAnnotationsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(objectAnnotations_); + } + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.Builder + addObjectAnnotationsBuilder() { + return getObjectAnnotationsFieldBuilder() + .addBuilder( + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.getDefaultInstance()); + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.Builder + addObjectAnnotationsBuilder(int index) { + return getObjectAnnotationsFieldBuilder() + .addBuilder( + index, + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.getDefaultInstance()); + } + /** + * + * + *
+     * Annotations for list of objects detected and tracked in video.
+     * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + public java.util.List + getObjectAnnotationsBuilderList() { + return getObjectAnnotationsFieldBuilder().getBuilderList(); + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation, + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.Builder, + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotationOrBuilder> + getObjectAnnotationsFieldBuilder() { + if (objectAnnotationsBuilder_ == null) { + objectAnnotationsBuilder_ = + new com.google.protobuf.RepeatedFieldBuilderV3< + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation, + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation.Builder, + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotationOrBuilder>( + objectAnnotations_, + ((bitField0_ & 0x00000200) == 0x00000200), + getParentForChildren(), + isClean()); + objectAnnotations_ = null; + } + return objectAnnotationsBuilder_; + } + private com.google.rpc.Status error_ = null; private com.google.protobuf.SingleFieldBuilderV3< com.google.rpc.Status, com.google.rpc.Status.Builder, com.google.rpc.StatusOrBuilder> diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoAnnotationResultsOrBuilder.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoAnnotationResultsOrBuilder.java index 486f302d155d..81ed9983116d 100644 --- a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoAnnotationResultsOrBuilder.java +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoAnnotationResultsOrBuilder.java @@ -433,6 +433,133 @@ com.google.cloud.videointelligence.v1.VideoSegmentOrBuilder getShotAnnotationsOr com.google.cloud.videointelligence.v1.SpeechTranscriptionOrBuilder getSpeechTranscriptionsOrBuilder(int index); + /** + * + * + *
+   * OCR text detection and tracking.
+   * Annotations for list of detected text snippets. Each will have list of
+   * frame information associated with it.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + */ + java.util.List getTextAnnotationsList(); + /** + * + * + *
+   * OCR text detection and tracking.
+   * Annotations for list of detected text snippets. Each will have list of
+   * frame information associated with it.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + */ + com.google.cloud.videointelligence.v1.TextAnnotation getTextAnnotations(int index); + /** + * + * + *
+   * OCR text detection and tracking.
+   * Annotations for list of detected text snippets. Each will have list of
+   * frame information associated with it.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + */ + int getTextAnnotationsCount(); + /** + * + * + *
+   * OCR text detection and tracking.
+   * Annotations for list of detected text snippets. Each will have list of
+   * frame information associated with it.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + */ + java.util.List + getTextAnnotationsOrBuilderList(); + /** + * + * + *
+   * OCR text detection and tracking.
+   * Annotations for list of detected text snippets. Each will have list of
+   * frame information associated with it.
+   * 
+ * + * repeated .google.cloud.videointelligence.v1.TextAnnotation text_annotations = 12; + */ + com.google.cloud.videointelligence.v1.TextAnnotationOrBuilder getTextAnnotationsOrBuilder( + int index); + + /** + * + * + *
+   * Annotations for list of objects detected and tracked in video.
+   * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + java.util.List + getObjectAnnotationsList(); + /** + * + * + *
+   * Annotations for list of objects detected and tracked in video.
+   * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotation getObjectAnnotations(int index); + /** + * + * + *
+   * Annotations for list of objects detected and tracked in video.
+   * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + int getObjectAnnotationsCount(); + /** + * + * + *
+   * Annotations for list of objects detected and tracked in video.
+   * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + java.util.List + getObjectAnnotationsOrBuilderList(); + /** + * + * + *
+   * Annotations for list of objects detected and tracked in video.
+   * 
+ * + * + * repeated .google.cloud.videointelligence.v1.ObjectTrackingAnnotation object_annotations = 14; + * + */ + com.google.cloud.videointelligence.v1.ObjectTrackingAnnotationOrBuilder + getObjectAnnotationsOrBuilder(int index); + /** * * diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoContext.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoContext.java index 55eaae6e6b4e..811656b4f2fc 100644 --- a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoContext.java +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoContext.java @@ -149,6 +149,23 @@ private VideoContext( speechTranscriptionConfig_ = subBuilder.buildPartial(); } + break; + } + case 66: + { + com.google.cloud.videointelligence.v1.TextDetectionConfig.Builder subBuilder = null; + if (textDetectionConfig_ != null) { + subBuilder = textDetectionConfig_.toBuilder(); + } + textDetectionConfig_ = + input.readMessage( + com.google.cloud.videointelligence.v1.TextDetectionConfig.parser(), + extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(textDetectionConfig_); + textDetectionConfig_ = subBuilder.buildPartial(); + } + break; } default: @@ -501,6 +518,48 @@ public boolean hasSpeechTranscriptionConfig() { return getSpeechTranscriptionConfig(); } + public static final int TEXT_DETECTION_CONFIG_FIELD_NUMBER = 8; + private com.google.cloud.videointelligence.v1.TextDetectionConfig textDetectionConfig_; + /** + * + * + *
+   * Config for TEXT_DETECTION.
+   * 
+ * + * .google.cloud.videointelligence.v1.TextDetectionConfig text_detection_config = 8; + */ + public boolean hasTextDetectionConfig() { + return textDetectionConfig_ != null; + } + /** + * + * + *
+   * Config for TEXT_DETECTION.
+   * 
+ * + * .google.cloud.videointelligence.v1.TextDetectionConfig text_detection_config = 8; + */ + public com.google.cloud.videointelligence.v1.TextDetectionConfig getTextDetectionConfig() { + return textDetectionConfig_ == null + ? com.google.cloud.videointelligence.v1.TextDetectionConfig.getDefaultInstance() + : textDetectionConfig_; + } + /** + * + * + *
+   * Config for TEXT_DETECTION.
+   * 
+ * + * .google.cloud.videointelligence.v1.TextDetectionConfig text_detection_config = 8; + */ + public com.google.cloud.videointelligence.v1.TextDetectionConfigOrBuilder + getTextDetectionConfigOrBuilder() { + return getTextDetectionConfig(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override @@ -533,6 +592,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io if (speechTranscriptionConfig_ != null) { output.writeMessage(6, getSpeechTranscriptionConfig()); } + if (textDetectionConfig_ != null) { + output.writeMessage(8, getTextDetectionConfig()); + } unknownFields.writeTo(output); } @@ -567,6 +629,9 @@ public int getSerializedSize() { com.google.protobuf.CodedOutputStream.computeMessageSize( 6, getSpeechTranscriptionConfig()); } + if (textDetectionConfig_ != null) { + size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, getTextDetectionConfig()); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -612,6 +677,10 @@ && getExplicitContentDetectionConfig() result = result && getSpeechTranscriptionConfig().equals(other.getSpeechTranscriptionConfig()); } + result = result && (hasTextDetectionConfig() == other.hasTextDetectionConfig()); + if (hasTextDetectionConfig()) { + result = result && getTextDetectionConfig().equals(other.getTextDetectionConfig()); + } result = result && unknownFields.equals(other.unknownFields); return result; } @@ -647,6 +716,10 @@ public int hashCode() { hash = (37 * hash) + SPEECH_TRANSCRIPTION_CONFIG_FIELD_NUMBER; hash = (53 * hash) + getSpeechTranscriptionConfig().hashCode(); } + if (hasTextDetectionConfig()) { + hash = (37 * hash) + TEXT_DETECTION_CONFIG_FIELD_NUMBER; + hash = (53 * hash) + getTextDetectionConfig().hashCode(); + } hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; @@ -830,6 +903,12 @@ public Builder clear() { speechTranscriptionConfig_ = null; speechTranscriptionConfigBuilder_ = null; } + if (textDetectionConfigBuilder_ == null) { + textDetectionConfig_ = null; + } else { + textDetectionConfig_ = null; + textDetectionConfigBuilder_ = null; + } return this; } @@ -893,6 +972,11 @@ public com.google.cloud.videointelligence.v1.VideoContext buildPartial() { } else { result.speechTranscriptionConfig_ = speechTranscriptionConfigBuilder_.build(); } + if (textDetectionConfigBuilder_ == null) { + result.textDetectionConfig_ = textDetectionConfig_; + } else { + result.textDetectionConfig_ = textDetectionConfigBuilder_.build(); + } result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -986,6 +1070,9 @@ public Builder mergeFrom(com.google.cloud.videointelligence.v1.VideoContext othe if (other.hasSpeechTranscriptionConfig()) { mergeSpeechTranscriptionConfig(other.getSpeechTranscriptionConfig()); } + if (other.hasTextDetectionConfig()) { + mergeTextDetectionConfig(other.getTextDetectionConfig()); + } this.mergeUnknownFields(other.unknownFields); onChanged(); return this; @@ -2431,6 +2518,202 @@ public Builder clearSpeechTranscriptionConfig() { return speechTranscriptionConfigBuilder_; } + private com.google.cloud.videointelligence.v1.TextDetectionConfig textDetectionConfig_ = null; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.TextDetectionConfig, + com.google.cloud.videointelligence.v1.TextDetectionConfig.Builder, + com.google.cloud.videointelligence.v1.TextDetectionConfigOrBuilder> + textDetectionConfigBuilder_; + /** + * + * + *
+     * Config for TEXT_DETECTION.
+     * 
+ * + * .google.cloud.videointelligence.v1.TextDetectionConfig text_detection_config = 8; + * + */ + public boolean hasTextDetectionConfig() { + return textDetectionConfigBuilder_ != null || textDetectionConfig_ != null; + } + /** + * + * + *
+     * Config for TEXT_DETECTION.
+     * 
+ * + * .google.cloud.videointelligence.v1.TextDetectionConfig text_detection_config = 8; + * + */ + public com.google.cloud.videointelligence.v1.TextDetectionConfig getTextDetectionConfig() { + if (textDetectionConfigBuilder_ == null) { + return textDetectionConfig_ == null + ? com.google.cloud.videointelligence.v1.TextDetectionConfig.getDefaultInstance() + : textDetectionConfig_; + } else { + return textDetectionConfigBuilder_.getMessage(); + } + } + /** + * + * + *
+     * Config for TEXT_DETECTION.
+     * 
+ * + * .google.cloud.videointelligence.v1.TextDetectionConfig text_detection_config = 8; + * + */ + public Builder setTextDetectionConfig( + com.google.cloud.videointelligence.v1.TextDetectionConfig value) { + if (textDetectionConfigBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + textDetectionConfig_ = value; + onChanged(); + } else { + textDetectionConfigBuilder_.setMessage(value); + } + + return this; + } + /** + * + * + *
+     * Config for TEXT_DETECTION.
+     * 
+ * + * .google.cloud.videointelligence.v1.TextDetectionConfig text_detection_config = 8; + * + */ + public Builder setTextDetectionConfig( + com.google.cloud.videointelligence.v1.TextDetectionConfig.Builder builderForValue) { + if (textDetectionConfigBuilder_ == null) { + textDetectionConfig_ = builderForValue.build(); + onChanged(); + } else { + textDetectionConfigBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * + * + *
+     * Config for TEXT_DETECTION.
+     * 
+ * + * .google.cloud.videointelligence.v1.TextDetectionConfig text_detection_config = 8; + * + */ + public Builder mergeTextDetectionConfig( + com.google.cloud.videointelligence.v1.TextDetectionConfig value) { + if (textDetectionConfigBuilder_ == null) { + if (textDetectionConfig_ != null) { + textDetectionConfig_ = + com.google.cloud.videointelligence.v1.TextDetectionConfig.newBuilder( + textDetectionConfig_) + .mergeFrom(value) + .buildPartial(); + } else { + textDetectionConfig_ = value; + } + onChanged(); + } else { + textDetectionConfigBuilder_.mergeFrom(value); + } + + return this; + } + /** + * + * + *
+     * Config for TEXT_DETECTION.
+     * 
+ * + * .google.cloud.videointelligence.v1.TextDetectionConfig text_detection_config = 8; + * + */ + public Builder clearTextDetectionConfig() { + if (textDetectionConfigBuilder_ == null) { + textDetectionConfig_ = null; + onChanged(); + } else { + textDetectionConfig_ = null; + textDetectionConfigBuilder_ = null; + } + + return this; + } + /** + * + * + *
+     * Config for TEXT_DETECTION.
+     * 
+ * + * .google.cloud.videointelligence.v1.TextDetectionConfig text_detection_config = 8; + * + */ + public com.google.cloud.videointelligence.v1.TextDetectionConfig.Builder + getTextDetectionConfigBuilder() { + + onChanged(); + return getTextDetectionConfigFieldBuilder().getBuilder(); + } + /** + * + * + *
+     * Config for TEXT_DETECTION.
+     * 
+ * + * .google.cloud.videointelligence.v1.TextDetectionConfig text_detection_config = 8; + * + */ + public com.google.cloud.videointelligence.v1.TextDetectionConfigOrBuilder + getTextDetectionConfigOrBuilder() { + if (textDetectionConfigBuilder_ != null) { + return textDetectionConfigBuilder_.getMessageOrBuilder(); + } else { + return textDetectionConfig_ == null + ? com.google.cloud.videointelligence.v1.TextDetectionConfig.getDefaultInstance() + : textDetectionConfig_; + } + } + /** + * + * + *
+     * Config for TEXT_DETECTION.
+     * 
+ * + * .google.cloud.videointelligence.v1.TextDetectionConfig text_detection_config = 8; + * + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.TextDetectionConfig, + com.google.cloud.videointelligence.v1.TextDetectionConfig.Builder, + com.google.cloud.videointelligence.v1.TextDetectionConfigOrBuilder> + getTextDetectionConfigFieldBuilder() { + if (textDetectionConfigBuilder_ == null) { + textDetectionConfigBuilder_ = + new com.google.protobuf.SingleFieldBuilderV3< + com.google.cloud.videointelligence.v1.TextDetectionConfig, + com.google.cloud.videointelligence.v1.TextDetectionConfig.Builder, + com.google.cloud.videointelligence.v1.TextDetectionConfigOrBuilder>( + getTextDetectionConfig(), getParentForChildren(), isClean()); + textDetectionConfig_ = null; + } + return textDetectionConfigBuilder_; + } + @java.lang.Override public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) { return super.setUnknownFieldsProto3(unknownFields); diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoContextOrBuilder.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoContextOrBuilder.java index f425fbbce8a8..2dc62b868a65 100644 --- a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoContextOrBuilder.java +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoContextOrBuilder.java @@ -251,4 +251,36 @@ public interface VideoContextOrBuilder */ com.google.cloud.videointelligence.v1.SpeechTranscriptionConfigOrBuilder getSpeechTranscriptionConfigOrBuilder(); + + /** + * + * + *
+   * Config for TEXT_DETECTION.
+   * 
+ * + * .google.cloud.videointelligence.v1.TextDetectionConfig text_detection_config = 8; + */ + boolean hasTextDetectionConfig(); + /** + * + * + *
+   * Config for TEXT_DETECTION.
+   * 
+ * + * .google.cloud.videointelligence.v1.TextDetectionConfig text_detection_config = 8; + */ + com.google.cloud.videointelligence.v1.TextDetectionConfig getTextDetectionConfig(); + /** + * + * + *
+   * Config for TEXT_DETECTION.
+   * 
+ * + * .google.cloud.videointelligence.v1.TextDetectionConfig text_detection_config = 8; + */ + com.google.cloud.videointelligence.v1.TextDetectionConfigOrBuilder + getTextDetectionConfigOrBuilder(); } diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoIntelligenceServiceProto.java b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoIntelligenceServiceProto.java index 530be1b5a186..cc6bac53eec5 100644 --- a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoIntelligenceServiceProto.java +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/java/com/google/cloud/videointelligence/v1/VideoIntelligenceServiceProto.java @@ -36,6 +36,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_cloud_videointelligence_v1_FaceDetectionConfig_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_cloud_videointelligence_v1_FaceDetectionConfig_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_cloud_videointelligence_v1_TextDetectionConfig_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_cloud_videointelligence_v1_TextDetectionConfig_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_google_cloud_videointelligence_v1_VideoSegment_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable @@ -116,6 +120,34 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_cloud_videointelligence_v1_WordInfo_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_cloud_videointelligence_v1_WordInfo_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_cloud_videointelligence_v1_NormalizedVertex_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_cloud_videointelligence_v1_NormalizedVertex_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_cloud_videointelligence_v1_NormalizedBoundingPoly_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_cloud_videointelligence_v1_NormalizedBoundingPoly_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_cloud_videointelligence_v1_TextSegment_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_cloud_videointelligence_v1_TextSegment_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_cloud_videointelligence_v1_TextFrame_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_cloud_videointelligence_v1_TextFrame_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_cloud_videointelligence_v1_TextAnnotation_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_cloud_videointelligence_v1_TextAnnotation_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_cloud_videointelligence_v1_ObjectTrackingFrame_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_cloud_videointelligence_v1_ObjectTrackingFrame_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_cloud_videointelligence_v1_ObjectTrackingAnnotation_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_cloud_videointelligence_v1_ObjectTrackingAnnotation_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -137,7 +169,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "telligence.v1.Feature\022F\n\rvideo_context\030\003" + " \001(\0132/.google.cloud.videointelligence.v1" + ".VideoContext\022\022\n\noutput_uri\030\004 \001(\t\022\023\n\013loc" - + "ation_id\030\005 \001(\t\"\266\004\n\014VideoContext\022A\n\010segme" + + "ation_id\030\005 \001(\t\"\215\005\n\014VideoContext\022A\n\010segme" + "nts\030\001 \003(\0132/.google.cloud.videointelligen" + "ce.v1.VideoSegment\022W\n\026label_detection_co" + "nfig\030\002 \001(\01327.google.cloud.videointellige" @@ -151,117 +183,150 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "oud.videointelligence.v1.FaceDetectionCo" + "nfig\022a\n\033speech_transcription_config\030\006 \001(" + "\0132<.google.cloud.videointelligence.v1.Sp" - + "eechTranscriptionConfig\"\225\001\n\024LabelDetecti" - + "onConfig\022S\n\024label_detection_mode\030\001 \001(\01625" - + ".google.cloud.videointelligence.v1.Label" - + "DetectionMode\022\031\n\021stationary_camera\030\002 \001(\010" - + "\022\r\n\005model\030\003 \001(\t\"*\n\031ShotChangeDetectionCo" - + "nfig\022\r\n\005model\030\001 \001(\t\"/\n\036ExplicitContentDe" - + "tectionConfig\022\r\n\005model\030\001 \001(\t\"D\n\023FaceDete" - + "ctionConfig\022\r\n\005model\030\001 \001(\t\022\036\n\026include_bo" - + "unding_boxes\030\002 \001(\010\"x\n\014VideoSegment\0224\n\021st" - + "art_time_offset\030\001 \001(\0132\031.google.protobuf." - + "Duration\0222\n\017end_time_offset\030\002 \001(\0132\031.goog" - + "le.protobuf.Duration\"d\n\014LabelSegment\022@\n\007" - + "segment\030\001 \001(\0132/.google.cloud.videointell" - + "igence.v1.VideoSegment\022\022\n\nconfidence\030\002 \001" - + "(\002\"P\n\nLabelFrame\022.\n\013time_offset\030\001 \001(\0132\031." - + "google.protobuf.Duration\022\022\n\nconfidence\030\002" - + " \001(\002\"G\n\006Entity\022\021\n\tentity_id\030\001 \001(\t\022\023\n\013des" - + "cription\030\002 \001(\t\022\025\n\rlanguage_code\030\003 \001(\t\"\224\002" - + "\n\017LabelAnnotation\0229\n\006entity\030\001 \001(\0132).goog" - + "le.cloud.videointelligence.v1.Entity\022D\n\021" - + "category_entities\030\002 \003(\0132).google.cloud.v" - + "ideointelligence.v1.Entity\022A\n\010segments\030\003" - + " \003(\0132/.google.cloud.videointelligence.v1" - + ".LabelSegment\022=\n\006frames\030\004 \003(\0132-.google.c" - + "loud.videointelligence.v1.LabelFrame\"\225\001\n" - + "\024ExplicitContentFrame\022.\n\013time_offset\030\001 \001" - + "(\0132\031.google.protobuf.Duration\022M\n\026pornogr" - + "aphy_likelihood\030\002 \001(\0162-.google.cloud.vid" - + "eointelligence.v1.Likelihood\"d\n\031Explicit" - + "ContentAnnotation\022G\n\006frames\030\001 \003(\01327.goog" - + "le.cloud.videointelligence.v1.ExplicitCo" - + "ntentFrame\"Q\n\025NormalizedBoundingBox\022\014\n\004l" - + "eft\030\001 \001(\002\022\013\n\003top\030\002 \001(\002\022\r\n\005right\030\003 \001(\002\022\016\n" - + "\006bottom\030\004 \001(\002\"O\n\013FaceSegment\022@\n\007segment\030" - + "\001 \001(\0132/.google.cloud.videointelligence.v" - + "1.VideoSegment\"\230\001\n\tFaceFrame\022[\n\031normaliz" - + "ed_bounding_boxes\030\001 \003(\01328.google.cloud.v" - + "ideointelligence.v1.NormalizedBoundingBo" - + "x\022.\n\013time_offset\030\002 \001(\0132\031.google.protobuf" - + ".Duration\"\243\001\n\016FaceAnnotation\022\021\n\tthumbnai" - + "l\030\001 \001(\014\022@\n\010segments\030\002 \003(\0132..google.cloud" - + ".videointelligence.v1.FaceSegment\022<\n\006fra" - + "mes\030\003 \003(\0132,.google.cloud.videointelligen" - + "ce.v1.FaceFrame\"\230\005\n\026VideoAnnotationResul" - + "ts\022\021\n\tinput_uri\030\001 \001(\t\022U\n\031segment_label_a" - + "nnotations\030\002 \003(\01322.google.cloud.videoint" - + "elligence.v1.LabelAnnotation\022R\n\026shot_lab" - + "el_annotations\030\003 \003(\01322.google.cloud.vide" - + "ointelligence.v1.LabelAnnotation\022S\n\027fram" - + "e_label_annotations\030\004 \003(\01322.google.cloud" - + ".videointelligence.v1.LabelAnnotation\022K\n" - + "\020face_annotations\030\005 \003(\01321.google.cloud.v" - + "ideointelligence.v1.FaceAnnotation\022I\n\020sh" - + "ot_annotations\030\006 \003(\0132/.google.cloud.vide" - + "ointelligence.v1.VideoSegment\022Y\n\023explici" - + "t_annotation\030\007 \001(\0132<.google.cloud.videoi" - + "ntelligence.v1.ExplicitContentAnnotation" - + "\022U\n\025speech_transcriptions\030\013 \003(\01326.google" - + ".cloud.videointelligence.v1.SpeechTransc" - + "ription\022!\n\005error\030\t \001(\0132\022.google.rpc.Stat" - + "us\"n\n\025AnnotateVideoResponse\022U\n\022annotatio" - + "n_results\030\001 \003(\01329.google.cloud.videointe" - + "lligence.v1.VideoAnnotationResults\"\247\001\n\027V" - + "ideoAnnotationProgress\022\021\n\tinput_uri\030\001 \001(" - + "\t\022\030\n\020progress_percent\030\002 \001(\005\022.\n\nstart_tim" - + "e\030\003 \001(\0132\032.google.protobuf.Timestamp\022/\n\013u" - + "pdate_time\030\004 \001(\0132\032.google.protobuf.Times" - + "tamp\"p\n\025AnnotateVideoProgress\022W\n\023annotat" - + "ion_progress\030\001 \003(\0132:.google.cloud.videoi" - + "ntelligence.v1.VideoAnnotationProgress\"\324" - + "\002\n\031SpeechTranscriptionConfig\022\025\n\rlanguage" - + "_code\030\001 \001(\t\022\030\n\020max_alternatives\030\002 \001(\005\022\030\n" - + "\020filter_profanity\030\003 \001(\010\022I\n\017speech_contex" - + "ts\030\004 \003(\01320.google.cloud.videointelligenc" - + "e.v1.SpeechContext\022$\n\034enable_automatic_p" - + "unctuation\030\005 \001(\010\022\024\n\014audio_tracks\030\006 \003(\005\022\"" - + "\n\032enable_speaker_diarization\030\007 \001(\010\022!\n\031di" - + "arization_speaker_count\030\010 \001(\005\022\036\n\026enable_" - + "word_confidence\030\t \001(\010\" \n\rSpeechContext\022\017" - + "\n\007phrases\030\001 \003(\t\"\203\001\n\023SpeechTranscription\022" - + "U\n\014alternatives\030\001 \003(\0132?.google.cloud.vid" - + "eointelligence.v1.SpeechRecognitionAlter" - + "native\022\025\n\rlanguage_code\030\002 \001(\t\"\202\001\n\034Speech" - + "RecognitionAlternative\022\022\n\ntranscript\030\001 \001" - + "(\t\022\022\n\nconfidence\030\002 \001(\002\022:\n\005words\030\003 \003(\0132+." - + "google.cloud.videointelligence.v1.WordIn" - + "fo\"\235\001\n\010WordInfo\022-\n\nstart_time\030\001 \001(\0132\031.go" - + "ogle.protobuf.Duration\022+\n\010end_time\030\002 \001(\013" - + "2\031.google.protobuf.Duration\022\014\n\004word\030\003 \001(" - + "\t\022\022\n\nconfidence\030\004 \001(\002\022\023\n\013speaker_tag\030\005 \001" - + "(\005*\240\001\n\007Feature\022\027\n\023FEATURE_UNSPECIFIED\020\000\022" - + "\023\n\017LABEL_DETECTION\020\001\022\031\n\025SHOT_CHANGE_DETE" - + "CTION\020\002\022\036\n\032EXPLICIT_CONTENT_DETECTION\020\003\022" - + "\022\n\016FACE_DETECTION\020\004\022\030\n\024SPEECH_TRANSCRIPT" - + "ION\020\006*r\n\022LabelDetectionMode\022$\n LABEL_DET" - + "ECTION_MODE_UNSPECIFIED\020\000\022\r\n\tSHOT_MODE\020\001" - + "\022\016\n\nFRAME_MODE\020\002\022\027\n\023SHOT_AND_FRAME_MODE\020" - + "\003*t\n\nLikelihood\022\032\n\026LIKELIHOOD_UNSPECIFIE" - + "D\020\000\022\021\n\rVERY_UNLIKELY\020\001\022\014\n\010UNLIKELY\020\002\022\014\n\010" - + "POSSIBLE\020\003\022\n\n\006LIKELY\020\004\022\017\n\013VERY_LIKELY\020\0052" - + "\244\001\n\030VideoIntelligenceService\022\207\001\n\rAnnotat" - + "eVideo\0227.google.cloud.videointelligence." - + "v1.AnnotateVideoRequest\032\035.google.longrun" - + "ning.Operation\"\036\202\323\344\223\002\030\"\023/v1/videos:annot" - + "ate:\001*B\344\001\n%com.google.cloud.videointelli" - + "gence.v1B\035VideoIntelligenceServiceProtoP" - + "\001ZRgoogle.golang.org/genproto/googleapis" - + "/cloud/videointelligence/v1;videointelli" - + "gence\252\002!Google.Cloud.VideoIntelligence.V" - + "1\312\002!Google\\Cloud\\VideoIntelligence\\V1b\006p" - + "roto3" + + "eechTranscriptionConfig\022U\n\025text_detectio" + + "n_config\030\010 \001(\01326.google.cloud.videointel" + + "ligence.v1.TextDetectionConfig\"\225\001\n\024Label" + + "DetectionConfig\022S\n\024label_detection_mode\030" + + "\001 \001(\01625.google.cloud.videointelligence.v" + + "1.LabelDetectionMode\022\031\n\021stationary_camer" + + "a\030\002 \001(\010\022\r\n\005model\030\003 \001(\t\"*\n\031ShotChangeDete" + + "ctionConfig\022\r\n\005model\030\001 \001(\t\"/\n\036ExplicitCo" + + "ntentDetectionConfig\022\r\n\005model\030\001 \001(\t\"D\n\023F" + + "aceDetectionConfig\022\r\n\005model\030\001 \001(\t\022\036\n\026inc" + + "lude_bounding_boxes\030\002 \001(\010\"-\n\023TextDetecti" + + "onConfig\022\026\n\016language_hints\030\001 \003(\t\"x\n\014Vide" + + "oSegment\0224\n\021start_time_offset\030\001 \001(\0132\031.go" + + "ogle.protobuf.Duration\0222\n\017end_time_offse" + + "t\030\002 \001(\0132\031.google.protobuf.Duration\"d\n\014La" + + "belSegment\022@\n\007segment\030\001 \001(\0132/.google.clo" + + "ud.videointelligence.v1.VideoSegment\022\022\n\n" + + "confidence\030\002 \001(\002\"P\n\nLabelFrame\022.\n\013time_o" + + "ffset\030\001 \001(\0132\031.google.protobuf.Duration\022\022" + + "\n\nconfidence\030\002 \001(\002\"G\n\006Entity\022\021\n\tentity_i" + + "d\030\001 \001(\t\022\023\n\013description\030\002 \001(\t\022\025\n\rlanguage" + + "_code\030\003 \001(\t\"\224\002\n\017LabelAnnotation\0229\n\006entit" + + "y\030\001 \001(\0132).google.cloud.videointelligence" + + ".v1.Entity\022D\n\021category_entities\030\002 \003(\0132)." + + "google.cloud.videointelligence.v1.Entity" + + "\022A\n\010segments\030\003 \003(\0132/.google.cloud.videoi" + + "ntelligence.v1.LabelSegment\022=\n\006frames\030\004 " + + "\003(\0132-.google.cloud.videointelligence.v1." + + "LabelFrame\"\225\001\n\024ExplicitContentFrame\022.\n\013t" + + "ime_offset\030\001 \001(\0132\031.google.protobuf.Durat" + + "ion\022M\n\026pornography_likelihood\030\002 \001(\0162-.go" + + "ogle.cloud.videointelligence.v1.Likeliho" + + "od\"d\n\031ExplicitContentAnnotation\022G\n\006frame" + + "s\030\001 \003(\01327.google.cloud.videointelligence" + + ".v1.ExplicitContentFrame\"Q\n\025NormalizedBo" + + "undingBox\022\014\n\004left\030\001 \001(\002\022\013\n\003top\030\002 \001(\002\022\r\n\005" + + "right\030\003 \001(\002\022\016\n\006bottom\030\004 \001(\002\"O\n\013FaceSegme" + + "nt\022@\n\007segment\030\001 \001(\0132/.google.cloud.video" + + "intelligence.v1.VideoSegment\"\230\001\n\tFaceFra" + + "me\022[\n\031normalized_bounding_boxes\030\001 \003(\01328." + + "google.cloud.videointelligence.v1.Normal" + + "izedBoundingBox\022.\n\013time_offset\030\002 \001(\0132\031.g" + + "oogle.protobuf.Duration\"\243\001\n\016FaceAnnotati" + + "on\022\021\n\tthumbnail\030\001 \001(\014\022@\n\010segments\030\002 \003(\0132" + + "..google.cloud.videointelligence.v1.Face" + + "Segment\022<\n\006frames\030\003 \003(\0132,.google.cloud.v" + + "ideointelligence.v1.FaceFrame\"\276\006\n\026VideoA" + + "nnotationResults\022\021\n\tinput_uri\030\001 \001(\t\022U\n\031s" + + "egment_label_annotations\030\002 \003(\01322.google." + + "cloud.videointelligence.v1.LabelAnnotati" + + "on\022R\n\026shot_label_annotations\030\003 \003(\01322.goo" + + "gle.cloud.videointelligence.v1.LabelAnno" + + "tation\022S\n\027frame_label_annotations\030\004 \003(\0132" + + "2.google.cloud.videointelligence.v1.Labe" + + "lAnnotation\022K\n\020face_annotations\030\005 \003(\01321." + + "google.cloud.videointelligence.v1.FaceAn" + + "notation\022I\n\020shot_annotations\030\006 \003(\0132/.goo" + + "gle.cloud.videointelligence.v1.VideoSegm" + + "ent\022Y\n\023explicit_annotation\030\007 \001(\0132<.googl" + + "e.cloud.videointelligence.v1.ExplicitCon" + + "tentAnnotation\022U\n\025speech_transcriptions\030" + + "\013 \003(\01326.google.cloud.videointelligence.v" + + "1.SpeechTranscription\022K\n\020text_annotation" + + "s\030\014 \003(\01321.google.cloud.videointelligence" + + ".v1.TextAnnotation\022W\n\022object_annotations" + + "\030\016 \003(\0132;.google.cloud.videointelligence." + + "v1.ObjectTrackingAnnotation\022!\n\005error\030\t \001" + + "(\0132\022.google.rpc.Status\"n\n\025AnnotateVideoR" + + "esponse\022U\n\022annotation_results\030\001 \003(\01329.go" + + "ogle.cloud.videointelligence.v1.VideoAnn" + + "otationResults\"\247\001\n\027VideoAnnotationProgre" + + "ss\022\021\n\tinput_uri\030\001 \001(\t\022\030\n\020progress_percen" + + "t\030\002 \001(\005\022.\n\nstart_time\030\003 \001(\0132\032.google.pro" + + "tobuf.Timestamp\022/\n\013update_time\030\004 \001(\0132\032.g" + + "oogle.protobuf.Timestamp\"p\n\025AnnotateVide" + + "oProgress\022W\n\023annotation_progress\030\001 \003(\0132:" + + ".google.cloud.videointelligence.v1.Video" + + "AnnotationProgress\"\324\002\n\031SpeechTranscripti" + + "onConfig\022\025\n\rlanguage_code\030\001 \001(\t\022\030\n\020max_a" + + "lternatives\030\002 \001(\005\022\030\n\020filter_profanity\030\003 " + + "\001(\010\022I\n\017speech_contexts\030\004 \003(\01320.google.cl" + + "oud.videointelligence.v1.SpeechContext\022$" + + "\n\034enable_automatic_punctuation\030\005 \001(\010\022\024\n\014" + + "audio_tracks\030\006 \003(\005\022\"\n\032enable_speaker_dia" + + "rization\030\007 \001(\010\022!\n\031diarization_speaker_co" + + "unt\030\010 \001(\005\022\036\n\026enable_word_confidence\030\t \001(" + + "\010\" \n\rSpeechContext\022\017\n\007phrases\030\001 \003(\t\"\203\001\n\023" + + "SpeechTranscription\022U\n\014alternatives\030\001 \003(" + + "\0132?.google.cloud.videointelligence.v1.Sp" + + "eechRecognitionAlternative\022\025\n\rlanguage_c" + + "ode\030\002 \001(\t\"\202\001\n\034SpeechRecognitionAlternati" + + "ve\022\022\n\ntranscript\030\001 \001(\t\022\022\n\nconfidence\030\002 \001" + + "(\002\022:\n\005words\030\003 \003(\0132+.google.cloud.videoin" + + "telligence.v1.WordInfo\"\235\001\n\010WordInfo\022-\n\ns" + + "tart_time\030\001 \001(\0132\031.google.protobuf.Durati" + + "on\022+\n\010end_time\030\002 \001(\0132\031.google.protobuf.D" + + "uration\022\014\n\004word\030\003 \001(\t\022\022\n\nconfidence\030\004 \001(" + + "\002\022\023\n\013speaker_tag\030\005 \001(\005\"(\n\020NormalizedVert" + + "ex\022\t\n\001x\030\001 \001(\002\022\t\n\001y\030\002 \001(\002\"_\n\026NormalizedBo" + + "undingPoly\022E\n\010vertices\030\001 \003(\01323.google.cl" + + "oud.videointelligence.v1.NormalizedVerte" + + "x\"\241\001\n\013TextSegment\022@\n\007segment\030\001 \001(\0132/.goo" + + "gle.cloud.videointelligence.v1.VideoSegm" + + "ent\022\022\n\nconfidence\030\002 \001(\002\022<\n\006frames\030\003 \003(\0132" + + ",.google.cloud.videointelligence.v1.Text" + + "Frame\"\224\001\n\tTextFrame\022W\n\024rotated_bounding_" + + "box\030\001 \001(\01329.google.cloud.videointelligen" + + "ce.v1.NormalizedBoundingPoly\022.\n\013time_off" + + "set\030\002 \001(\0132\031.google.protobuf.Duration\"`\n\016" + + "TextAnnotation\022\014\n\004text\030\001 \001(\t\022@\n\010segments" + + "\030\002 \003(\0132..google.cloud.videointelligence." + + "v1.TextSegment\"\240\001\n\023ObjectTrackingFrame\022Y" + + "\n\027normalized_bounding_box\030\001 \001(\01328.google" + + ".cloud.videointelligence.v1.NormalizedBo" + + "undingBox\022.\n\013time_offset\030\002 \001(\0132\031.google." + + "protobuf.Duration\"\227\002\n\030ObjectTrackingAnno" + + "tation\022B\n\007segment\030\003 \001(\0132/.google.cloud.v" + + "ideointelligence.v1.VideoSegmentH\000\022\022\n\010tr" + + "ack_id\030\005 \001(\003H\000\0229\n\006entity\030\001 \001(\0132).google." + + "cloud.videointelligence.v1.Entity\022\022\n\ncon" + + "fidence\030\004 \001(\002\022F\n\006frames\030\002 \003(\01326.google.c" + + "loud.videointelligence.v1.ObjectTracking" + + "FrameB\014\n\ntrack_info*\311\001\n\007Feature\022\027\n\023FEATU" + + "RE_UNSPECIFIED\020\000\022\023\n\017LABEL_DETECTION\020\001\022\031\n" + + "\025SHOT_CHANGE_DETECTION\020\002\022\036\n\032EXPLICIT_CON" + + "TENT_DETECTION\020\003\022\022\n\016FACE_DETECTION\020\004\022\030\n\024" + + "SPEECH_TRANSCRIPTION\020\006\022\022\n\016TEXT_DETECTION" + + "\020\007\022\023\n\017OBJECT_TRACKING\020\t*r\n\022LabelDetectio" + + "nMode\022$\n LABEL_DETECTION_MODE_UNSPECIFIE" + + "D\020\000\022\r\n\tSHOT_MODE\020\001\022\016\n\nFRAME_MODE\020\002\022\027\n\023SH" + + "OT_AND_FRAME_MODE\020\003*t\n\nLikelihood\022\032\n\026LIK" + + "ELIHOOD_UNSPECIFIED\020\000\022\021\n\rVERY_UNLIKELY\020\001" + + "\022\014\n\010UNLIKELY\020\002\022\014\n\010POSSIBLE\020\003\022\n\n\006LIKELY\020\004" + + "\022\017\n\013VERY_LIKELY\020\0052\244\001\n\030VideoIntelligenceS" + + "ervice\022\207\001\n\rAnnotateVideo\0227.google.cloud." + + "videointelligence.v1.AnnotateVideoReques" + + "t\032\035.google.longrunning.Operation\"\036\202\323\344\223\002\030" + + "\"\023/v1/videos:annotate:\001*B\344\001\n%com.google." + + "cloud.videointelligence.v1B\035VideoIntelli" + + "genceServiceProtoP\001ZRgoogle.golang.org/g" + + "enproto/googleapis/cloud/videointelligen" + + "ce/v1;videointelligence\252\002!Google.Cloud.V" + + "ideoIntelligence.V1\312\002!Google\\Cloud\\Video" + + "Intelligence\\V1b\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -301,6 +366,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "ExplicitContentDetectionConfig", "FaceDetectionConfig", "SpeechTranscriptionConfig", + "TextDetectionConfig", }); internal_static_google_cloud_videointelligence_v1_LabelDetectionConfig_descriptor = getDescriptor().getMessageTypes().get(2); @@ -334,8 +400,16 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( new java.lang.String[] { "Model", "IncludeBoundingBoxes", }); - internal_static_google_cloud_videointelligence_v1_VideoSegment_descriptor = + internal_static_google_cloud_videointelligence_v1_TextDetectionConfig_descriptor = getDescriptor().getMessageTypes().get(6); + internal_static_google_cloud_videointelligence_v1_TextDetectionConfig_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_cloud_videointelligence_v1_TextDetectionConfig_descriptor, + new java.lang.String[] { + "LanguageHints", + }); + internal_static_google_cloud_videointelligence_v1_VideoSegment_descriptor = + getDescriptor().getMessageTypes().get(7); internal_static_google_cloud_videointelligence_v1_VideoSegment_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_VideoSegment_descriptor, @@ -343,7 +417,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "StartTimeOffset", "EndTimeOffset", }); internal_static_google_cloud_videointelligence_v1_LabelSegment_descriptor = - getDescriptor().getMessageTypes().get(7); + getDescriptor().getMessageTypes().get(8); internal_static_google_cloud_videointelligence_v1_LabelSegment_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_LabelSegment_descriptor, @@ -351,7 +425,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Segment", "Confidence", }); internal_static_google_cloud_videointelligence_v1_LabelFrame_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(9); internal_static_google_cloud_videointelligence_v1_LabelFrame_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_LabelFrame_descriptor, @@ -359,7 +433,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "TimeOffset", "Confidence", }); internal_static_google_cloud_videointelligence_v1_Entity_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(10); internal_static_google_cloud_videointelligence_v1_Entity_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_Entity_descriptor, @@ -367,7 +441,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "EntityId", "Description", "LanguageCode", }); internal_static_google_cloud_videointelligence_v1_LabelAnnotation_descriptor = - getDescriptor().getMessageTypes().get(10); + getDescriptor().getMessageTypes().get(11); internal_static_google_cloud_videointelligence_v1_LabelAnnotation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_LabelAnnotation_descriptor, @@ -375,7 +449,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Entity", "CategoryEntities", "Segments", "Frames", }); internal_static_google_cloud_videointelligence_v1_ExplicitContentFrame_descriptor = - getDescriptor().getMessageTypes().get(11); + getDescriptor().getMessageTypes().get(12); internal_static_google_cloud_videointelligence_v1_ExplicitContentFrame_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_ExplicitContentFrame_descriptor, @@ -383,7 +457,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "TimeOffset", "PornographyLikelihood", }); internal_static_google_cloud_videointelligence_v1_ExplicitContentAnnotation_descriptor = - getDescriptor().getMessageTypes().get(12); + getDescriptor().getMessageTypes().get(13); internal_static_google_cloud_videointelligence_v1_ExplicitContentAnnotation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_ExplicitContentAnnotation_descriptor, @@ -391,7 +465,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Frames", }); internal_static_google_cloud_videointelligence_v1_NormalizedBoundingBox_descriptor = - getDescriptor().getMessageTypes().get(13); + getDescriptor().getMessageTypes().get(14); internal_static_google_cloud_videointelligence_v1_NormalizedBoundingBox_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_NormalizedBoundingBox_descriptor, @@ -399,7 +473,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Left", "Top", "Right", "Bottom", }); internal_static_google_cloud_videointelligence_v1_FaceSegment_descriptor = - getDescriptor().getMessageTypes().get(14); + getDescriptor().getMessageTypes().get(15); internal_static_google_cloud_videointelligence_v1_FaceSegment_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_FaceSegment_descriptor, @@ -407,7 +481,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Segment", }); internal_static_google_cloud_videointelligence_v1_FaceFrame_descriptor = - getDescriptor().getMessageTypes().get(15); + getDescriptor().getMessageTypes().get(16); internal_static_google_cloud_videointelligence_v1_FaceFrame_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_FaceFrame_descriptor, @@ -415,7 +489,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "NormalizedBoundingBoxes", "TimeOffset", }); internal_static_google_cloud_videointelligence_v1_FaceAnnotation_descriptor = - getDescriptor().getMessageTypes().get(16); + getDescriptor().getMessageTypes().get(17); internal_static_google_cloud_videointelligence_v1_FaceAnnotation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_FaceAnnotation_descriptor, @@ -423,7 +497,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Thumbnail", "Segments", "Frames", }); internal_static_google_cloud_videointelligence_v1_VideoAnnotationResults_descriptor = - getDescriptor().getMessageTypes().get(17); + getDescriptor().getMessageTypes().get(18); internal_static_google_cloud_videointelligence_v1_VideoAnnotationResults_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_VideoAnnotationResults_descriptor, @@ -436,10 +510,12 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "ShotAnnotations", "ExplicitAnnotation", "SpeechTranscriptions", + "TextAnnotations", + "ObjectAnnotations", "Error", }); internal_static_google_cloud_videointelligence_v1_AnnotateVideoResponse_descriptor = - getDescriptor().getMessageTypes().get(18); + getDescriptor().getMessageTypes().get(19); internal_static_google_cloud_videointelligence_v1_AnnotateVideoResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_AnnotateVideoResponse_descriptor, @@ -447,7 +523,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "AnnotationResults", }); internal_static_google_cloud_videointelligence_v1_VideoAnnotationProgress_descriptor = - getDescriptor().getMessageTypes().get(19); + getDescriptor().getMessageTypes().get(20); internal_static_google_cloud_videointelligence_v1_VideoAnnotationProgress_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_VideoAnnotationProgress_descriptor, @@ -455,7 +531,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "InputUri", "ProgressPercent", "StartTime", "UpdateTime", }); internal_static_google_cloud_videointelligence_v1_AnnotateVideoProgress_descriptor = - getDescriptor().getMessageTypes().get(20); + getDescriptor().getMessageTypes().get(21); internal_static_google_cloud_videointelligence_v1_AnnotateVideoProgress_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_AnnotateVideoProgress_descriptor, @@ -463,7 +539,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "AnnotationProgress", }); internal_static_google_cloud_videointelligence_v1_SpeechTranscriptionConfig_descriptor = - getDescriptor().getMessageTypes().get(21); + getDescriptor().getMessageTypes().get(22); internal_static_google_cloud_videointelligence_v1_SpeechTranscriptionConfig_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_SpeechTranscriptionConfig_descriptor, @@ -479,7 +555,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "EnableWordConfidence", }); internal_static_google_cloud_videointelligence_v1_SpeechContext_descriptor = - getDescriptor().getMessageTypes().get(22); + getDescriptor().getMessageTypes().get(23); internal_static_google_cloud_videointelligence_v1_SpeechContext_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_SpeechContext_descriptor, @@ -487,7 +563,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Phrases", }); internal_static_google_cloud_videointelligence_v1_SpeechTranscription_descriptor = - getDescriptor().getMessageTypes().get(23); + getDescriptor().getMessageTypes().get(24); internal_static_google_cloud_videointelligence_v1_SpeechTranscription_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_SpeechTranscription_descriptor, @@ -495,7 +571,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Alternatives", "LanguageCode", }); internal_static_google_cloud_videointelligence_v1_SpeechRecognitionAlternative_descriptor = - getDescriptor().getMessageTypes().get(24); + getDescriptor().getMessageTypes().get(25); internal_static_google_cloud_videointelligence_v1_SpeechRecognitionAlternative_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_SpeechRecognitionAlternative_descriptor, @@ -503,13 +579,69 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( "Transcript", "Confidence", "Words", }); internal_static_google_cloud_videointelligence_v1_WordInfo_descriptor = - getDescriptor().getMessageTypes().get(25); + getDescriptor().getMessageTypes().get(26); internal_static_google_cloud_videointelligence_v1_WordInfo_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_google_cloud_videointelligence_v1_WordInfo_descriptor, new java.lang.String[] { "StartTime", "EndTime", "Word", "Confidence", "SpeakerTag", }); + internal_static_google_cloud_videointelligence_v1_NormalizedVertex_descriptor = + getDescriptor().getMessageTypes().get(27); + internal_static_google_cloud_videointelligence_v1_NormalizedVertex_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_cloud_videointelligence_v1_NormalizedVertex_descriptor, + new java.lang.String[] { + "X", "Y", + }); + internal_static_google_cloud_videointelligence_v1_NormalizedBoundingPoly_descriptor = + getDescriptor().getMessageTypes().get(28); + internal_static_google_cloud_videointelligence_v1_NormalizedBoundingPoly_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_cloud_videointelligence_v1_NormalizedBoundingPoly_descriptor, + new java.lang.String[] { + "Vertices", + }); + internal_static_google_cloud_videointelligence_v1_TextSegment_descriptor = + getDescriptor().getMessageTypes().get(29); + internal_static_google_cloud_videointelligence_v1_TextSegment_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_cloud_videointelligence_v1_TextSegment_descriptor, + new java.lang.String[] { + "Segment", "Confidence", "Frames", + }); + internal_static_google_cloud_videointelligence_v1_TextFrame_descriptor = + getDescriptor().getMessageTypes().get(30); + internal_static_google_cloud_videointelligence_v1_TextFrame_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_cloud_videointelligence_v1_TextFrame_descriptor, + new java.lang.String[] { + "RotatedBoundingBox", "TimeOffset", + }); + internal_static_google_cloud_videointelligence_v1_TextAnnotation_descriptor = + getDescriptor().getMessageTypes().get(31); + internal_static_google_cloud_videointelligence_v1_TextAnnotation_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_cloud_videointelligence_v1_TextAnnotation_descriptor, + new java.lang.String[] { + "Text", "Segments", + }); + internal_static_google_cloud_videointelligence_v1_ObjectTrackingFrame_descriptor = + getDescriptor().getMessageTypes().get(32); + internal_static_google_cloud_videointelligence_v1_ObjectTrackingFrame_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_cloud_videointelligence_v1_ObjectTrackingFrame_descriptor, + new java.lang.String[] { + "NormalizedBoundingBox", "TimeOffset", + }); + internal_static_google_cloud_videointelligence_v1_ObjectTrackingAnnotation_descriptor = + getDescriptor().getMessageTypes().get(33); + internal_static_google_cloud_videointelligence_v1_ObjectTrackingAnnotation_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_cloud_videointelligence_v1_ObjectTrackingAnnotation_descriptor, + new java.lang.String[] { + "Segment", "TrackId", "Entity", "Confidence", "Frames", "TrackInfo", + }); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); registry.add(com.google.api.AnnotationsProto.http); diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/proto/google/cloud/videointelligence/v1/video_intelligence.proto b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/proto/google/cloud/videointelligence/v1/video_intelligence.proto index 223e866e53a9..048750865109 100644 --- a/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/proto/google/cloud/videointelligence/v1/video_intelligence.proto +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1/src/main/proto/google/cloud/videointelligence/v1/video_intelligence.proto @@ -1,4 +1,4 @@ -// Copyright 2017 Google Inc. +// Copyright 2018 Google LLC. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -11,6 +11,7 @@ // 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. +// syntax = "proto3"; @@ -101,6 +102,9 @@ message VideoContext { // Config for SPEECH_TRANSCRIPTION. SpeechTranscriptionConfig speech_transcription_config = 6; + + // Config for TEXT_DETECTION. + TextDetectionConfig text_detection_config = 8; } // Config for LABEL_DETECTION. @@ -148,6 +152,16 @@ message FaceDetectionConfig { bool include_bounding_boxes = 2; } +// Config for TEXT_DETECTION. +message TextDetectionConfig { + // Language hint can be specified if the language to be detected is known a + // priori. It can increase the accuracy of the detection. Language hint must + // be language code in BCP-47 format. + // + // Automatic language detection is performed if no hint is provided. + repeated string language_hints = 1; +} + // Video segment. message VideoSegment { // Time-offset, relative to the beginning of the video, @@ -305,6 +319,14 @@ message VideoAnnotationResults { // Speech transcription. repeated SpeechTranscription speech_transcriptions = 11; + // OCR text detection and tracking. + // Annotations for list of detected text snippets. Each will have list of + // frame information associated with it. + repeated TextAnnotation text_annotations = 12; + + // Annotations for list of objects detected and tracked in video. + repeated ObjectTrackingAnnotation object_annotations = 14; + // If set, indicates an error. Note that for a single `AnnotateVideoRequest` // some videos may succeed and some may fail. google.rpc.Status error = 9; @@ -479,6 +501,115 @@ message WordInfo { int32 speaker_tag = 5; } +// A vertex represents a 2D point in the image. +// NOTE: the normalized vertex coordinates are relative to the original image +// and range from 0 to 1. +message NormalizedVertex { + // X coordinate. + float x = 1; + + // Y coordinate. + float y = 2; +} + +// Normalized bounding polygon for text (that might not be aligned with axis). +// Contains list of the corner points in clockwise order starting from +// top-left corner. For example, for a rectangular bounding box: +// When the text is horizontal it might look like: +// 0----1 +// | | +// 3----2 +// +// When it's clockwise rotated 180 degrees around the top-left corner it +// becomes: +// 2----3 +// | | +// 1----0 +// +// and the vertex order will still be (0, 1, 2, 3). Note that values can be less +// than 0, or greater than 1 due to trignometric calculations for location of +// the box. +message NormalizedBoundingPoly { + // Normalized vertices of the bounding polygon. + repeated NormalizedVertex vertices = 1; +} + +// Video segment level annotation results for text detection. +message TextSegment { + // Video segment where a text snippet was detected. + VideoSegment segment = 1; + + // Confidence for the track of detected text. It is calculated as the highest + // over all frames where OCR detected text appears. + float confidence = 2; + + // Information related to the frames where OCR detected text appears. + repeated TextFrame frames = 3; +} + +// Video frame level annotation results for text annotation (OCR). +// Contains information regarding timestamp and bounding box locations for the +// frames containing detected OCR text snippets. +message TextFrame { + // Bounding polygon of the detected text for this frame. + NormalizedBoundingPoly rotated_bounding_box = 1; + + // Timestamp of this frame. + google.protobuf.Duration time_offset = 2; +} + +// Annotations related to one detected OCR text snippet. This will contain the +// corresponding text, confidence value, and frame level information for each +// detection. +message TextAnnotation { + // The detected text. + string text = 1; + + // All video segments where OCR detected text appears. + repeated TextSegment segments = 2; +} + +// Video frame level annotations for object detection and tracking. This field +// stores per frame location, time offset, and confidence. +message ObjectTrackingFrame { + // The normalized bounding box location of this object track for the frame. + NormalizedBoundingBox normalized_bounding_box = 1; + + // The timestamp of the frame in microseconds. + google.protobuf.Duration time_offset = 2; +} + +// Annotations corresponding to one tracked object. +message ObjectTrackingAnnotation { + // Different representation of tracking info in non-streaming batch + // and streaming modes. + oneof track_info { + // Non-streaming batch mode ONLY. + // Each object track corresponds to one video segment where it appears. + VideoSegment segment = 3; + + // Streaming mode ONLY. + // In streaming mode, we do not know the end time of a tracked object + // before it is completed. Hence, there is no VideoSegment info returned. + // Instead, we provide a unique identifiable integer track_id so that + // the customers can correlate the results of the ongoing + // ObjectTrackAnnotation of the same track_id over time. + int64 track_id = 5; + } + + // Entity to specify the object category that this track is labeled as. + Entity entity = 1; + + // Object category's labeling confidence of this track. + float confidence = 4; + + // Information corresponding to all frames where this object track appears. + // Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame + // messages in frames. + // Streaming mode: it can only be one ObjectTrackingFrame message in frames. + repeated ObjectTrackingFrame frames = 2; +} + // Video annotation feature. enum Feature { // Unspecified. @@ -498,6 +629,12 @@ enum Feature { // Speech transcription. SPEECH_TRANSCRIPTION = 6; + + // OCR text detection and tracking. + TEXT_DETECTION = 7; + + // Object detection and tracking. + OBJECT_TRACKING = 9; } // Label detection mode. diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1beta1/pom.xml b/google-api-grpc/proto-google-cloud-video-intelligence-v1beta1/pom.xml index 4aab9338bb6b..9c31251231ac 100644 --- a/google-api-grpc/proto-google-cloud-video-intelligence-v1beta1/pom.xml +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-video-intelligence-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-video-intelligence-v1beta1 PROTO library for proto-google-cloud-video-intelligence-v1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1beta2/pom.xml b/google-api-grpc/proto-google-cloud-video-intelligence-v1beta2/pom.xml index 7943dc184195..a45cde2811ed 100644 --- a/google-api-grpc/proto-google-cloud-video-intelligence-v1beta2/pom.xml +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1beta2/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-video-intelligence-v1beta2 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-video-intelligence-v1beta2 PROTO library for proto-google-cloud-video-intelligence-v1beta2 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1p1beta1/pom.xml b/google-api-grpc/proto-google-cloud-video-intelligence-v1p1beta1/pom.xml index f7ffa16c86a9..6f06a47f9795 100644 --- a/google-api-grpc/proto-google-cloud-video-intelligence-v1p1beta1/pom.xml +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1p1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-video-intelligence-v1p1beta1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-video-intelligence-v1p1beta1 PROTO library for proto-google-cloud-video-intelligence-v1p1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-video-intelligence-v1p2beta1/pom.xml b/google-api-grpc/proto-google-cloud-video-intelligence-v1p2beta1/pom.xml index 3826efd1c389..a7f216182993 100644 --- a/google-api-grpc/proto-google-cloud-video-intelligence-v1p2beta1/pom.xml +++ b/google-api-grpc/proto-google-cloud-video-intelligence-v1p2beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-video-intelligence-v1p2beta1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-video-intelligence-v1p2beta1 PROTO library for proto-google-cloud-video-intelligence-v1p2beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-vision-v1/pom.xml b/google-api-grpc/proto-google-cloud-vision-v1/pom.xml index 170b3572066a..44689a97cd7b 100644 --- a/google-api-grpc/proto-google-cloud-vision-v1/pom.xml +++ b/google-api-grpc/proto-google-cloud-vision-v1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-vision-v1 - 1.44.1-SNAPSHOT + 1.45.0 proto-google-cloud-vision-v1 PROTO library for proto-google-cloud-vision-v1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/Block.java b/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/Block.java index e384a24df02a..51ca4d9e7654 100644 --- a/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/Block.java +++ b/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/Block.java @@ -417,7 +417,7 @@ public com.google.cloud.vision.v1.TextAnnotation.TextPropertyOrBuilder getProper * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). *
* * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -443,7 +443,7 @@ public boolean hasBoundingBox() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). *
* * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -471,7 +471,7 @@ public com.google.cloud.vision.v1.BoundingPoly getBoundingBox() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). *
* * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1242,7 +1242,7 @@ public com.google.cloud.vision.v1.TextAnnotation.TextPropertyOrBuilder getProper * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). *
* * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1268,7 +1268,7 @@ public boolean hasBoundingBox() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1300,7 +1300,7 @@ public com.google.cloud.vision.v1.BoundingPoly getBoundingBox() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1336,7 +1336,7 @@ public Builder setBoundingBox(com.google.cloud.vision.v1.BoundingPoly value) { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1369,7 +1369,7 @@ public Builder setBoundingBox(com.google.cloud.vision.v1.BoundingPoly.Builder bu * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1409,7 +1409,7 @@ public Builder mergeBoundingBox(com.google.cloud.vision.v1.BoundingPoly value) { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1443,7 +1443,7 @@ public Builder clearBoundingBox() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1471,7 +1471,7 @@ public com.google.cloud.vision.v1.BoundingPoly.Builder getBoundingBoxBuilder() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1503,7 +1503,7 @@ public com.google.cloud.vision.v1.BoundingPolyOrBuilder getBoundingBoxOrBuilder( * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; diff --git a/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/BlockOrBuilder.java b/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/BlockOrBuilder.java index 7e42b728a3a2..0e1d70a38975 100644 --- a/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/BlockOrBuilder.java +++ b/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/BlockOrBuilder.java @@ -57,7 +57,7 @@ public interface BlockOrBuilder * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -81,7 +81,7 @@ public interface BlockOrBuilder * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -105,7 +105,7 @@ public interface BlockOrBuilder * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; diff --git a/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/ImageAnnotatorProto.java b/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/ImageAnnotatorProto.java index ad9086b809df..ae10c2828a5e 100644 --- a/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/ImageAnnotatorProto.java +++ b/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/ImageAnnotatorProto.java @@ -164,193 +164,194 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "/v1/product_search.proto\032,google/cloud/v" + "ision/v1/text_annotation.proto\032*google/c" + "loud/vision/v1/web_detection.proto\032#goog" - + "le/longrunning/operations.proto\032\037google/" - + "protobuf/timestamp.proto\032\027google/rpc/sta" - + "tus.proto\032\027google/type/color.proto\032\030goog" - + "le/type/latlng.proto\"\207\003\n\007Feature\0222\n\004type" - + "\030\001 \001(\0162$.google.cloud.vision.v1.Feature." - + "Type\022\023\n\013max_results\030\002 \001(\005\022\r\n\005model\030\003 \001(\t" - + "\"\243\002\n\004Type\022\024\n\020TYPE_UNSPECIFIED\020\000\022\022\n\016FACE_" - + "DETECTION\020\001\022\026\n\022LANDMARK_DETECTION\020\002\022\022\n\016L" - + "OGO_DETECTION\020\003\022\023\n\017LABEL_DETECTION\020\004\022\022\n\016" - + "TEXT_DETECTION\020\005\022\033\n\027DOCUMENT_TEXT_DETECT" - + "ION\020\013\022\031\n\025SAFE_SEARCH_DETECTION\020\006\022\024\n\020IMAG" - + "E_PROPERTIES\020\007\022\016\n\nCROP_HINTS\020\t\022\021\n\rWEB_DE" - + "TECTION\020\n\022\022\n\016PRODUCT_SEARCH\020\014\022\027\n\023OBJECT_" - + "LOCALIZATION\020\023\"7\n\013ImageSource\022\025\n\rgcs_ima" - + "ge_uri\030\001 \001(\t\022\021\n\timage_uri\030\002 \001(\t\"M\n\005Image" - + "\022\017\n\007content\030\001 \001(\014\0223\n\006source\030\002 \001(\0132#.goog" - + "le.cloud.vision.v1.ImageSource\"\307\r\n\016FaceA" - + "nnotation\022;\n\rbounding_poly\030\001 \001(\0132$.googl" - + "e.cloud.vision.v1.BoundingPoly\022>\n\020fd_bou" - + "nding_poly\030\002 \001(\0132$.google.cloud.vision.v" - + "1.BoundingPoly\022B\n\tlandmarks\030\003 \003(\0132/.goog" + + "le/longrunning/operations.proto\032 google/" + + "protobuf/field_mask.proto\032\037google/protob" + + "uf/timestamp.proto\032\027google/rpc/status.pr" + + "oto\032\027google/type/color.proto\032\030google/typ" + + "e/latlng.proto\"\207\003\n\007Feature\0222\n\004type\030\001 \001(\016" + + "2$.google.cloud.vision.v1.Feature.Type\022\023" + + "\n\013max_results\030\002 \001(\005\022\r\n\005model\030\003 \001(\t\"\243\002\n\004T" + + "ype\022\024\n\020TYPE_UNSPECIFIED\020\000\022\022\n\016FACE_DETECT" + + "ION\020\001\022\026\n\022LANDMARK_DETECTION\020\002\022\022\n\016LOGO_DE" + + "TECTION\020\003\022\023\n\017LABEL_DETECTION\020\004\022\022\n\016TEXT_D" + + "ETECTION\020\005\022\033\n\027DOCUMENT_TEXT_DETECTION\020\013\022" + + "\031\n\025SAFE_SEARCH_DETECTION\020\006\022\024\n\020IMAGE_PROP" + + "ERTIES\020\007\022\016\n\nCROP_HINTS\020\t\022\021\n\rWEB_DETECTIO" + + "N\020\n\022\022\n\016PRODUCT_SEARCH\020\014\022\027\n\023OBJECT_LOCALI" + + "ZATION\020\023\"7\n\013ImageSource\022\025\n\rgcs_image_uri" + + "\030\001 \001(\t\022\021\n\timage_uri\030\002 \001(\t\"M\n\005Image\022\017\n\007co" + + "ntent\030\001 \001(\014\0223\n\006source\030\002 \001(\0132#.google.clo" + + "ud.vision.v1.ImageSource\"\307\r\n\016FaceAnnotat" + + "ion\022;\n\rbounding_poly\030\001 \001(\0132$.google.clou" + + "d.vision.v1.BoundingPoly\022>\n\020fd_bounding_" + + "poly\030\002 \001(\0132$.google.cloud.vision.v1.Boun" + + "dingPoly\022B\n\tlandmarks\030\003 \003(\0132/.google.clo" + + "ud.vision.v1.FaceAnnotation.Landmark\022\022\n\n" + + "roll_angle\030\004 \001(\002\022\021\n\tpan_angle\030\005 \001(\002\022\022\n\nt" + + "ilt_angle\030\006 \001(\002\022\034\n\024detection_confidence\030" + + "\007 \001(\002\022\036\n\026landmarking_confidence\030\010 \001(\002\022:\n" + + "\016joy_likelihood\030\t \001(\0162\".google.cloud.vis" + + "ion.v1.Likelihood\022=\n\021sorrow_likelihood\030\n" + + " \001(\0162\".google.cloud.vision.v1.Likelihood" + + "\022<\n\020anger_likelihood\030\013 \001(\0162\".google.clou" + + "d.vision.v1.Likelihood\022?\n\023surprise_likel" + + "ihood\030\014 \001(\0162\".google.cloud.vision.v1.Lik" + + "elihood\022D\n\030under_exposed_likelihood\030\r \001(" + + "\0162\".google.cloud.vision.v1.Likelihood\022>\n" + + "\022blurred_likelihood\030\016 \001(\0162\".google.cloud" + + ".vision.v1.Likelihood\022?\n\023headwear_likeli" + + "hood\030\017 \001(\0162\".google.cloud.vision.v1.Like" + + "lihood\032\271\007\n\010Landmark\022B\n\004type\030\003 \001(\01624.goog" + "le.cloud.vision.v1.FaceAnnotation.Landma" - + "rk\022\022\n\nroll_angle\030\004 \001(\002\022\021\n\tpan_angle\030\005 \001(" - + "\002\022\022\n\ntilt_angle\030\006 \001(\002\022\034\n\024detection_confi" - + "dence\030\007 \001(\002\022\036\n\026landmarking_confidence\030\010 " - + "\001(\002\022:\n\016joy_likelihood\030\t \001(\0162\".google.clo" - + "ud.vision.v1.Likelihood\022=\n\021sorrow_likeli" - + "hood\030\n \001(\0162\".google.cloud.vision.v1.Like" - + "lihood\022<\n\020anger_likelihood\030\013 \001(\0162\".googl" - + "e.cloud.vision.v1.Likelihood\022?\n\023surprise" - + "_likelihood\030\014 \001(\0162\".google.cloud.vision." - + "v1.Likelihood\022D\n\030under_exposed_likelihoo" - + "d\030\r \001(\0162\".google.cloud.vision.v1.Likelih" - + "ood\022>\n\022blurred_likelihood\030\016 \001(\0162\".google" - + ".cloud.vision.v1.Likelihood\022?\n\023headwear_" - + "likelihood\030\017 \001(\0162\".google.cloud.vision.v" - + "1.Likelihood\032\271\007\n\010Landmark\022B\n\004type\030\003 \001(\0162" - + "4.google.cloud.vision.v1.FaceAnnotation." - + "Landmark.Type\0222\n\010position\030\004 \001(\0132 .google" - + ".cloud.vision.v1.Position\"\264\006\n\004Type\022\024\n\020UN" - + "KNOWN_LANDMARK\020\000\022\014\n\010LEFT_EYE\020\001\022\r\n\tRIGHT_" - + "EYE\020\002\022\030\n\024LEFT_OF_LEFT_EYEBROW\020\003\022\031\n\025RIGHT" - + "_OF_LEFT_EYEBROW\020\004\022\031\n\025LEFT_OF_RIGHT_EYEB" - + "ROW\020\005\022\032\n\026RIGHT_OF_RIGHT_EYEBROW\020\006\022\031\n\025MID" - + "POINT_BETWEEN_EYES\020\007\022\014\n\010NOSE_TIP\020\010\022\r\n\tUP" - + "PER_LIP\020\t\022\r\n\tLOWER_LIP\020\n\022\016\n\nMOUTH_LEFT\020\013" - + "\022\017\n\013MOUTH_RIGHT\020\014\022\020\n\014MOUTH_CENTER\020\r\022\025\n\021N" - + "OSE_BOTTOM_RIGHT\020\016\022\024\n\020NOSE_BOTTOM_LEFT\020\017" - + "\022\026\n\022NOSE_BOTTOM_CENTER\020\020\022\031\n\025LEFT_EYE_TOP" - + "_BOUNDARY\020\021\022\031\n\025LEFT_EYE_RIGHT_CORNER\020\022\022\034" - + "\n\030LEFT_EYE_BOTTOM_BOUNDARY\020\023\022\030\n\024LEFT_EYE" - + "_LEFT_CORNER\020\024\022\032\n\026RIGHT_EYE_TOP_BOUNDARY" - + "\020\025\022\032\n\026RIGHT_EYE_RIGHT_CORNER\020\026\022\035\n\031RIGHT_" - + "EYE_BOTTOM_BOUNDARY\020\027\022\031\n\025RIGHT_EYE_LEFT_" - + "CORNER\020\030\022\037\n\033LEFT_EYEBROW_UPPER_MIDPOINT\020" - + "\031\022 \n\034RIGHT_EYEBROW_UPPER_MIDPOINT\020\032\022\024\n\020L" - + "EFT_EAR_TRAGION\020\033\022\025\n\021RIGHT_EAR_TRAGION\020\034" - + "\022\022\n\016LEFT_EYE_PUPIL\020\035\022\023\n\017RIGHT_EYE_PUPIL\020" - + "\036\022\025\n\021FOREHEAD_GLABELLA\020\037\022\021\n\rCHIN_GNATHIO" - + "N\020 \022\024\n\020CHIN_LEFT_GONION\020!\022\025\n\021CHIN_RIGHT_" - + "GONION\020\"\"4\n\014LocationInfo\022$\n\007lat_lng\030\001 \001(" - + "\0132\023.google.type.LatLng\"=\n\010Property\022\014\n\004na" - + "me\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\022\024\n\014uint64_value\030" - + "\003 \001(\004\"\253\002\n\020EntityAnnotation\022\013\n\003mid\030\001 \001(\t\022" - + "\016\n\006locale\030\002 \001(\t\022\023\n\013description\030\003 \001(\t\022\r\n\005" - + "score\030\004 \001(\002\022\026\n\nconfidence\030\005 \001(\002B\002\030\001\022\022\n\nt" - + "opicality\030\006 \001(\002\022;\n\rbounding_poly\030\007 \001(\0132$" - + ".google.cloud.vision.v1.BoundingPoly\0227\n\t" - + "locations\030\010 \003(\0132$.google.cloud.vision.v1" - + ".LocationInfo\0224\n\nproperties\030\t \003(\0132 .goog" - + "le.cloud.vision.v1.Property\"\231\001\n\031Localize" - + "dObjectAnnotation\022\013\n\003mid\030\001 \001(\t\022\025\n\rlangua" - + "ge_code\030\002 \001(\t\022\014\n\004name\030\003 \001(\t\022\r\n\005score\030\004 \001" - + "(\002\022;\n\rbounding_poly\030\005 \001(\0132$.google.cloud" - + ".vision.v1.BoundingPoly\"\231\002\n\024SafeSearchAn" - + "notation\0221\n\005adult\030\001 \001(\0162\".google.cloud.v" - + "ision.v1.Likelihood\0221\n\005spoof\030\002 \001(\0162\".goo" - + "gle.cloud.vision.v1.Likelihood\0223\n\007medica" - + "l\030\003 \001(\0162\".google.cloud.vision.v1.Likelih" - + "ood\0224\n\010violence\030\004 \001(\0162\".google.cloud.vis" - + "ion.v1.Likelihood\0220\n\004racy\030\t \001(\0162\".google" - + ".cloud.vision.v1.Likelihood\"a\n\013LatLongRe" - + "ct\022(\n\013min_lat_lng\030\001 \001(\0132\023.google.type.La" - + "tLng\022(\n\013max_lat_lng\030\002 \001(\0132\023.google.type." - + "LatLng\"U\n\tColorInfo\022!\n\005color\030\001 \001(\0132\022.goo" - + "gle.type.Color\022\r\n\005score\030\002 \001(\002\022\026\n\016pixel_f" - + "raction\030\003 \001(\002\"M\n\030DominantColorsAnnotatio" - + "n\0221\n\006colors\030\001 \003(\0132!.google.cloud.vision." - + "v1.ColorInfo\"\\\n\017ImageProperties\022I\n\017domin" - + "ant_colors\030\001 \001(\01320.google.cloud.vision.v" - + "1.DominantColorsAnnotation\"x\n\010CropHint\022;" - + "\n\rbounding_poly\030\001 \001(\0132$.google.cloud.vis" - + "ion.v1.BoundingPoly\022\022\n\nconfidence\030\002 \001(\002\022" - + "\033\n\023importance_fraction\030\003 \001(\002\"K\n\023CropHint" - + "sAnnotation\0224\n\ncrop_hints\030\001 \003(\0132 .google" - + ".cloud.vision.v1.CropHint\"(\n\017CropHintsPa" - + "rams\022\025\n\raspect_ratios\030\001 \003(\002\"1\n\022WebDetect" - + "ionParams\022\033\n\023include_geo_results\030\002 \001(\010\"\274" - + "\002\n\014ImageContext\022:\n\rlat_long_rect\030\001 \001(\0132#" - + ".google.cloud.vision.v1.LatLongRect\022\026\n\016l" - + "anguage_hints\030\002 \003(\t\022B\n\021crop_hints_params" - + "\030\004 \001(\0132\'.google.cloud.vision.v1.CropHint" - + "sParams\022J\n\025product_search_params\030\005 \001(\0132+" - + ".google.cloud.vision.v1.ProductSearchPar" - + "ams\022H\n\024web_detection_params\030\006 \001(\0132*.goog" - + "le.cloud.vision.v1.WebDetectionParams\"\264\001" - + "\n\024AnnotateImageRequest\022,\n\005image\030\001 \001(\0132\035." - + "google.cloud.vision.v1.Image\0221\n\010features" - + "\030\002 \003(\0132\037.google.cloud.vision.v1.Feature\022" - + ";\n\rimage_context\030\003 \001(\0132$.google.cloud.vi" - + "sion.v1.ImageContext\":\n\026ImageAnnotationC" - + "ontext\022\013\n\003uri\030\001 \001(\t\022\023\n\013page_number\030\002 \001(\005" - + "\"\344\007\n\025AnnotateImageResponse\022@\n\020face_annot" - + "ations\030\001 \003(\0132&.google.cloud.vision.v1.Fa" - + "ceAnnotation\022F\n\024landmark_annotations\030\002 \003" - + "(\0132(.google.cloud.vision.v1.EntityAnnota" - + "tion\022B\n\020logo_annotations\030\003 \003(\0132(.google." - + "cloud.vision.v1.EntityAnnotation\022C\n\021labe" - + "l_annotations\030\004 \003(\0132(.google.cloud.visio" - + "n.v1.EntityAnnotation\022W\n\034localized_objec" - + "t_annotations\030\026 \003(\01321.google.cloud.visio" - + "n.v1.LocalizedObjectAnnotation\022B\n\020text_a" - + "nnotations\030\005 \003(\0132(.google.cloud.vision.v" - + "1.EntityAnnotation\022D\n\024full_text_annotati" - + "on\030\014 \001(\0132&.google.cloud.vision.v1.TextAn" - + "notation\022L\n\026safe_search_annotation\030\006 \001(\013" - + "2,.google.cloud.vision.v1.SafeSearchAnno" - + "tation\022L\n\033image_properties_annotation\030\010 " - + "\001(\0132\'.google.cloud.vision.v1.ImageProper" - + "ties\022J\n\025crop_hints_annotation\030\013 \001(\0132+.go" - + "ogle.cloud.vision.v1.CropHintsAnnotation" - + "\022;\n\rweb_detection\030\r \001(\0132$.google.cloud.v" - + "ision.v1.WebDetection\022L\n\026product_search_" - + "results\030\016 \001(\0132,.google.cloud.vision.v1.P" - + "roductSearchResults\022!\n\005error\030\t \001(\0132\022.goo" - + "gle.rpc.Status\022?\n\007context\030\025 \001(\0132..google" - + ".cloud.vision.v1.ImageAnnotationContext\"" - + "\223\001\n\024AnnotateFileResponse\0229\n\014input_config" - + "\030\001 \001(\0132#.google.cloud.vision.v1.InputCon" - + "fig\022@\n\tresponses\030\002 \003(\0132-.google.cloud.vi" - + "sion.v1.AnnotateImageResponse\"\\\n\032BatchAn" - + "notateImagesRequest\022>\n\010requests\030\001 \003(\0132,." - + "google.cloud.vision.v1.AnnotateImageRequ" - + "est\"_\n\033BatchAnnotateImagesResponse\022@\n\tre" - + "sponses\030\001 \003(\0132-.google.cloud.vision.v1.A" - + "nnotateImageResponse\"\202\002\n\030AsyncAnnotateFi" - + "leRequest\0229\n\014input_config\030\001 \001(\0132#.google" - + ".cloud.vision.v1.InputConfig\0221\n\010features" - + "\030\002 \003(\0132\037.google.cloud.vision.v1.Feature\022" - + ";\n\rimage_context\030\003 \001(\0132$.google.cloud.vi" - + "sion.v1.ImageContext\022;\n\routput_config\030\004 " - + "\001(\0132$.google.cloud.vision.v1.OutputConfi" - + "g\"X\n\031AsyncAnnotateFileResponse\022;\n\routput" - + "_config\030\001 \001(\0132$.google.cloud.vision.v1.O" - + "utputConfig\"d\n\036AsyncBatchAnnotateFilesRe" - + "quest\022B\n\010requests\030\001 \003(\01320.google.cloud.v" - + "ision.v1.AsyncAnnotateFileRequest\"g\n\037Asy" - + "ncBatchAnnotateFilesResponse\022D\n\tresponse" - + "s\030\001 \003(\01321.google.cloud.vision.v1.AsyncAn" - + "notateFileResponse\"W\n\013InputConfig\0225\n\ngcs" - + "_source\030\001 \001(\0132!.google.cloud.vision.v1.G" - + "csSource\022\021\n\tmime_type\030\002 \001(\t\"c\n\014OutputCon" - + "fig\022?\n\017gcs_destination\030\001 \001(\0132&.google.cl" - + "oud.vision.v1.GcsDestination\022\022\n\nbatch_si" - + "ze\030\002 \001(\005\"\030\n\tGcsSource\022\013\n\003uri\030\001 \001(\t\"\035\n\016Gc" - + "sDestination\022\013\n\003uri\030\001 \001(\t\"\210\002\n\021OperationM" - + "etadata\022>\n\005state\030\001 \001(\0162/.google.cloud.vi" - + "sion.v1.OperationMetadata.State\022/\n\013creat" - + "e_time\030\005 \001(\0132\032.google.protobuf.Timestamp" - + "\022/\n\013update_time\030\006 \001(\0132\032.google.protobuf." - + "Timestamp\"Q\n\005State\022\025\n\021STATE_UNSPECIFIED\020" - + "\000\022\013\n\007CREATED\020\001\022\013\n\007RUNNING\020\002\022\010\n\004DONE\020\003\022\r\n" - + "\tCANCELLED\020\004*e\n\nLikelihood\022\013\n\007UNKNOWN\020\000\022" - + "\021\n\rVERY_UNLIKELY\020\001\022\014\n\010UNLIKELY\020\002\022\014\n\010POSS" - + "IBLE\020\003\022\n\n\006LIKELY\020\004\022\017\n\013VERY_LIKELY\020\0052\315\002\n\016" - + "ImageAnnotator\022\236\001\n\023BatchAnnotateImages\0222" - + ".google.cloud.vision.v1.BatchAnnotateIma" - + "gesRequest\0323.google.cloud.vision.v1.Batc" - + "hAnnotateImagesResponse\"\036\202\323\344\223\002\030\"\023/v1/ima" - + "ges:annotate:\001*\022\231\001\n\027AsyncBatchAnnotateFi" - + "les\0226.google.cloud.vision.v1.AsyncBatchA" - + "nnotateFilesRequest\032\035.google.longrunning" - + ".Operation\"\'\202\323\344\223\002!\"\034/v1/files:asyncBatch" - + "Annotate:\001*B{\n\032com.google.cloud.vision.v" - + "1B\023ImageAnnotatorProtoP\001Z\n\010requests\030\001 \003(\0132,.google" + + ".cloud.vision.v1.AnnotateImageRequest\"_\n" + + "\033BatchAnnotateImagesResponse\022@\n\tresponse" + + "s\030\001 \003(\0132-.google.cloud.vision.v1.Annotat" + + "eImageResponse\"\202\002\n\030AsyncAnnotateFileRequ" + + "est\0229\n\014input_config\030\001 \001(\0132#.google.cloud" + + ".vision.v1.InputConfig\0221\n\010features\030\002 \003(\013" + + "2\037.google.cloud.vision.v1.Feature\022;\n\rima" + + "ge_context\030\003 \001(\0132$.google.cloud.vision.v" + + "1.ImageContext\022;\n\routput_config\030\004 \001(\0132$." + + "google.cloud.vision.v1.OutputConfig\"X\n\031A" + + "syncAnnotateFileResponse\022;\n\routput_confi" + + "g\030\001 \001(\0132$.google.cloud.vision.v1.OutputC" + + "onfig\"d\n\036AsyncBatchAnnotateFilesRequest\022" + + "B\n\010requests\030\001 \003(\01320.google.cloud.vision." + + "v1.AsyncAnnotateFileRequest\"g\n\037AsyncBatc" + + "hAnnotateFilesResponse\022D\n\tresponses\030\001 \003(" + + "\01321.google.cloud.vision.v1.AsyncAnnotate" + + "FileResponse\"W\n\013InputConfig\0225\n\ngcs_sourc" + + "e\030\001 \001(\0132!.google.cloud.vision.v1.GcsSour" + + "ce\022\021\n\tmime_type\030\002 \001(\t\"c\n\014OutputConfig\022?\n" + + "\017gcs_destination\030\001 \001(\0132&.google.cloud.vi" + + "sion.v1.GcsDestination\022\022\n\nbatch_size\030\002 \001" + + "(\005\"\030\n\tGcsSource\022\013\n\003uri\030\001 \001(\t\"\035\n\016GcsDesti" + + "nation\022\013\n\003uri\030\001 \001(\t\"\210\002\n\021OperationMetadat" + + "a\022>\n\005state\030\001 \001(\0162/.google.cloud.vision.v" + + "1.OperationMetadata.State\022/\n\013create_time" + + "\030\005 \001(\0132\032.google.protobuf.Timestamp\022/\n\013up" + + "date_time\030\006 \001(\0132\032.google.protobuf.Timest" + + "amp\"Q\n\005State\022\025\n\021STATE_UNSPECIFIED\020\000\022\013\n\007C" + + "REATED\020\001\022\013\n\007RUNNING\020\002\022\010\n\004DONE\020\003\022\r\n\tCANCE" + + "LLED\020\004*e\n\nLikelihood\022\013\n\007UNKNOWN\020\000\022\021\n\rVER" + + "Y_UNLIKELY\020\001\022\014\n\010UNLIKELY\020\002\022\014\n\010POSSIBLE\020\003" + + "\022\n\n\006LIKELY\020\004\022\017\n\013VERY_LIKELY\020\0052\315\002\n\016ImageA" + + "nnotator\022\236\001\n\023BatchAnnotateImages\0222.googl" + + "e.cloud.vision.v1.BatchAnnotateImagesReq" + + "uest\0323.google.cloud.vision.v1.BatchAnnot" + + "ateImagesResponse\"\036\202\323\344\223\002\030\"\023/v1/images:an" + + "notate:\001*\022\231\001\n\027AsyncBatchAnnotateFiles\0226." + + "google.cloud.vision.v1.AsyncBatchAnnotat" + + "eFilesRequest\032\035.google.longrunning.Opera" + + "tion\"\'\202\323\344\223\002!\"\034/v1/files:asyncBatchAnnota" + + "te:\001*B{\n\032com.google.cloud.vision.v1B\023Ima" + + "geAnnotatorProtoP\001Z * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -224,7 +224,7 @@ public boolean hasBoundingBox() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -252,7 +252,7 @@ public com.google.cloud.vision.v1.BoundingPoly getBoundingBox() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -978,7 +978,7 @@ public com.google.cloud.vision.v1.TextAnnotation.TextPropertyOrBuilder getProper * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1004,7 +1004,7 @@ public boolean hasBoundingBox() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1036,7 +1036,7 @@ public com.google.cloud.vision.v1.BoundingPoly getBoundingBox() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1072,7 +1072,7 @@ public Builder setBoundingBox(com.google.cloud.vision.v1.BoundingPoly value) { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1105,7 +1105,7 @@ public Builder setBoundingBox(com.google.cloud.vision.v1.BoundingPoly.Builder bu * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1145,7 +1145,7 @@ public Builder mergeBoundingBox(com.google.cloud.vision.v1.BoundingPoly value) { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1179,7 +1179,7 @@ public Builder clearBoundingBox() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1207,7 +1207,7 @@ public com.google.cloud.vision.v1.BoundingPoly.Builder getBoundingBoxBuilder() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1239,7 +1239,7 @@ public com.google.cloud.vision.v1.BoundingPolyOrBuilder getBoundingBoxOrBuilder( * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; diff --git a/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/ParagraphOrBuilder.java b/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/ParagraphOrBuilder.java index 35d79db2020a..74054108daed 100644 --- a/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/ParagraphOrBuilder.java +++ b/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/ParagraphOrBuilder.java @@ -57,7 +57,7 @@ public interface ParagraphOrBuilder * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -81,7 +81,7 @@ public interface ParagraphOrBuilder * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -105,7 +105,7 @@ public interface ParagraphOrBuilder * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; diff --git a/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/ReferenceImageName.java b/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/ReferenceImageName.java new file mode 100644 index 000000000000..c25b93f10200 --- /dev/null +++ b/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/ReferenceImageName.java @@ -0,0 +1,249 @@ +/* + * Copyright 2018 Google LLC + * + * 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 com.google.cloud.vision.v1; + +import com.google.api.pathtemplate.PathTemplate; +import com.google.api.resourcenames.ResourceName; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +// AUTO-GENERATED DOCUMENTATION AND CLASS +@javax.annotation.Generated("by GAPIC protoc plugin") +public class ReferenceImageName implements ResourceName { + + private static final PathTemplate PATH_TEMPLATE = + PathTemplate.createWithoutUrlEncoding( + "projects/{project}/locations/{location}/products/{product}/referenceImages/{reference_image}"); + + private volatile Map fieldValuesMap; + + private final String project; + private final String location; + private final String product; + private final String referenceImage; + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public String getProduct() { + return product; + } + + public String getReferenceImage() { + return referenceImage; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder(this); + } + + private ReferenceImageName(Builder builder) { + project = Preconditions.checkNotNull(builder.getProject()); + location = Preconditions.checkNotNull(builder.getLocation()); + product = Preconditions.checkNotNull(builder.getProduct()); + referenceImage = Preconditions.checkNotNull(builder.getReferenceImage()); + } + + public static ReferenceImageName of( + String project, String location, String product, String referenceImage) { + return newBuilder() + .setProject(project) + .setLocation(location) + .setProduct(product) + .setReferenceImage(referenceImage) + .build(); + } + + public static String format( + String project, String location, String product, String referenceImage) { + return newBuilder() + .setProject(project) + .setLocation(location) + .setProduct(product) + .setReferenceImage(referenceImage) + .build() + .toString(); + } + + public static ReferenceImageName parse(String formattedString) { + if (formattedString.isEmpty()) { + return null; + } + Map matchMap = + PATH_TEMPLATE.validatedMatch( + formattedString, "ReferenceImageName.parse: formattedString not in valid format"); + return of( + matchMap.get("project"), + matchMap.get("location"), + matchMap.get("product"), + matchMap.get("reference_image")); + } + + public static List parseList(List formattedStrings) { + List list = new ArrayList<>(formattedStrings.size()); + for (String formattedString : formattedStrings) { + list.add(parse(formattedString)); + } + return list; + } + + public static List toStringList(List values) { + List list = new ArrayList(values.size()); + for (ReferenceImageName value : values) { + if (value == null) { + list.add(""); + } else { + list.add(value.toString()); + } + } + return list; + } + + public static boolean isParsableFrom(String formattedString) { + return PATH_TEMPLATE.matches(formattedString); + } + + public Map getFieldValuesMap() { + if (fieldValuesMap == null) { + synchronized (this) { + if (fieldValuesMap == null) { + ImmutableMap.Builder fieldMapBuilder = ImmutableMap.builder(); + fieldMapBuilder.put("project", project); + fieldMapBuilder.put("location", location); + fieldMapBuilder.put("product", product); + fieldMapBuilder.put("referenceImage", referenceImage); + fieldValuesMap = fieldMapBuilder.build(); + } + } + } + return fieldValuesMap; + } + + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return PATH_TEMPLATE.instantiate( + "project", + project, + "location", + location, + "product", + product, + "reference_image", + referenceImage); + } + + /** Builder for ReferenceImageName. */ + public static class Builder { + + private String project; + private String location; + private String product; + private String referenceImage; + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public String getProduct() { + return product; + } + + public String getReferenceImage() { + return referenceImage; + } + + public Builder setProject(String project) { + this.project = project; + return this; + } + + public Builder setLocation(String location) { + this.location = location; + return this; + } + + public Builder setProduct(String product) { + this.product = product; + return this; + } + + public Builder setReferenceImage(String referenceImage) { + this.referenceImage = referenceImage; + return this; + } + + private Builder() {} + + private Builder(ReferenceImageName referenceImageName) { + project = referenceImageName.project; + location = referenceImageName.location; + product = referenceImageName.product; + referenceImage = referenceImageName.referenceImage; + } + + public ReferenceImageName build() { + return new ReferenceImageName(this); + } + } + + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + if (o instanceof ReferenceImageName) { + ReferenceImageName that = (ReferenceImageName) o; + return (this.project.equals(that.project)) + && (this.location.equals(that.location)) + && (this.product.equals(that.product)) + && (this.referenceImage.equals(that.referenceImage)); + } + return false; + } + + @Override + public int hashCode() { + int h = 1; + h *= 1000003; + h ^= project.hashCode(); + h *= 1000003; + h ^= location.hashCode(); + h *= 1000003; + h ^= product.hashCode(); + h *= 1000003; + h ^= referenceImage.hashCode(); + return h; + } +} diff --git a/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/Word.java b/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/Word.java index 9a5090d505d3..a469b1b8adc1 100644 --- a/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/Word.java +++ b/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/Word.java @@ -197,7 +197,7 @@ public com.google.cloud.vision.v1.TextAnnotation.TextPropertyOrBuilder getProper * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -223,7 +223,7 @@ public boolean hasBoundingBox() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -251,7 +251,7 @@ public com.google.cloud.vision.v1.BoundingPoly getBoundingBox() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -981,7 +981,7 @@ public com.google.cloud.vision.v1.TextAnnotation.TextPropertyOrBuilder getProper * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1007,7 +1007,7 @@ public boolean hasBoundingBox() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1039,7 +1039,7 @@ public com.google.cloud.vision.v1.BoundingPoly getBoundingBox() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1075,7 +1075,7 @@ public Builder setBoundingBox(com.google.cloud.vision.v1.BoundingPoly value) { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1108,7 +1108,7 @@ public Builder setBoundingBox(com.google.cloud.vision.v1.BoundingPoly.Builder bu * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1148,7 +1148,7 @@ public Builder mergeBoundingBox(com.google.cloud.vision.v1.BoundingPoly value) { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1182,7 +1182,7 @@ public Builder clearBoundingBox() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1210,7 +1210,7 @@ public com.google.cloud.vision.v1.BoundingPoly.Builder getBoundingBoxBuilder() { * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -1242,7 +1242,7 @@ public com.google.cloud.vision.v1.BoundingPolyOrBuilder getBoundingBoxOrBuilder( * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; diff --git a/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/WordOrBuilder.java b/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/WordOrBuilder.java index d9db82b89bb4..94401d7048d1 100644 --- a/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/WordOrBuilder.java +++ b/google-api-grpc/proto-google-cloud-vision-v1/src/main/java/com/google/cloud/vision/v1/WordOrBuilder.java @@ -57,7 +57,7 @@ public interface WordOrBuilder * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -81,7 +81,7 @@ public interface WordOrBuilder * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; @@ -105,7 +105,7 @@ public interface WordOrBuilder * 2----3 * | | * 1----0 - * and the vertice order will still be (0, 1, 2, 3). + * and the vertex order will still be (0, 1, 2, 3). * * * .google.cloud.vision.v1.BoundingPoly bounding_box = 2; diff --git a/google-api-grpc/proto-google-cloud-vision-v1/src/main/proto/google/cloud/vision/v1/image_annotator.proto b/google-api-grpc/proto-google-cloud-vision-v1/src/main/proto/google/cloud/vision/v1/image_annotator.proto index a7235f7a1adb..1f768c208d7b 100644 --- a/google-api-grpc/proto-google-cloud-vision-v1/src/main/proto/google/cloud/vision/v1/image_annotator.proto +++ b/google-api-grpc/proto-google-cloud-vision-v1/src/main/proto/google/cloud/vision/v1/image_annotator.proto @@ -23,6 +23,7 @@ import "google/cloud/vision/v1/product_search.proto"; import "google/cloud/vision/v1/text_annotation.proto"; import "google/cloud/vision/v1/web_detection.proto"; import "google/longrunning/operations.proto"; +import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; import "google/rpc/status.proto"; import "google/type/color.proto"; diff --git a/google-api-grpc/proto-google-cloud-vision-v1/src/main/proto/google/cloud/vision/v1/product_search_service.proto b/google-api-grpc/proto-google-cloud-vision-v1/src/main/proto/google/cloud/vision/v1/product_search_service.proto index f8ae08e33c84..d017d27ff377 100644 --- a/google-api-grpc/proto-google-cloud-vision-v1/src/main/proto/google/cloud/vision/v1/product_search_service.proto +++ b/google-api-grpc/proto-google-cloud-vision-v1/src/main/proto/google/cloud/vision/v1/product_search_service.proto @@ -99,8 +99,8 @@ service ProductSearch { }; } - // Permanently deletes a ProductSet. All Products and ReferenceImages in the - // ProductSet will be deleted. + // Permanently deletes a ProductSet. Products and ReferenceImages in the + // ProductSet are not deleted. // // The actual image files are not deleted from Google Cloud Storage. // diff --git a/google-api-grpc/proto-google-cloud-vision-v1/src/main/proto/google/cloud/vision/v1/text_annotation.proto b/google-api-grpc/proto-google-cloud-vision-v1/src/main/proto/google/cloud/vision/v1/text_annotation.proto index c66c9114f1f7..44ebcdaeea50 100644 --- a/google-api-grpc/proto-google-cloud-vision-v1/src/main/proto/google/cloud/vision/v1/text_annotation.proto +++ b/google-api-grpc/proto-google-cloud-vision-v1/src/main/proto/google/cloud/vision/v1/text_annotation.proto @@ -159,7 +159,7 @@ message Block { // | | // 1----0 // - // and the vertice order will still be (0, 1, 2, 3). + // and the vertex order will still be (0, 1, 2, 3). BoundingPoly bounding_box = 2; // List of paragraphs in this block (if this blocks is of type text). @@ -191,7 +191,7 @@ message Paragraph { // 2----3 // | | // 1----0 - // and the vertice order will still be (0, 1, 2, 3). + // and the vertex order will still be (0, 1, 2, 3). BoundingPoly bounding_box = 2; // List of words in this paragraph. @@ -220,7 +220,7 @@ message Word { // 2----3 // | | // 1----0 - // and the vertice order will still be (0, 1, 2, 3). + // and the vertex order will still be (0, 1, 2, 3). BoundingPoly bounding_box = 2; // List of symbols in the word. diff --git a/google-api-grpc/proto-google-cloud-vision-v1p1beta1/pom.xml b/google-api-grpc/proto-google-cloud-vision-v1p1beta1/pom.xml index 2f5a6134e929..d87007815b1d 100644 --- a/google-api-grpc/proto-google-cloud-vision-v1p1beta1/pom.xml +++ b/google-api-grpc/proto-google-cloud-vision-v1p1beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-vision-v1p1beta1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-vision-v1p1beta1 PROTO library for proto-google-cloud-vision-v1p1beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-vision-v1p2beta1/pom.xml b/google-api-grpc/proto-google-cloud-vision-v1p2beta1/pom.xml index 9030fc1a2ca7..1c97a9cb79e8 100644 --- a/google-api-grpc/proto-google-cloud-vision-v1p2beta1/pom.xml +++ b/google-api-grpc/proto-google-cloud-vision-v1p2beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-vision-v1p2beta1 - 1.44.1-SNAPSHOT + 1.45.0 proto-google-cloud-vision-v1p2beta1 PROTO library for proto-google-cloud-vision-v1p2beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-vision-v1p3beta1/pom.xml b/google-api-grpc/proto-google-cloud-vision-v1p3beta1/pom.xml index 2001e31dd68b..dd25a26def48 100644 --- a/google-api-grpc/proto-google-cloud-vision-v1p3beta1/pom.xml +++ b/google-api-grpc/proto-google-cloud-vision-v1p3beta1/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-vision-v1p3beta1 - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-vision-v1p3beta1 PROTO library for proto-google-cloud-vision-v1p3beta1 com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-api-grpc/proto-google-cloud-websecurityscanner-v1alpha/pom.xml b/google-api-grpc/proto-google-cloud-websecurityscanner-v1alpha/pom.xml index f51b68b1bb44..00d4171d3190 100644 --- a/google-api-grpc/proto-google-cloud-websecurityscanner-v1alpha/pom.xml +++ b/google-api-grpc/proto-google-cloud-websecurityscanner-v1alpha/pom.xml @@ -3,13 +3,13 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 proto-google-cloud-websecurityscanner-v1alpha - 0.45.1-SNAPSHOT + 0.46.0 proto-google-cloud-websecurityscanner-v1alpha PROTO library for proto-google-cloud-websecurityscanner-v1alpha com.google.api.grpc google-api-grpc - 0.45.1-SNAPSHOT + 0.46.0 diff --git a/google-cloud-bom/README.md b/google-cloud-bom/README.md index b161d8ca85fc..f0e4edf17ded 100644 --- a/google-cloud-bom/README.md +++ b/google-cloud-bom/README.md @@ -13,7 +13,7 @@ To use it in Maven, add the following to your POM: com.google.cloud google-cloud-bom - 0.80.0-alpha + 0.81.0-alpha pom import diff --git a/google-cloud-bom/pom.xml b/google-cloud-bom/pom.xml index a7b757d8bc34..ae86827feed4 100644 --- a/google-cloud-bom/pom.xml +++ b/google-cloud-bom/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-bom pom - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha Google Cloud Java BOM https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-bom @@ -168,19 +168,19 @@ com.google.api gax-bom - 1.38.0 + 1.40.0 pom import com.google.api.grpc proto-google-common-protos - 1.12.0 + 1.14.0 com.google.api.grpc grpc-google-common-protos - 1.12.0 + 1.14.0 com.google.api.grpc @@ -197,723 +197,723 @@ com.google.cloud google-cloud-asset - 0.80.1-beta-SNAPSHOT + 0.81.0-beta com.google.api.grpc proto-google-cloud-asset-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-asset-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-automl - 0.80.1-beta-SNAPSHOT + 0.81.0-beta com.google.api.grpc proto-google-cloud-automl-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-automl-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-bigtable - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha com.google.api.grpc proto-google-cloud-bigtable-v2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-bigtable-v2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-bigtable-admin - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha com.google.api.grpc proto-google-cloud-bigtable-admin-v2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-bigtable-admin-v2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-bigtable-emulator - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha com.google.cloud google-cloud-bigquery - 1.62.1-SNAPSHOT + 1.63.0 com.google.cloud google-cloud-bigquerydatatransfer - 0.80.1-beta-SNAPSHOT + 0.81.0-beta com.google.api.grpc proto-google-cloud-bigquerydatatransfer-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-bigquerydatatransfer-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-bigquerystorage-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-bigquerystorage-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-compute - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha com.google.cloud google-cloud-container - 0.80.1-beta-SNAPSHOT + 0.81.0-beta com.google.api.grpc proto-google-cloud-container-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-container-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-containeranalysis - 0.80.1-beta-SNAPSHOT + 0.81.0-beta com.google.api.grpc proto-google-cloud-containeranalysis-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-containeranalysis-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-contrib - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha com.google.cloud google-cloud-nio - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha com.google.cloud google-cloud-core - 1.62.1-SNAPSHOT + 1.63.0 com.google.cloud google-cloud-core-grpc - 1.62.1-SNAPSHOT + 1.63.0 com.google.cloud google-cloud-core-http - 1.62.1-SNAPSHOT + 1.63.0 com.google.cloud google-cloud-dataproc - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha com.google.api.grpc proto-google-cloud-dataproc-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-dataproc-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-dataproc-v1beta2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-dataproc-v1beta2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-datastore - 1.62.1-SNAPSHOT + 1.63.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-dlp - 0.80.1-beta-SNAPSHOT + 0.81.0-beta com.google.api.grpc proto-google-cloud-dlp-v2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-dlp-v2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-dialogflow - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha com.google.api.grpc proto-google-cloud-dialogflow-v2beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-dialogflow-v2beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-dialogflow-v2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-dialogflow-v2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-dns - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha com.google.cloud google-cloud-errorreporting - 0.80.1-beta-SNAPSHOT + 0.81.0-beta com.google.api.grpc proto-google-cloud-error-reporting-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-error-reporting-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-firestore - 0.80.1-beta-SNAPSHOT + 0.81.0-beta com.google.api.grpc proto-google-cloud-firestore-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-firestore-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-firestore-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-firestore-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-kms - 0.80.1-beta-SNAPSHOT + 0.81.0-beta com.google.api.grpc proto-google-cloud-kms-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-kms-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-language - 1.62.1-SNAPSHOT + 1.63.0 com.google.api.grpc proto-google-cloud-language-v1 - 1.44.1-SNAPSHOT + 1.45.0 com.google.api.grpc grpc-google-cloud-language-v1 - 1.44.1-SNAPSHOT + 1.45.0 com.google.api.grpc proto-google-cloud-language-v1beta2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-language-v1beta2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-logging - 1.62.1-SNAPSHOT + 1.63.0 com.google.api.grpc proto-google-cloud-logging-v2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-logging-v2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-logging-logback - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha com.google.cloud google-cloud-monitoring - 1.62.1-SNAPSHOT + 1.63.0 com.google.api.grpc proto-google-cloud-monitoring-v3 - 1.44.1-SNAPSHOT + 1.45.0 com.google.api.grpc grpc-google-cloud-monitoring-v3 - 1.44.1-SNAPSHOT + 1.45.0 com.google.cloud google-cloud-os-login - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha com.google.api.grpc proto-google-cloud-os-login-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-os-login-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-pubsub - 1.62.1-SNAPSHOT + 1.63.0 com.google.api.grpc proto-google-cloud-pubsub-v1 - 1.44.1-SNAPSHOT + 1.45.0 com.google.api.grpc grpc-google-cloud-pubsub-v1 - 1.44.1-SNAPSHOT + 1.45.0 com.google.cloud google-cloud-redis - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha com.google.api.grpc proto-google-cloud-redis-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-redis-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-redis-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-redis-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-resourcemanager - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha com.google.api.grpc proto-google-cloud-scheduler-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-scheduler-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-securitycenter-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-securitycenter-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-spanner - 1.7.1-SNAPSHOT + 1.8.0 com.google.api.grpc proto-google-cloud-spanner-v1 - 1.7.1-SNAPSHOT + 1.8.0 com.google.api.grpc grpc-google-cloud-spanner-v1 - 1.7.1-SNAPSHOT + 1.8.0 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 1.7.1-SNAPSHOT + 1.8.0 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 1.7.1-SNAPSHOT + 1.8.0 com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 1.7.1-SNAPSHOT + 1.8.0 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 1.7.1-SNAPSHOT + 1.8.0 com.google.cloud google-cloud-speech - 0.80.1-beta-SNAPSHOT + 0.81.0-beta com.google.api.grpc proto-google-cloud-speech-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-speech-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-speech-v1p1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-speech-v1p1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-speech-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-speech-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-storage - 1.62.1-SNAPSHOT + 1.63.0 com.google.cloud google-cloud-tasks - 0.80.1-beta-SNAPSHOT + 0.81.0-beta com.google.api.grpc proto-google-cloud-tasks-v2beta2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-tasks-v2beta2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-tasks-v2beta3 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-tasks-v2beta3 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-texttospeech - 0.80.1-beta-SNAPSHOT + 0.81.0-beta com.google.api.grpc proto-google-cloud-texttospeech-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-texttospeech-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-texttospeech-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-texttospeech-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-trace - 0.80.1-beta-SNAPSHOT + 0.81.0-beta com.google.api.grpc proto-google-cloud-trace-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-trace-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-trace-v2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-trace-v2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-translate - 1.62.1-SNAPSHOT + 1.63.0 com.google.cloud google-cloud-vision - 1.62.1-SNAPSHOT + 1.63.0 com.google.api.grpc proto-google-cloud-vision-v1 - 1.44.1-SNAPSHOT + 1.45.0 com.google.api.grpc grpc-google-cloud-vision-v1 - 1.44.1-SNAPSHOT + 1.45.0 com.google.api.grpc proto-google-cloud-vision-v1p1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-vision-v1p1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-vision-v1p2beta1 - 1.44.1-SNAPSHOT + 1.45.0 com.google.api.grpc grpc-google-cloud-vision-v1p2beta1 - 1.44.1-SNAPSHOT + 1.45.0 com.google.api.grpc proto-google-cloud-vision-v1p3beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-vision-v1p3beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.cloud google-cloud-video-intelligence - 0.80.1-beta-SNAPSHOT + 0.81.0-beta com.google.api.grpc proto-google-cloud-video-intelligence-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-video-intelligence-v1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-video-intelligence-v1beta2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-video-intelligence-v1beta2 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-video-intelligence-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-video-intelligence-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-video-intelligence-v1p1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-video-intelligence-v1p1beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-video-intelligence-v1p2beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-video-intelligence-v1p2beta1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-iot-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-iot-v1 - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-websecurityscanner-v1alpha - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc grpc-google-cloud-websecurityscanner-v1alpha - 0.45.1-SNAPSHOT + 0.46.0 com.google.api.grpc proto-google-cloud-iamcredentials-v1 - 0.7.1-alpha-SNAPSHOT + 0.8.0-alpha com.google.api.grpc grpc-google-cloud-iamcredentials-v1 - 0.7.1-alpha-SNAPSHOT + 0.8.0-alpha com.google.cloud google-cloud-iamcredentials - 0.7.1-alpha-SNAPSHOT + 0.8.0-alpha diff --git a/google-cloud-clients/google-cloud-asset/README.md b/google-cloud-clients/google-cloud-asset/README.md index 0bacc68ec246..4ced131a435c 100644 --- a/google-cloud-clients/google-cloud-asset/README.md +++ b/google-cloud-clients/google-cloud-asset/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-asset - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-asset:0.80.0-beta' +compile 'com.google.cloud:google-cloud-asset:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-asset" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-asset" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-asset/pom.xml b/google-cloud-clients/google-cloud-asset/pom.xml index 2b51d4792b1c..4e3d352eb9e8 100644 --- a/google-cloud-clients/google-cloud-asset/pom.xml +++ b/google-cloud-clients/google-cloud-asset/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-asset - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud Asset https://github.com/GoogleCloudPlatform/google-cloud-java/tree/master/google-cloud-clients/google-cloud-asset @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-asset diff --git a/google-cloud-clients/google-cloud-automl/README.md b/google-cloud-clients/google-cloud-automl/README.md index a51fc1bc562f..dec02ee99bb0 100644 --- a/google-cloud-clients/google-cloud-automl/README.md +++ b/google-cloud-clients/google-cloud-automl/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-automl - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-automl:0.80.0-beta' +compile 'com.google.cloud:google-cloud-automl:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-automl" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-automl" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-automl/pom.xml b/google-cloud-clients/google-cloud-automl/pom.xml index dcf380ab49f2..97b8bbe03096 100644 --- a/google-cloud-clients/google-cloud-automl/pom.xml +++ b/google-cloud-clients/google-cloud-automl/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-automl - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud Auto ML https://github.com/GoogleCloudPlatform/google-cloud-java/tree/master/google-cloud-clients/google-cloud-automl @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-automl diff --git a/google-cloud-clients/google-cloud-bigquery/README.md b/google-cloud-clients/google-cloud-bigquery/README.md index e54e796fd8b3..80e0cf7b51ca 100644 --- a/google-cloud-clients/google-cloud-bigquery/README.md +++ b/google-cloud-clients/google-cloud-bigquery/README.md @@ -18,16 +18,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-bigquery - 1.62.0 + 1.63.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-bigquery:1.62.0' +compile 'com.google.cloud:google-cloud-bigquery:1.63.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-bigquery" % "1.62.0" +libraryDependencies += "com.google.cloud" % "google-cloud-bigquery" % "1.63.0" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-bigquery/pom.xml b/google-cloud-clients/google-cloud-bigquery/pom.xml index a8f7fa952248..cfa564dab90e 100644 --- a/google-cloud-clients/google-cloud-bigquery/pom.xml +++ b/google-cloud-clients/google-cloud-bigquery/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-bigquery - 1.62.1-SNAPSHOT + 1.63.0 jar Google Cloud BigQuery https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-bigquery @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-bigquery diff --git a/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/Field.java b/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/Field.java index ba0e45e5f358..ffc8b3779aa6 100644 --- a/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/Field.java +++ b/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/Field.java @@ -112,6 +112,24 @@ public Builder setType(LegacySQLTypeName type, Field... subFields) { return setType(type, subFields.length > 0 ? FieldList.of(subFields) : null); } + /** + * Sets the type of the field. + * + * @param type BigQuery data type + * @param subFields nested schema fields in case if {@code type} is {@link + * StandardSQLTypeName#STRUCT}, empty otherwise + * @throws IllegalArgumentException if {@code type == StandardSQLTypeName.STRUCT && + * subFields.length == 0} or if {@code type != StandardSQLTypeName.STRUCT && + * subFields.length != 0} + * @see Data + * Types + */ + public Builder setType(StandardSQLTypeName type, Field... subFields) { + return setType( + LegacySQLTypeName.legacySQLTypeName(type), + subFields.length > 0 ? FieldList.of(subFields) : null); + } + /** * Sets the type of the field. * @@ -142,6 +160,22 @@ public Builder setType(LegacySQLTypeName type, FieldList subFields) { return this; } + /** + * Sets the type of the field. + * + * @param type BigQuery data type + * @param subFields nested schema fields in case if {@code type} is {@link + * StandardSQLTypeName#STRUCT}, empty otherwise + * @throws IllegalArgumentException if {@code type == StandardSQLTypeName.STRUCT && + * subFields.length == 0} or if {@code type != StandardSQLTypeName.STRUCT && + * subFields.length != 0} + * @see Data + * Types + */ + public Builder setType(StandardSQLTypeName type, FieldList subFields) { + return setType(LegacySQLTypeName.legacySQLTypeName(type), subFields); + } + /** Sets the mode of the field. When not specified {@link Mode#NULLABLE} is used. */ public Builder setMode(Mode mode) { this.mode = mode != null ? mode.name() : Data.nullOf(String.class); @@ -241,11 +275,21 @@ public static Builder newBuilder(String name, LegacySQLTypeName type, Field... s return new Builder().setName(name).setType(type, subFields); } + /** Returns a builder for a Field object with given name and type. */ + public static Builder newBuilder(String name, StandardSQLTypeName type, Field... subFields) { + return new Builder().setName(name).setType(type, subFields); + } + /** Returns a builder for a Field object with given name and type. */ public static Builder newBuilder(String name, LegacySQLTypeName type, FieldList subFields) { return new Builder().setName(name).setType(type, subFields); } + /** Returns a builder for a Field object with given name and type. */ + public static Builder newBuilder(String name, StandardSQLTypeName type, FieldList subFields) { + return new Builder().setName(name).setType(type, subFields); + } + TableFieldSchema toPb() { TableFieldSchema fieldSchemaPb = new TableFieldSchema(); fieldSchemaPb.setName(name); diff --git a/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/LegacySQLTypeName.java b/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/LegacySQLTypeName.java index 9c9b12ac8529..035ae8ed9cb0 100644 --- a/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/LegacySQLTypeName.java +++ b/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/LegacySQLTypeName.java @@ -19,6 +19,8 @@ import com.google.api.core.ApiFunction; import com.google.cloud.StringEnumType; import com.google.cloud.StringEnumValue; +import java.util.HashMap; +import java.util.Map; /** * A type used in legacy SQL contexts. NOTE: some contexts use a mix of types; for example, for @@ -84,6 +86,14 @@ public LegacySQLTypeName apply(String constant) { public static final LegacySQLTypeName RECORD = type.createAndRegister("RECORD").setStandardType(StandardSQLTypeName.STRUCT); + private static Map standardToLegacyMap = new HashMap<>(); + + static { + for (LegacySQLTypeName legacySqlTypeName : LegacySQLTypeName.values()) { + standardToLegacyMap.put(legacySqlTypeName.equivalent, legacySqlTypeName); + } + } + private StandardSQLTypeName equivalent; private LegacySQLTypeName setStandardType(StandardSQLTypeName equivalent) { @@ -96,6 +106,11 @@ public StandardSQLTypeName getStandardType() { return equivalent; } + /** Converts StandardSQLTypeName to LegacySQLTypeName */ + public static LegacySQLTypeName legacySQLTypeName(StandardSQLTypeName type) { + return standardToLegacyMap.get(type); + } + private LegacySQLTypeName(String constant) { super(constant); } diff --git a/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/QueryParameterValue.java b/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/QueryParameterValue.java index 5bf6b4e9f93a..f137f7ab53c1 100644 --- a/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/QueryParameterValue.java +++ b/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/QueryParameterValue.java @@ -16,6 +16,11 @@ package com.google.cloud.bigquery; +import static org.threeten.bp.temporal.ChronoField.HOUR_OF_DAY; +import static org.threeten.bp.temporal.ChronoField.MINUTE_OF_HOUR; +import static org.threeten.bp.temporal.ChronoField.NANO_OF_SECOND; +import static org.threeten.bp.temporal.ChronoField.SECOND_OF_MINUTE; + import com.google.api.services.bigquery.model.QueryParameterType; import com.google.auto.value.AutoValue; import com.google.common.base.Function; @@ -25,11 +30,13 @@ import java.io.Serializable; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Date; import java.util.List; import javax.annotation.Nullable; import org.threeten.bp.Instant; import org.threeten.bp.ZoneOffset; import org.threeten.bp.format.DateTimeFormatter; +import org.threeten.bp.format.DateTimeFormatterBuilder; import org.threeten.bp.format.DateTimeParseException; /** @@ -61,7 +68,32 @@ public abstract class QueryParameterValue implements Serializable { private static final DateTimeFormatter timestampFormatter = - DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSxxx").withZone(ZoneOffset.UTC); + new DateTimeFormatterBuilder() + .parseLenient() + .append(DateTimeFormatter.ISO_LOCAL_DATE) + .appendLiteral(' ') + .appendValue(HOUR_OF_DAY, 2) + .appendLiteral(':') + .appendValue(MINUTE_OF_HOUR, 2) + .optionalStart() + .appendLiteral(':') + .appendValue(SECOND_OF_MINUTE, 2) + .optionalStart() + .appendFraction(NANO_OF_SECOND, 6, 9, true) + .optionalStart() + .appendOffset("+HHMM", "+00:00") + .optionalEnd() + .toFormatter() + .withZone(ZoneOffset.UTC); + private static final DateTimeFormatter timestampValidator = + new DateTimeFormatterBuilder() + .parseLenient() + .append(timestampFormatter) + .optionalStart() + .appendOffsetId() + .optionalEnd() + .toFormatter() + .withZone(ZoneOffset.UTC); private static final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); private static final DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss.SSSSSS"); @@ -256,6 +288,8 @@ private static StandardSQLTypeName classToType(Class type) { return StandardSQLTypeName.FLOAT64; } else if (BigDecimal.class.isAssignableFrom(type)) { return StandardSQLTypeName.NUMERIC; + } else if (Date.class.isAssignableFrom(type)) { + return StandardSQLTypeName.DATE; } throw new IllegalArgumentException("Unsupported object type for QueryParameter: " + type); } @@ -301,7 +335,7 @@ private static String valueToStringOrNull(T value, StandardSQLTypeName type) return timestampFormatter.format(Instant.ofEpochMilli(((Long) value) / 1000)); } else if (value instanceof String) { // verify that the String is in the right format - checkFormat(value, timestampFormatter); + checkFormat(value, timestampValidator); return (String) value; } break; @@ -310,6 +344,9 @@ private static String valueToStringOrNull(T value, StandardSQLTypeName type) // verify that the String is in the right format checkFormat(value, dateFormatter); return (String) value; + } else if (value instanceof Date) { + com.google.cloud.Date date = com.google.cloud.Date.fromJavaUtilDate((Date) value); + return date.toString(); } break; case TIME: @@ -335,6 +372,7 @@ private static String valueToStringOrNull(T value, StandardSQLTypeName type) private static void checkFormat(Object value, DateTimeFormatter formatter) { try { + formatter.parse((String) value); } catch (DateTimeParseException e) { throw new IllegalArgumentException(e.getMessage(), e); diff --git a/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/FieldTest.java b/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/FieldTest.java index 4ba5ad0929a0..14900cc5d423 100644 --- a/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/FieldTest.java +++ b/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/FieldTest.java @@ -54,6 +54,25 @@ public class FieldTest { .setMode(FIELD_MODE3) .setDescription(FIELD_DESCRIPTION3) .build(); + private static final Field STANDARD_FIELD_SCHEMA1 = + Field.newBuilder(FIELD_NAME1, StandardSQLTypeName.STRING) + .setMode(FIELD_MODE1) + .setDescription(FIELD_DESCRIPTION1) + .build(); + private static final Field STANDARD_FIELD_SCHEMA2 = + Field.newBuilder(FIELD_NAME2, StandardSQLTypeName.INT64) + .setMode(FIELD_MODE2) + .setDescription(FIELD_DESCRIPTION2) + .build(); + private static final Field STANDARD_FIELD_SCHEMA3 = + Field.newBuilder( + FIELD_NAME3, + StandardSQLTypeName.STRUCT, + STANDARD_FIELD_SCHEMA1, + STANDARD_FIELD_SCHEMA2) + .setMode(FIELD_MODE3) + .setDescription(FIELD_DESCRIPTION3) + .build(); @Test public void testToBuilder() { @@ -66,6 +85,17 @@ public void testToBuilder() { compareFieldSchemas(FIELD_SCHEMA1, field); } + @Test + public void testToBuilderWithStandardSQLTypeName() { + compareFieldSchemas(STANDARD_FIELD_SCHEMA1, STANDARD_FIELD_SCHEMA1.toBuilder().build()); + compareFieldSchemas(STANDARD_FIELD_SCHEMA2, STANDARD_FIELD_SCHEMA2.toBuilder().build()); + compareFieldSchemas(STANDARD_FIELD_SCHEMA3, STANDARD_FIELD_SCHEMA3.toBuilder().build()); + Field field = STANDARD_FIELD_SCHEMA1.toBuilder().setDescription("New Description").build(); + assertEquals("New Description", field.getDescription()); + field = field.toBuilder().setDescription(FIELD_DESCRIPTION1).build(); + compareFieldSchemas(STANDARD_FIELD_SCHEMA1, field); + } + @Test public void testToBuilderIncomplete() { Field field = Field.of(FIELD_NAME1, FIELD_TYPE1); @@ -74,6 +104,14 @@ public void testToBuilderIncomplete() { compareFieldSchemas(field, field.toBuilder().build()); } + @Test + public void testToBuilderIncompleteWithStandardSQLTypeName() { + Field field = Field.of(FIELD_NAME1, FIELD_TYPE1); + compareFieldSchemas(field, field.toBuilder().build()); + field = Field.of(FIELD_NAME2, FIELD_TYPE3, STANDARD_FIELD_SCHEMA1, STANDARD_FIELD_SCHEMA2); + compareFieldSchemas(field, field.toBuilder().build()); + } + @Test public void testBuilder() { assertEquals(FIELD_NAME1, FIELD_SCHEMA1.getName()); @@ -88,6 +126,22 @@ public void testBuilder() { assertEquals(FieldList.of(FIELD_SCHEMA1, FIELD_SCHEMA2), FIELD_SCHEMA3.getSubFields()); } + @Test + public void testBuilderWithStandardSQLTypeName() { + assertEquals(FIELD_NAME1, STANDARD_FIELD_SCHEMA1.getName()); + assertEquals(FIELD_TYPE1, STANDARD_FIELD_SCHEMA1.getType()); + assertEquals(FIELD_MODE1, STANDARD_FIELD_SCHEMA1.getMode()); + assertEquals(FIELD_DESCRIPTION1, STANDARD_FIELD_SCHEMA1.getDescription()); + assertEquals(null, STANDARD_FIELD_SCHEMA1.getSubFields()); + assertEquals(FIELD_NAME3, STANDARD_FIELD_SCHEMA3.getName()); + assertEquals(FIELD_TYPE3, STANDARD_FIELD_SCHEMA3.getType()); + assertEquals(FIELD_MODE3, STANDARD_FIELD_SCHEMA3.getMode()); + assertEquals(FIELD_DESCRIPTION3, STANDARD_FIELD_SCHEMA3.getDescription()); + assertEquals( + FieldList.of(STANDARD_FIELD_SCHEMA1, STANDARD_FIELD_SCHEMA2), + STANDARD_FIELD_SCHEMA3.getSubFields()); + } + @Test public void testToAndFromPb() { compareFieldSchemas(FIELD_SCHEMA1, Field.fromPb(FIELD_SCHEMA1.toPb())); @@ -97,6 +151,15 @@ public void testToAndFromPb() { compareFieldSchemas(field, Field.fromPb(field.toPb())); } + @Test + public void testToAndFromPbWithStandardSQLTypeName() { + compareFieldSchemas(STANDARD_FIELD_SCHEMA1, Field.fromPb(STANDARD_FIELD_SCHEMA1.toPb())); + compareFieldSchemas(STANDARD_FIELD_SCHEMA2, Field.fromPb(STANDARD_FIELD_SCHEMA2.toPb())); + compareFieldSchemas(STANDARD_FIELD_SCHEMA3, Field.fromPb(STANDARD_FIELD_SCHEMA3.toPb())); + Field field = Field.newBuilder(FIELD_NAME1, FIELD_TYPE1).build(); + compareFieldSchemas(field, Field.fromPb(field.toPb())); + } + @Test public void testSubFieldWithClonedType() throws Exception { LegacySQLTypeName record = LegacySQLTypeName.RECORD; diff --git a/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/FieldValueListTest.java b/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/FieldValueListTest.java index 15b72ec67f3d..779fd85a1091 100644 --- a/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/FieldValueListTest.java +++ b/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/FieldValueListTest.java @@ -56,7 +56,7 @@ public class FieldValueListTest { private final Map stringPb = ImmutableMap.of("v", "string"); private final Map timestampPb = ImmutableMap.of("v", "42"); private final Map bytesPb = ImmutableMap.of("v", BYTES_BASE64); - private final Map nullPb = ImmutableMap.of("v", Data.nullOf(String.class)); + private final Map nullPb = ImmutableMap.of("v", Data.nullOf(String.class)); private final Map repeatedPb = ImmutableMap.of("v", ImmutableList.of(integerPb, integerPb)); private final Map recordPb = diff --git a/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/FieldValueTest.java b/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/FieldValueTest.java index d8071746f1df..9ba408f218c1 100644 --- a/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/FieldValueTest.java +++ b/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/FieldValueTest.java @@ -42,7 +42,7 @@ public class FieldValueTest { private static final Map STRING_FIELD = ImmutableMap.of("v", "string"); private static final Map TIMESTAMP_FIELD = ImmutableMap.of("v", "42"); private static final Map BYTES_FIELD = ImmutableMap.of("v", BYTES_BASE64); - private static final Map NULL_FIELD = + private static final Map NULL_FIELD = ImmutableMap.of("v", Data.nullOf(String.class)); private static final Map REPEATED_FIELD = ImmutableMap.of("v", ImmutableList.of(INTEGER_FIELD, INTEGER_FIELD)); diff --git a/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/QueryParameterValueTest.java b/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/QueryParameterValueTest.java index 485b81e5e497..44b7d8138a52 100644 --- a/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/QueryParameterValueTest.java +++ b/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/QueryParameterValueTest.java @@ -20,6 +20,8 @@ import com.google.api.services.bigquery.model.QueryParameterType; import java.math.BigDecimal; +import java.text.ParseException; +import java.util.Date; import java.util.List; import org.junit.Test; @@ -189,6 +191,25 @@ public void testTimestamp() { assertThat(value.getArrayValues()).isNull(); } + @Test + public void testTimestampWithDateTimeFormatterBuilder() { + QueryParameterValue value = QueryParameterValue.timestamp("2019-02-14 12:34:45.938993Z"); + assertThat(value.getValue()).isEqualTo("2019-02-14 12:34:45.938993Z"); + assertThat(value.getType()).isEqualTo(StandardSQLTypeName.TIMESTAMP); + assertThat(value.getArrayType()).isNull(); + assertThat(value.getArrayValues()).isNull(); + QueryParameterValue value1 = QueryParameterValue.timestamp("2019-02-14 12:34:45.938993+0000"); + assertThat(value1.getValue()).isEqualTo("2019-02-14 12:34:45.938993+0000"); + assertThat(value1.getType()).isEqualTo(StandardSQLTypeName.TIMESTAMP); + assertThat(value1.getArrayType()).isNull(); + assertThat(value1.getArrayValues()).isNull(); + QueryParameterValue value2 = QueryParameterValue.timestamp("2019-02-14 12:34:45.102+00:00"); + assertThat(value2.getValue()).isEqualTo("2019-02-14 12:34:45.102+00:00"); + assertThat(value2.getType()).isEqualTo(StandardSQLTypeName.TIMESTAMP); + assertThat(value2.getArrayType()).isNull(); + assertThat(value2.getArrayValues()).isNull(); + } + @Test(expected = IllegalArgumentException.class) public void testInvalidTimestamp() { // missing the time @@ -204,6 +225,17 @@ public void testDate() { assertThat(value.getArrayValues()).isNull(); } + @Test + public void testStandardDate() throws ParseException { + com.google.cloud.Date gcDate = com.google.cloud.Date.parseDate("2016-09-18"); + Date date = com.google.cloud.Date.toJavaUtilDate(gcDate); + QueryParameterValue value = QueryParameterValue.of(date, Date.class); + assertThat(value.getValue()).isEqualTo("2016-09-18"); + assertThat(value.getType()).isEqualTo(StandardSQLTypeName.DATE); + assertThat(value.getArrayType()).isNull(); + assertThat(value.getArrayValues()).isNull(); + } + @Test(expected = IllegalArgumentException.class) public void testInvalidDate() { // not supposed to have the time @@ -269,6 +301,29 @@ public void testTimestampArray() { value.getArrayValues()); } + @Test + public void testTimestampArrayWithDateTimeFormatterBuilder() { + QueryParameterValue value = + QueryParameterValue.array( + new String[] { + "2019-02-14 12:34:45.938993Z", + "2019-02-14 12:34:45.938993+0000", + "2019-02-14 12:34:45.102+00:00" + }, + StandardSQLTypeName.TIMESTAMP); + assertThat(value.getValue()).isNull(); + assertThat(value.getType()).isEqualTo(StandardSQLTypeName.ARRAY); + assertThat(value.getArrayType()).isEqualTo(StandardSQLTypeName.TIMESTAMP); + assertArrayDataEquals( + new String[] { + "2019-02-14 12:34:45.938993Z", + "2019-02-14 12:34:45.938993+0000", + "2019-02-14 12:34:45.102+00:00" + }, + StandardSQLTypeName.TIMESTAMP, + value.getArrayValues()); + } + @Test public void testFromEmptyArray() { QueryParameterType typePb = diff --git a/google-cloud-clients/google-cloud-bigquerydatatransfer/README.md b/google-cloud-clients/google-cloud-bigquerydatatransfer/README.md index 956fe650e533..805df291889f 100644 --- a/google-cloud-clients/google-cloud-bigquerydatatransfer/README.md +++ b/google-cloud-clients/google-cloud-bigquerydatatransfer/README.md @@ -23,16 +23,16 @@ Add this to your pom.xml file com.google.cloud google-cloud-bigquerydatatransfer - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-bigquerydatatransfer:0.80.0-beta' +compile 'com.google.cloud:google-cloud-bigquerydatatransfer:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-bigquerydatatransfer" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-bigquerydatatransfer" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-bigquerydatatransfer/pom.xml b/google-cloud-clients/google-cloud-bigquerydatatransfer/pom.xml index d955ecb6baf1..dea9fb93ab85 100644 --- a/google-cloud-clients/google-cloud-bigquerydatatransfer/pom.xml +++ b/google-cloud-clients/google-cloud-bigquerydatatransfer/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-bigquerydatatransfer - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud Bigquery Data Transfer https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-bigquerydatatransfer @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-bigquerydatatransfer diff --git a/google-cloud-clients/google-cloud-bigquerystorage/README.md b/google-cloud-clients/google-cloud-bigquerystorage/README.md index 8ce1ee77eb65..43b787327fbb 100644 --- a/google-cloud-clients/google-cloud-bigquerystorage/README.md +++ b/google-cloud-clients/google-cloud-bigquerystorage/README.md @@ -20,16 +20,16 @@ Add this to your pom.xml file com.google.cloud google-cloud-bigquerystorage - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-bigquerystorage:0.80.0-beta' +compile 'com.google.cloud:google-cloud-bigquerystorage:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-bigquerystorage" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-bigquerystorage" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-bigquerystorage/pom.xml b/google-cloud-clients/google-cloud-bigquerystorage/pom.xml index 0a9aef12f1af..a84e25c1550c 100644 --- a/google-cloud-clients/google-cloud-bigquerystorage/pom.xml +++ b/google-cloud-clients/google-cloud-bigquerystorage/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-bigquerystorage - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud Bigquery Storage https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-bigquerystorage @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-bigquerystorage diff --git a/google-cloud-clients/google-cloud-bigtable-admin/pom.xml b/google-cloud-clients/google-cloud-bigtable-admin/pom.xml index 2a073543bf73..3bcfed59663e 100644 --- a/google-cloud-clients/google-cloud-bigtable-admin/pom.xml +++ b/google-cloud-clients/google-cloud-bigtable-admin/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-bigtable-admin - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud Bigtable Admin https://github.com/GoogleCloudPlatform/google-cloud-java/tree/master/google-cloud-bigtable @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha diff --git a/google-cloud-clients/google-cloud-bigtable/README.md b/google-cloud-clients/google-cloud-bigtable/README.md index 616956fff593..9d3c5e768e58 100644 --- a/google-cloud-clients/google-cloud-bigtable/README.md +++ b/google-cloud-clients/google-cloud-bigtable/README.md @@ -21,16 +21,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-bigtable - 0.80.0-alpha + 0.81.0-alpha ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-bigtable:0.80.0-alpha' +compile 'com.google.cloud:google-cloud-bigtable:0.81.0-alpha' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-bigtable" % "0.80.0-alpha" +libraryDependencies += "com.google.cloud" % "google-cloud-bigtable" % "0.81.0-alpha" ``` [//]: # ({x-version-update-end}) @@ -72,7 +72,6 @@ at the top of your file: ```java import com.google.cloud.bigtable.data.v2.BigtableDataClient; -import com.google.cloud.bigtable.data.v2.models.InstanceName; import com.google.cloud.bigtable.data.v2.models.Query; import com.google.cloud.bigtable.data.v2.models.Row; @@ -163,6 +162,7 @@ codebase. Apache 2.0 - See [LICENSE] for more information. [CONTRIBUTING]:https://github.com/googleapis/google-cloud-java/blob/master/CONTRIBUTING.md +[DEVELOPING]:DEVELOPING.md [LICENSE]: https://github.com/googleapis/google-cloud-java/blob/master/LICENSE [cloud-platform]: https://cloud.google.com/ [cloud-bigtable]: https://cloud.google.com/bigtable/ diff --git a/google-cloud-clients/google-cloud-bigtable/pom.xml b/google-cloud-clients/google-cloud-bigtable/pom.xml index 48c63c45a23f..34dd6afca969 100644 --- a/google-cloud-clients/google-cloud-bigtable/pom.xml +++ b/google-cloud-clients/google-cloud-bigtable/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-bigtable - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud Bigtable https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-bigtable @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-bigtable diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminSettings.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminSettings.java index e92ff7333289..5fb0d294488d 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminSettings.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminSettings.java @@ -15,7 +15,7 @@ */ package com.google.cloud.bigtable.admin.v2; -import com.google.bigtable.admin.v2.ProjectName; +import com.google.api.gax.core.CredentialsProvider; import com.google.cloud.bigtable.admin.v2.stub.BigtableInstanceAdminStubSettings; import com.google.common.base.Preconditions; import com.google.common.base.Verify; @@ -61,15 +61,9 @@ public String getProjectId() { return projectId; } - /** - * Gets the name of the project whose instances the client will manager. - * - * @deprecated Please use {@link #getProjectId()}. - */ - @Deprecated - @Nonnull - public com.google.bigtable.admin.v2.ProjectName getProjectName() { - return ProjectName.of(projectId); + /** Gets the CredentialsProvider to use for getting the credentials to make calls with. */ + public CredentialsProvider getCredentialsProvider() { + return stubSettings.getCredentialsProvider(); } /** Gets the underlying RPC settings. */ @@ -115,28 +109,16 @@ public String getProjectId() { return projectId; } - /** - * Sets the name of instance whose tables the client will manage. - * - * @deprecated Please use {@link #setProjectId(String)}. - */ - @Deprecated - public Builder setProjectName(@Nonnull com.google.bigtable.admin.v2.ProjectName projectName) { - return setProjectId(projectName.getProject()); + /** Sets the CredentialsProvider to use for getting the credentials to make calls with. */ + public Builder setCredentialsProvider(CredentialsProvider credentialsProvider) { + stubSettings.setCredentialsProvider(credentialsProvider); + + return this; } - /** - * Gets the name of the project whose instances the client will manage. - * - * @deprecated Please use {@link #getProjectId()}. - */ - @Deprecated - @Nullable - public ProjectName getProjectName() { - if (projectId != null) { - return ProjectName.of(projectId); - } - return null; + /** Gets the CredentialsProvider to use for getting the credentials to make calls with. */ + public CredentialsProvider getCredentialsProvider() { + return stubSettings.getCredentialsProvider(); } /** diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminSettings.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminSettings.java index f613bf3f7369..a336a3c5d41a 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminSettings.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminSettings.java @@ -15,11 +15,15 @@ */ package com.google.cloud.bigtable.admin.v2; +import com.google.api.core.ApiFunction; +import com.google.api.gax.core.CredentialsProvider; +import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; import com.google.cloud.bigtable.admin.v2.stub.BigtableTableAdminStubSettings; import com.google.common.base.Preconditions; import com.google.common.base.Verify; +import io.grpc.ManagedChannelBuilder; import java.io.IOException; -import javax.annotation.Nonnull; import javax.annotation.Nullable; /** @@ -65,15 +69,9 @@ public String getInstanceId() { return instanceId; } - /** - * Gets the name of instance whose tables the client will manage. - * - * @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. - */ - @Deprecated - @Nonnull - public com.google.bigtable.admin.v2.InstanceName getInstanceName() { - return com.google.bigtable.admin.v2.InstanceName.of(projectId, instanceId); + /** Gets the CredentialsProvider to use for getting the credentials to make calls with. */ + public CredentialsProvider getCredentialsProvider() { + return stubSettings.getCredentialsProvider(); } /** Gets the underlying RPC settings. */ @@ -91,6 +89,29 @@ public static Builder newBuilder() { return new Builder(); } + /** Create a new builder preconfigured to connect to the Bigtable emulator. */ + public static Builder newBuilderForEmulator(int port) { + Builder builder = newBuilder().setProjectId("fake-project").setInstanceId("fake-instance"); + + builder + .stubSettings() + .setCredentialsProvider(NoCredentialsProvider.create()) + .setEndpoint("localhost:" + port) + .setTransportChannelProvider( + InstantiatingGrpcChannelProvider.newBuilder() + .setPoolSize(1) + .setChannelConfigurator( + new ApiFunction() { + @Override + public ManagedChannelBuilder apply(ManagedChannelBuilder input) { + return input.usePlaintext(); + } + }) + .build()); + + return builder; + } + /** Builder for BigtableTableAdminSettings. */ public static final class Builder { @Nullable private String projectId; @@ -133,32 +154,15 @@ public String getInstanceId() { return instanceId; } - /** - * Sets the name of instance whose tables the client will manage. - * - * @deprecated Please use {@link #setProjectId(String)} and {@link #setInstanceId(String)}. - */ - @Deprecated - public Builder setInstanceName( - @Nonnull com.google.bigtable.admin.v2.InstanceName instanceName) { - Preconditions.checkNotNull(instanceName); - this.projectId = instanceName.getProject(); - this.instanceId = instanceName.getInstance(); + /** Sets the CredentialsProvider to use for getting the credentials to make calls with. */ + public Builder setCredentialsProvider(CredentialsProvider credentialsProvider) { + stubSettings.setCredentialsProvider(credentialsProvider); return this; } - /** - * Gets the name of instance whose tables the client will manage. - * - * @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. - */ - @Deprecated - @Nullable - public com.google.bigtable.admin.v2.InstanceName getInstanceName() { - if (projectId != null && instanceId != null) { - return com.google.bigtable.admin.v2.InstanceName.of(projectId, instanceId); - } - return null; + /** Gets the CredentialsProvider to use for getting the credentials to make calls with. */ + public CredentialsProvider getCredentialsProvider() { + return stubSettings.getCredentialsProvider(); } /** diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java index aa1084b6ff1a..304a386930d8 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataClient.java @@ -126,28 +126,12 @@ public static BigtableDataClient create(String projectId, String instanceId) thr return create(settings); } - /** - * Constructs an instance of BigtableDataClient with default settings. - * - * @param instanceName The instance to connect to. - * @return A new client. - * @throws IOException If any. - * @deprecated Please use {@link #create(String, String)}. - */ - @Deprecated - public static BigtableDataClient create( - com.google.cloud.bigtable.data.v2.models.InstanceName instanceName) throws IOException { - BigtableDataSettings settings = - BigtableDataSettings.newBuilder().setInstanceName(instanceName).build(); - return create(settings); - } - /** * Constructs an instance of BigtableDataClient, using the given settings. The channels are * created based on the settings passed in, or defaults for any settings that are not set. */ public static BigtableDataClient create(BigtableDataSettings settings) throws IOException { - EnhancedBigtableStub stub = EnhancedBigtableStub.create(settings.getTypedStubSettings()); + EnhancedBigtableStub stub = EnhancedBigtableStub.create(settings.getStubSettings()); return new BigtableDataClient(stub); } @@ -260,8 +244,7 @@ public Row readRow(String tableId, String rowKey, @Nullable Filter filter) { *

Sample code: * *

{@code
-   * InstanceName instanceName = InstanceName.of("[PROJECT]", "[INSTANCE]");
-   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create(instanceName)) {
+   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create("[PROJECT]", "[INSTANCE]")) {
    *   String tableId = "[TABLE]";
    *
    *  // Build the filter expression
@@ -400,8 +383,7 @@ public ApiFuture readRowAsync(String tableId, String rowKey, @Nullable Filt
    * 

Sample code: * *

{@code
-   * InstanceName instanceName = InstanceName.of("[PROJECT]", "[INSTANCE]");
-   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create(instanceName)) {
+   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create("[PROJECT]", "[INSTANCE]")) {
    *   String tableId = "[TABLE]";
    *
    *  // Build the filter expression
@@ -442,8 +424,7 @@ public ApiFuture readRowAsync(String tableId, ByteString rowKey, @Nullable
    * 

Sample code: * *

{@code
-   * InstanceName instanceName = InstanceName.of("[PROJECT]", "[INSTANCE]");
-   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create(instanceName)) {
+   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create("[PROJECT]", "[INSTANCE]")) {
    *   String tableId = "[TABLE]";
    *
    *   Query query = Query.create(tableId)
@@ -495,8 +476,7 @@ public UnaryCallable readRowCallable() {
    * 

Sample code: * *

{@code
-   * InstanceName instanceName = InstanceName.of("[PROJECT]", "[INSTANCE]");
-   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create(instanceName)) {
+   * try (BigtableDataClient bigtableDataClient = BigtableDataClient.create("[PROJECT]", "[INSTANCE]")) {
    *   String tableId = "[TABLE]";
    *
    *   Query query = Query.create(tableId)
diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java
index cf7fd5255c8d..3518f132dd99 100644
--- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java
+++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java
@@ -15,10 +15,18 @@
  */
 package com.google.cloud.bigtable.data.v2;
 
+import com.google.api.core.ApiClock;
+import com.google.api.core.ApiFunction;
+import com.google.api.gax.core.CredentialsProvider;
+import com.google.api.gax.core.ExecutorProvider;
+import com.google.api.gax.core.NoCredentialsProvider;
+import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
 import com.google.api.gax.rpc.BatchingCallSettings;
-import com.google.api.gax.rpc.ClientSettings;
+import com.google.api.gax.rpc.HeaderProvider;
 import com.google.api.gax.rpc.ServerStreamingCallSettings;
+import com.google.api.gax.rpc.TransportChannelProvider;
 import com.google.api.gax.rpc.UnaryCallSettings;
+import com.google.api.gax.rpc.WatchdogProvider;
 import com.google.cloud.bigtable.data.v2.models.ConditionalRowMutation;
 import com.google.cloud.bigtable.data.v2.models.KeyOffset;
 import com.google.cloud.bigtable.data.v2.models.Query;
@@ -26,9 +34,11 @@
 import com.google.cloud.bigtable.data.v2.models.Row;
 import com.google.cloud.bigtable.data.v2.models.RowMutation;
 import com.google.cloud.bigtable.data.v2.stub.EnhancedBigtableStubSettings;
-import java.io.IOException;
+import io.grpc.ManagedChannelBuilder;
 import java.util.List;
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import org.threeten.bp.Duration;
 
 /**
  * Settings class to configure an instance of {@link BigtableDataClient}.
@@ -52,14 +62,17 @@
  *   .setInstanceId("my-instance-id")
  *   .setAppProfileId("default");
  *
- * settingsBuilder.readRowsSettings().setRetryableCodes(Code.DEADLINE_EXCEEDED, Code.UNAVAILABLE);
- *
  * BigtableDataSettings settings = builder.build();
  * }
+ * + *

For fine grained control of individual RPCs, please refer to {@link + * EnhancedBigtableStubSettings}, which is exposed as {@link Builder#stubSettings()}. */ -public class BigtableDataSettings extends ClientSettings { - private BigtableDataSettings(Builder builder) throws IOException { - super(builder); +public final class BigtableDataSettings { + private final EnhancedBigtableStubSettings stubSettings; + + private BigtableDataSettings(Builder builder) { + stubSettings = builder.stubSettings().build(); } /** Create a new builder. */ @@ -67,81 +80,151 @@ public static Builder newBuilder() { return new Builder(); } - /** - * Returns the target instance. - * - * @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. - */ - @Deprecated() - public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { - return getTypedStubSettings().getInstanceName(); + /** Create a new builder preconfigured to connect to the Bigtable emulator. */ + public static Builder newBuilderForEmulator(int port) { + Builder builder = newBuilder(); + + builder + .stubSettings() + .setProjectId("fake-project") + .setInstanceId("fake-instance") + .setCredentialsProvider(NoCredentialsProvider.create()) + .setEndpoint("localhost:" + port) + .setTransportChannelProvider( + InstantiatingGrpcChannelProvider.newBuilder() + .setMaxInboundMessageSize(256 * 1024 * 1024) + .setPoolSize(1) + .setChannelConfigurator( + new ApiFunction() { + @Override + public ManagedChannelBuilder apply(ManagedChannelBuilder input) { + return input.usePlaintext(); + } + }) + .build()); + + return builder; } /** Returns the target project id. */ public String getProjectId() { - return getTypedStubSettings().getProjectId(); + return stubSettings.getProjectId(); } /** Returns the target instance id. */ public String getInstanceId() { - return getTypedStubSettings().getInstanceId(); + return stubSettings.getInstanceId(); } /** Returns the configured AppProfile id to use. */ public String getAppProfileId() { - return getTypedStubSettings().getAppProfileId(); + return stubSettings.getAppProfileId(); } - /** Returns the object with the settings used for calls to ReadRows. */ + /** Returns the underlying RPC settings. */ + public EnhancedBigtableStubSettings getStubSettings() { + return stubSettings; + } + + /** @deprecated Please use {@link #getStubSettings()} */ + @Deprecated public ServerStreamingCallSettings readRowsSettings() { - return getTypedStubSettings().readRowsSettings(); + return stubSettings.readRowsSettings(); } /** Returns the object with the settings used for point reads via ReadRow. */ public UnaryCallSettings readRowSettings() { - return getTypedStubSettings().readRowSettings(); + return stubSettings.readRowSettings(); } - /** Returns the object with the settings used for calls to sampleRowKeys. */ + /** @deprecated Please use {@link #getStubSettings()} */ + @Deprecated public UnaryCallSettings> sampleRowKeysSettings() { - return getTypedStubSettings().sampleRowKeysSettings(); + return stubSettings.sampleRowKeysSettings(); } - /** Returns the object with the settings used for calls to MutateRow. */ + /** @deprecated Please use {@link #getStubSettings()} */ + @Deprecated public UnaryCallSettings mutateRowSettings() { - return getTypedStubSettings().mutateRowSettings(); + return stubSettings.mutateRowSettings(); } - /** Returns the object with the settings used for BulkMutations. */ + /** @deprecated Please use {@link #getStubSettings()} */ + @Deprecated public BatchingCallSettings bulkMutationsSettings() { - // NOTE: the user facing BigtableDataClient only exposes this api as newBulkMutationBatcher, - // so the outer name should match that, while the stub should stick to rpc names. - return getTypedStubSettings().bulkMutateRowsSettings(); + return stubSettings.bulkMutateRowsSettings(); } - /** Returns the object with the settings used for calls to checkAndMutateRow. */ + /** @deprecated Please use {@link #getStubSettings()} */ + @Deprecated public UnaryCallSettings checkAndMutateRowSettings() { - return getTypedStubSettings().checkAndMutateRowSettings(); + return stubSettings.checkAndMutateRowSettings(); } - /** Returns the object with the settings used for calls to ReadModifyWriteRow. */ + /** @deprecated Please use {@link #getStubSettings()} */ + @Deprecated public UnaryCallSettings readModifyWriteRowSettings() { - return getTypedStubSettings().readModifyWriteRowSettings(); + return stubSettings.readModifyWriteRowSettings(); + } + + /** @deprecated Please use {@link #getStubSettings()} */ + @Deprecated + public ExecutorProvider getExecutorProvider() { + return stubSettings.getExecutorProvider(); + } + + /** @deprecated Please use {@link #getStubSettings()} */ + @Deprecated + public TransportChannelProvider getTransportChannelProvider() { + return stubSettings.getTransportChannelProvider(); + } + + /** @deprecated Please use {@link #getStubSettings()} */ + @Deprecated + public CredentialsProvider getCredentialsProvider() { + return stubSettings.getCredentialsProvider(); + } + + /** @deprecated Please use {@link #getStubSettings()} */ + @Deprecated + public HeaderProvider getHeaderProvider() { + return stubSettings.getHeaderProvider(); } - @SuppressWarnings("unchecked") - EnhancedBigtableStubSettings getTypedStubSettings() { - return (EnhancedBigtableStubSettings) getStubSettings(); + /** @deprecated Please use {@link #getStubSettings()} */ + @Deprecated + public ApiClock getClock() { + return stubSettings.getClock(); + } + + /** @deprecated Please use {@link #getStubSettings()} */ + @Deprecated + public String getEndpoint() { + return stubSettings.getEndpoint(); + } + + /** @deprecated Please use {@link #getStubSettings()} */ + @Deprecated + @Nullable + public WatchdogProvider getStreamWatchdogProvider() { + return stubSettings.getStreamWatchdogProvider(); + } + + /** @deprecated Please use {@link #getStubSettings()} */ + @Deprecated + @Nonnull + public Duration getStreamWatchdogCheckInterval() { + return stubSettings.getStreamWatchdogCheckInterval(); } /** Returns a builder containing all the values of this settings class. */ - @SuppressWarnings("unchecked") public Builder toBuilder() { return new Builder(this); } /** Builder for BigtableDataSettings. */ - public static class Builder extends ClientSettings.Builder { + public static class Builder { + private final EnhancedBigtableStubSettings.Builder stubSettings; /** * Initializes a new Builder with sane defaults for all settings. * @@ -151,50 +234,26 @@ public static class Builder extends ClientSettings.Builder - /** - * Sets the target instance. This setting is required. All RPCs will be made in the context of - * this setting. - * - * @deprecated Please use {@link #setProjectId(String)} and {@link #setInstanceId(String)}. - */ - @Deprecated - public Builder setInstanceName( - @Nonnull com.google.cloud.bigtable.data.v2.models.InstanceName instanceName) { - getTypedStubSettings().setInstanceName(instanceName); - return this; - } - - /** - * Gets the {@link com.google.cloud.bigtable.data.v2.models.InstanceName} that was previously - * set on this Builder. - * - * @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. - */ - @Deprecated - public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { - return getTypedStubSettings().getInstanceName(); - } - /** * Sets the target project. This setting is required. All RPCs will be made in the context of * this setting. */ public Builder setProjectId(@Nonnull String projectId) { - getTypedStubSettings().setProjectId(projectId); + stubSettings.setProjectId(projectId); return this; } /** Gets the project id that was previously set on this Builder. */ public String getProjectId() { - return getTypedStubSettings().getProjectId(); + return stubSettings.getProjectId(); } /** @@ -202,13 +261,13 @@ public String getProjectId() { * this setting. */ public Builder setInstanceId(@Nonnull String instanceId) { - getTypedStubSettings().setInstanceId(instanceId); + stubSettings.setInstanceId(instanceId); return this; } /** Gets the instance id that was previously set on this Builder. */ public String getInstanceId() { - return getTypedStubSettings().getInstanceId(); + return stubSettings.getInstanceId(); } /** @@ -218,60 +277,171 @@ public String getInstanceId() { * handled according to that application profile. */ public Builder setAppProfileId(@Nonnull String appProfileId) { - getTypedStubSettings().setAppProfileId(appProfileId); + stubSettings.setAppProfileId(appProfileId); return this; } /** Gets the app profile id that was previously set on this Builder. */ public String getAppProfileId() { - return getTypedStubSettings().getAppProfileId(); + return stubSettings.getAppProfileId(); } - /** Returns the builder for the settings used for calls to readRows. */ + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated public ServerStreamingCallSettings.Builder readRowsSettings() { - return getTypedStubSettings().readRowsSettings(); + return stubSettings.readRowsSettings(); } - /** Returns the builder for the settings used for point reads using readRow. */ + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated public UnaryCallSettings.Builder readRowSettings() { - return getTypedStubSettings().readRowSettings(); + return stubSettings.readRowSettings(); } - /** Returns the builder for the settings used for calls to SampleRowKeysSettings. */ + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated public UnaryCallSettings.Builder> sampleRowKeysSettings() { - return getTypedStubSettings().sampleRowKeysSettings(); + return stubSettings.sampleRowKeysSettings(); } - /** Returns the builder for the settings used for calls to MutateRow. */ + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated public UnaryCallSettings.Builder mutateRowSettings() { - return getTypedStubSettings().mutateRowSettings(); + return stubSettings.mutateRowSettings(); } - /** Returns the builder for the settings used for BulkMutations. */ + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated public BatchingCallSettings.Builder bulkMutationsSettings() { - // NOTE: the user facing BigtableDataClient only exposes this api as newBulkMutationBatcher, - // so the outer name should match that, while the stub should stick to rpc names. - return getTypedStubSettings().bulkMutateRowsSettings(); + return stubSettings.bulkMutateRowsSettings(); } - /** Returns the object with the settings used for calls to checkAndMutateRow. */ + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated public UnaryCallSettings.Builder checkAndMutateRowSettings() { - return getTypedStubSettings().checkAndMutateRowSettings(); + return stubSettings.checkAndMutateRowSettings(); } - /** Returns the builder with the settings used for calls to ReadModifyWriteRow. */ + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated public UnaryCallSettings.Builder readModifyWriteRowSettings() { - return getTypedStubSettings().readModifyWriteRowSettings(); + return stubSettings.readModifyWriteRowSettings(); + } + + /** Sets the CredentialsProvider to use for getting the credentials to make calls with. */ + public Builder setCredentialsProvider(CredentialsProvider credentialsProvider) { + stubSettings.setCredentialsProvider(credentialsProvider); + return this; + } + + /** Gets the CredentialsProvider to use for getting the credentials to make calls with. */ + public CredentialsProvider getCredentialsProvider() { + return stubSettings.getCredentialsProvider(); } - @SuppressWarnings("unchecked") - private EnhancedBigtableStubSettings.Builder getTypedStubSettings() { - return (EnhancedBigtableStubSettings.Builder) getStubSettings(); + /** + * Returns the underlying settings for making RPC calls. The settings should be changed with + * care. + */ + public EnhancedBigtableStubSettings.Builder stubSettings() { + return stubSettings; } - public BigtableDataSettings build() throws IOException { + public BigtableDataSettings build() { return new BigtableDataSettings(this); } - // + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public Builder setExecutorProvider(ExecutorProvider executorProvider) { + stubSettings.setExecutorProvider(executorProvider); + return this; + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public Builder setHeaderProvider(HeaderProvider headerProvider) { + stubSettings.setHeaderProvider(headerProvider); + return this; + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public Builder setTransportChannelProvider(TransportChannelProvider transportChannelProvider) { + stubSettings.setTransportChannelProvider(transportChannelProvider); + return this; + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public Builder setStreamWatchdogProvider(@Nullable WatchdogProvider streamWatchdogProvider) { + stubSettings.setStreamWatchdogProvider(streamWatchdogProvider); + return this; + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public Builder setClock(ApiClock clock) { + stubSettings.setClock(clock); + return this; + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public Builder setEndpoint(String endpoint) { + stubSettings.setEndpoint(endpoint); + return this; + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public Builder setStreamWatchdogCheckInterval(@Nonnull Duration checkInterval) { + stubSettings.setStreamWatchdogCheckInterval(checkInterval); + return this; + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public ExecutorProvider getExecutorProvider() { + return stubSettings.getExecutorProvider(); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public TransportChannelProvider getTransportChannelProvider() { + return stubSettings.getTransportChannelProvider(); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public HeaderProvider getHeaderProvider() { + return stubSettings.getHeaderProvider(); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + @Nullable + public WatchdogProvider getStreamWatchdogProvider() { + return stubSettings.getStreamWatchdogProvider(); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public ApiClock getClock() { + return stubSettings.getClock(); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + public String getEndpoint() { + return stubSettings.getEndpoint(); + } + + /** @deprecated Please use {@link #stubSettings()} */ + @Deprecated + @Nonnull + public Duration getStreamWatchdogCheckInterval() { + return stubSettings.getStreamWatchdogCheckInterval(); + } } } diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/RequestContext.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/RequestContext.java index ad1a2d27e1c4..fc015186aa63 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/RequestContext.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/RequestContext.java @@ -38,31 +38,12 @@ public static RequestContext create(String projectId, String instanceId, String return new AutoValue_RequestContext(projectId, instanceId, appProfileId); } - /** @deprecated Please use {@link #create(String, String, String)}. */ - @Deprecated - public static RequestContext create( - com.google.cloud.bigtable.data.v2.models.InstanceName instanceName, String appProfileId) { - return new AutoValue_RequestContext( - instanceName.getProject(), instanceName.getInstance(), appProfileId); - } - /** The project id that the client is configured to target. */ public abstract String getProjectId(); /** The instance id that the client is configured to target. */ public abstract String getInstanceId(); - /** - * The instance that the client is configured to target. - * - * @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. - */ - @Deprecated - public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { - return com.google.cloud.bigtable.data.v2.models.InstanceName.of( - getProjectId(), getInstanceId()); - } - /** The App Profile to use when processing the current request */ public abstract String getAppProfileId(); } diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/InstanceName.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/InstanceName.java deleted file mode 100644 index fc63cdaf68e9..000000000000 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/models/InstanceName.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright 2018 Google LLC - * - * 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 - * - * https://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 com.google.cloud.bigtable.data.v2.models; - -import com.google.api.pathtemplate.PathTemplate; -import com.google.api.resourcenames.ResourceName; -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableMap; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -// Copied from com.google.bigtable.admin.v2 - -/** @deprecated Please use project id and instance id strings instead. */ -@Deprecated -public class InstanceName implements ResourceName { - private static final PathTemplate PATH_TEMPLATE = - PathTemplate.createWithoutUrlEncoding("projects/{project}/instances/{instance}"); - - private volatile Map fieldValuesMap; - - private final String project; - private final String instance; - - public String getProject() { - return project; - } - - public String getInstance() { - return instance; - } - - public static Builder newBuilder() { - return new Builder(); - } - - public Builder toBuilder() { - return new Builder(this); - } - - private InstanceName(Builder builder) { - project = Preconditions.checkNotNull(builder.getProject()); - instance = Preconditions.checkNotNull(builder.getInstance()); - } - - public static InstanceName of(String project, String instance) { - return newBuilder().setProject(project).setInstance(instance).build(); - } - - public static String format(String project, String instance) { - return newBuilder().setProject(project).setInstance(instance).build().toString(); - } - - public static InstanceName parse(String formattedString) { - if (formattedString.isEmpty()) { - return null; - } - Map matchMap = - PATH_TEMPLATE.validatedMatch( - formattedString, "InstanceName.parse: formattedString not in valid format"); - return of(matchMap.get("project"), matchMap.get("instance")); - } - - public static List parseList(List formattedStrings) { - List list = new ArrayList<>(formattedStrings.size()); - for (String formattedString : formattedStrings) { - list.add(parse(formattedString)); - } - return list; - } - - public static List toStringList(List values) { - List list = new ArrayList(values.size()); - for (InstanceName value : values) { - if (value == null) { - list.add(""); - } else { - list.add(value.toString()); - } - } - return list; - } - - public static boolean isParsableFrom(String formattedString) { - return PATH_TEMPLATE.matches(formattedString); - } - - public Map getFieldValuesMap() { - if (fieldValuesMap == null) { - synchronized (this) { - if (fieldValuesMap == null) { - ImmutableMap.Builder fieldMapBuilder = ImmutableMap.builder(); - fieldMapBuilder.put("project", project); - fieldMapBuilder.put("instance", instance); - fieldValuesMap = fieldMapBuilder.build(); - } - } - } - return fieldValuesMap; - } - - public String getFieldValue(String fieldName) { - return getFieldValuesMap().get(fieldName); - } - - @Override - public String toString() { - return PATH_TEMPLATE.instantiate("project", project, "instance", instance); - } - - /** Builder for InstanceName. */ - public static class Builder { - - private String project; - private String instance; - - public String getProject() { - return project; - } - - public String getInstance() { - return instance; - } - - public Builder setProject(String project) { - this.project = project; - return this; - } - - public Builder setInstance(String instance) { - this.instance = instance; - return this; - } - - private Builder() {} - - private Builder(InstanceName instanceName) { - project = instanceName.project; - instance = instanceName.instance; - } - - public InstanceName build() { - return new InstanceName(this); - } - } - - @Override - public boolean equals(Object o) { - if (o == this) { - return true; - } - if (o instanceof InstanceName) { - InstanceName that = (InstanceName) o; - return (this.project.equals(that.project)) && (this.instance.equals(that.instance)); - } - return false; - } - - @Override - public int hashCode() { - int h = 1; - h *= 1000003; - h ^= project.hashCode(); - h *= 1000003; - h ^= instance.hashCode(); - return h; - } -} diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java index 41041593ccda..2affa5b9c8d1 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java @@ -98,6 +98,7 @@ public static EnhancedBigtableStub create(EnhancedBigtableStubSettings settings) .setTransportChannelProvider(settings.getTransportChannelProvider()) .setEndpoint(settings.getEndpoint()) .setCredentialsProvider(settings.getCredentialsProvider()) + .setHeaderProvider(settings.getHeaderProvider()) .setStreamWatchdogProvider(settings.getStreamWatchdogProvider()) .setStreamWatchdogCheckInterval(settings.getStreamWatchdogCheckInterval()) // Force the base stub to use a different TracerFactory diff --git a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java index 17499828f070..7f37a6590a16 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java +++ b/google-cloud-clients/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java @@ -28,6 +28,7 @@ import com.google.api.gax.rpc.ServerStreamingCallSettings; import com.google.api.gax.rpc.StatusCode.Code; import com.google.api.gax.rpc.StubSettings; +import com.google.api.gax.rpc.TransportChannelProvider; import com.google.api.gax.rpc.UnaryCallSettings; import com.google.api.gax.tracing.OpencensusTracerFactory; import com.google.cloud.bigtable.data.v2.internal.DummyBatchingDescriptor; @@ -158,16 +159,6 @@ public static Builder newBuilder() { return new Builder(); } - /** - * Returns the target instance. - * - * @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()} - */ - @Deprecated - public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { - return com.google.cloud.bigtable.data.v2.models.InstanceName.of(projectId, instanceId); - } - /** Returns the project id of the target instance. */ public String getProjectId() { return projectId; @@ -183,6 +174,19 @@ public String getAppProfileId() { return appProfileId; } + /** Returns a builder for the default ChannelProvider for this service. */ + public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { + return BigtableStubSettings.defaultGrpcTransportProviderBuilder() + // TODO: tune channels + .setChannelsPerCpu(2) + .setMaxInboundMessageSize(MAX_MESSAGE_SIZE); + } + + @SuppressWarnings("WeakerAccess") + public static TransportChannelProvider defaultTransportChannelProvider() { + return defaultGrpcTransportProviderBuilder().build(); + } + /** Returns a builder for the default credentials for this service. */ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { return BigtableStubSettings.defaultCredentialsProviderBuilder() @@ -267,12 +271,7 @@ private Builder() { BigtableStubSettings.Builder baseDefaults = BigtableStubSettings.newBuilder(); setEndpoint(baseDefaults.getEndpoint()); - setTransportChannelProvider( - InstantiatingGrpcChannelProvider.newBuilder() - // TODO: tune channels - .setChannelsPerCpu(2) - .setMaxInboundMessageSize(MAX_MESSAGE_SIZE) - .build()); + setTransportChannelProvider(defaultTransportChannelProvider()); setStreamWatchdogCheckInterval(baseDefaults.getStreamWatchdogCheckInterval()); setStreamWatchdogProvider(baseDefaults.getStreamWatchdogProvider()); @@ -365,35 +364,6 @@ private static void copyRetrySettings( // // - /** - * Sets the target instance. This setting is required. All RPCs will be made in the context of - * this setting. - * - * @deprecated Please use {@link #setProjectId(String)} and {@link #setInstanceId(String)}. - */ - @Deprecated - public Builder setInstanceName( - @Nonnull com.google.cloud.bigtable.data.v2.models.InstanceName instanceName) { - Preconditions.checkNotNull(instanceName); - this.projectId = instanceName.getProject(); - this.instanceId = instanceName.getInstance(); - return this; - } - - /** - * Gets the {@link com.google.cloud.bigtable.data.v2.models.InstanceName} that was previously - * set on this Builder. - * - * @deprecated Please use {@link #getProjectId()} and {@link #getInstanceId()}. - */ - @Deprecated - public com.google.cloud.bigtable.data.v2.models.InstanceName getInstanceName() { - if (projectId != null && instanceId != null) { - return com.google.cloud.bigtable.data.v2.models.InstanceName.of(projectId, instanceId); - } - return null; - } - /** * Sets the project id of that target instance. This setting is required. All RPCs will be made * in the context of this setting. diff --git a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminSettingsTest.java b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminSettingsTest.java index 1567b4323a85..4b967ec796b0 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminSettingsTest.java +++ b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminSettingsTest.java @@ -17,16 +17,18 @@ import static com.google.common.truth.Truth.assertThat; +import com.google.api.gax.core.CredentialsProvider; import com.google.api.gax.rpc.StatusCode.Code; -import com.google.cloud.bigtable.admin.v2.BigtableInstanceAdminSettings.Builder; import java.io.IOException; import org.junit.Test; +import org.mockito.Mockito; public class BigtableInstanceAdminSettingsTest { @Test public void testProjectName() throws Exception { String projectId = "my-project"; - Builder builder = BigtableInstanceAdminSettings.newBuilder().setProjectId(projectId); + BigtableInstanceAdminSettings.Builder builder = + BigtableInstanceAdminSettings.newBuilder().setProjectId(projectId); assertThat(builder.getProjectId()).isEqualTo(projectId); assertThat(builder.build().getProjectId()).isEqualTo(projectId); @@ -37,7 +39,8 @@ public void testProjectName() throws Exception { public void testMissingProjectName() { Exception actualException = null; - Builder settingsBuilder = BigtableInstanceAdminSettings.newBuilder(); + BigtableInstanceAdminSettings.Builder settingsBuilder = + BigtableInstanceAdminSettings.newBuilder(); assertThat(settingsBuilder.getProjectId()).isNull(); try { @@ -49,6 +52,22 @@ public void testMissingProjectName() { assertThat(actualException).isInstanceOf(NullPointerException.class); } + @Test + public void testCredentials() throws IOException { + CredentialsProvider credentialsProvider = Mockito.mock(CredentialsProvider.class); + + BigtableInstanceAdminSettings settings = + BigtableInstanceAdminSettings.newBuilder() + .setProjectId("my-project") + .setCredentialsProvider(credentialsProvider) + .build(); + + assertThat(settings.getCredentialsProvider()).isSameAs(credentialsProvider); + assertThat(settings.getStubSettings().getCredentialsProvider()).isSameAs(credentialsProvider); + assertThat(settings.toBuilder().getCredentialsProvider()).isSameAs(credentialsProvider); + assertThat(settings.toBuilder().build().getCredentialsProvider()).isSameAs(credentialsProvider); + } + @Test public void testStubSettings() throws IOException { String projectId = "my-project"; diff --git a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminSettingsTest.java b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminSettingsTest.java index 116504c8cd6a..1967f9a90d3c 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminSettingsTest.java +++ b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminSettingsTest.java @@ -17,9 +17,11 @@ import static com.google.common.truth.Truth.assertThat; +import com.google.api.gax.core.CredentialsProvider; import com.google.api.gax.rpc.StatusCode.Code; import java.io.IOException; import org.junit.Test; +import org.mockito.Mockito; public class BigtableTableAdminSettingsTest { @@ -51,6 +53,23 @@ public void testMissingInstanceName() { assertThat(actualException).isInstanceOf(NullPointerException.class); } + @Test + public void testCredentials() throws IOException { + CredentialsProvider credentialsProvider = Mockito.mock(CredentialsProvider.class); + + BigtableTableAdminSettings settings = + BigtableTableAdminSettings.newBuilder() + .setProjectId("my-project") + .setInstanceId("my-instance") + .setCredentialsProvider(credentialsProvider) + .build(); + + assertThat(settings.getCredentialsProvider()).isSameAs(credentialsProvider); + assertThat(settings.getStubSettings().getCredentialsProvider()).isSameAs(credentialsProvider); + assertThat(settings.toBuilder().getCredentialsProvider()).isSameAs(credentialsProvider); + assertThat(settings.toBuilder().build().getCredentialsProvider()).isSameAs(credentialsProvider); + } + @Test public void testStubSettings() throws IOException { BigtableTableAdminSettings.Builder builder = diff --git a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/it/env/Emulator.java b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/it/env/Emulator.java index dca4efbc514e..beef201ef56f 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/it/env/Emulator.java +++ b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/it/env/Emulator.java @@ -15,17 +15,11 @@ */ package com.google.cloud.bigtable.data.v2.it.env; -import com.google.api.gax.core.NoCredentialsProvider; -import com.google.api.gax.grpc.GrpcTransportChannel; -import com.google.api.gax.rpc.ClientSettings; -import com.google.api.gax.rpc.FixedTransportChannelProvider; -import com.google.bigtable.admin.v2.BigtableTableAdminGrpc; -import com.google.bigtable.admin.v2.BigtableTableAdminGrpc.BigtableTableAdminBlockingStub; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminClient; +import com.google.cloud.bigtable.admin.v2.BigtableTableAdminSettings; import com.google.cloud.bigtable.data.v2.BigtableDataClient; import com.google.cloud.bigtable.data.v2.BigtableDataSettings; import com.google.common.io.CharStreams; -import io.grpc.ManagedChannel; -import io.grpc.ManagedChannelBuilder; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -52,8 +46,7 @@ class Emulator { private final Path executable; private Process process; private boolean isStopped = true; - private ManagedChannel channel; - private BigtableTableAdminBlockingStub tableAdminClient; + private BigtableTableAdminClient tableAdminClient; private BigtableDataClient dataClient; private static final String PROJECT_ID = "fake-project"; @@ -94,16 +87,18 @@ void start() throws Exception { waitForPort(availablePort); - channel = createChannel(availablePort); - - tableAdminClient = BigtableTableAdminGrpc.newBlockingStub(channel); + tableAdminClient = + BigtableTableAdminClient.create( + BigtableTableAdminSettings.newBuilderForEmulator(availablePort) + .setProjectId(PROJECT_ID) + .setInstanceId(INSTANCE_ID) + .build()); dataClient = BigtableDataClient.create( - configureClient( - BigtableDataSettings.newBuilder() - .setProjectId(PROJECT_ID) - .setInstanceId(INSTANCE_ID)) + BigtableDataSettings.newBuilderForEmulator(availablePort) + .setProjectId(PROJECT_ID) + .setInstanceId(INSTANCE_ID) .build()); Runtime.getRuntime() @@ -122,8 +117,7 @@ public void run() { void stop() throws Exception { try { dataClient.close(); - channel.shutdownNow(); - channel.awaitTermination(1, TimeUnit.MINUTES); + tableAdminClient.close(); } finally { isStopped = true; process.destroy(); @@ -134,7 +128,7 @@ BigtableDataClient getDataClient() { return dataClient; } - BigtableTableAdminBlockingStub getTableAdminClient() { + BigtableTableAdminClient getTableAdminClient() { return tableAdminClient; } @@ -171,22 +165,6 @@ private void waitForPort(int port) throws InterruptedException, TimeoutException throw new TimeoutException("Timed out waiting for server to start"); } - private ManagedChannel createChannel(int port) { - return ManagedChannelBuilder.forAddress("localhost", port) - .usePlaintext() - .maxInboundMessageSize(256 * 1024 * 1024) - .build(); - } - - private > T configureClient(T settings) { - settings - .setCredentialsProvider(new NoCredentialsProvider()) - .setTransportChannelProvider( - FixedTransportChannelProvider.create(GrpcTransportChannel.create(channel))); - - return settings; - } - private static void pipeStreamToLog(final InputStream stream, final Level level) { final BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); diff --git a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/it/env/EmulatorEnv.java b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/it/env/EmulatorEnv.java index c4ce28ee13e2..fbe357c8fcb5 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/it/env/EmulatorEnv.java +++ b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/it/env/EmulatorEnv.java @@ -15,11 +15,8 @@ */ package com.google.cloud.bigtable.data.v2.it.env; -import com.google.bigtable.admin.v2.ColumnFamily; -import com.google.bigtable.admin.v2.CreateTableRequest; -import com.google.bigtable.admin.v2.Table; +import com.google.cloud.bigtable.admin.v2.models.CreateTableRequest; import com.google.cloud.bigtable.data.v2.BigtableDataClient; -import com.google.cloud.bigtable.data.v2.internal.NameUtil; public class EmulatorEnv implements TestEnv { private static final String PROJECT_ID = "fake-project"; @@ -36,14 +33,7 @@ public void start() throws Exception { emulator .getTableAdminClient() - .createTable( - CreateTableRequest.newBuilder() - .setParent(NameUtil.formatInstanceName(PROJECT_ID, INSTANCE_ID)) - .setTableId(TABLE_ID) - .setTable( - Table.newBuilder() - .putColumnFamilies(FAMILY_ID, ColumnFamily.getDefaultInstance())) - .build()); + .createTable(CreateTableRequest.of(TABLE_ID).addFamily(FAMILY_ID)); } @Override diff --git a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/ResourceHeaderTest.java b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/ResourceHeaderTest.java index 8acb7cde9b17..c4c95dd2e925 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/ResourceHeaderTest.java +++ b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/ResourceHeaderTest.java @@ -20,6 +20,7 @@ import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.grpc.testing.InProcessServer; import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.api.gax.rpc.FixedHeaderProvider; import com.google.bigtable.v2.BigtableGrpc; import com.google.cloud.bigtable.data.v2.BigtableDataClient; import com.google.cloud.bigtable.data.v2.BigtableDataSettings; @@ -48,6 +49,9 @@ public class ResourceHeaderTest { private static final Pattern EXPECTED_HEADER_PATTERN = Pattern.compile(".*" + NameUtil.formatTableName(PROJECT_ID, INSTANCE_ID, TABLE_ID) + ".*"); private static final String HEADER_NAME = "x-goog-request-params"; + private static final String TEST_HEADER_NAME = "simple-header-name"; + private static final String TEST_HEADER_VALUE = "simple-header-value"; + private static final Pattern TEST_PATTERN = Pattern.compile(".*" + TEST_HEADER_VALUE + ".*"); private InProcessServer server; private LocalChannelProvider channelProvider; @@ -63,15 +67,21 @@ public void setUp() throws Exception { BigtableDataSettings.newBuilder() .setProjectId(PROJECT_ID) .setInstanceId(INSTANCE_ID) - .setTransportChannelProvider(channelProvider) .setCredentialsProvider(NoCredentialsProvider.create()); + settings + .stubSettings() + .setTransportChannelProvider(channelProvider) + .setHeaderProvider(FixedHeaderProvider.create(TEST_HEADER_NAME, TEST_HEADER_VALUE)); + // Force immediate flush settings - .bulkMutationsSettings() + .stubSettings() + .bulkMutateRowsSettings() .setBatchingSettings( settings - .bulkMutationsSettings() + .stubSettings() + .bulkMutateRowsSettings() .getBatchingSettings() .toBuilder() .setElementCountThreshold(1L) @@ -132,5 +142,7 @@ public void readModifyWriteTest() { private void verifyHeaderSent() { boolean headerSent = channelProvider.isHeaderSent(HEADER_NAME, EXPECTED_HEADER_PATTERN); assertWithMessage("Header was sent").that(headerSent).isTrue(); + boolean testHeader = channelProvider.isHeaderSent(TEST_HEADER_NAME, TEST_PATTERN); + assertWithMessage("HeaderProvider's header received in Channel").that(testHeader).isTrue(); } } diff --git a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/BulkMutateRowsRetryTest.java b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/BulkMutateRowsRetryTest.java index 10528d333d27..cf3af546463b 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/BulkMutateRowsRetryTest.java +++ b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/mutaterows/BulkMutateRowsRetryTest.java @@ -76,16 +76,20 @@ public void setUp() throws Exception { BigtableDataSettings.newBuilder() .setProjectId(PROJECT_ID) .setInstanceId(INSTANCE_ID) - .setCredentialsProvider(NoCredentialsProvider.create()) - .setTransportChannelProvider( - FixedTransportChannelProvider.create( - GrpcTransportChannel.create(serverRule.getChannel()))); + .setCredentialsProvider(NoCredentialsProvider.create()); + settings + .stubSettings() + .setTransportChannelProvider( + FixedTransportChannelProvider.create( + GrpcTransportChannel.create(serverRule.getChannel()))); settings - .bulkMutationsSettings() + .stubSettings() + .bulkMutateRowsSettings() .setRetrySettings( settings - .bulkMutationsSettings() + .stubSettings() + .bulkMutateRowsSettings() .getRetrySettings() .toBuilder() .setMaxAttempts(MAX_ATTEMPTS) @@ -95,7 +99,8 @@ public void setUp() throws Exception { .build()) .setBatchingSettings( settings - .bulkMutationsSettings() + .stubSettings() + .bulkMutateRowsSettings() .getBatchingSettings() .toBuilder() .setDelayThreshold(FLUSH_PERIOD) diff --git a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsRetryTest.java b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsRetryTest.java index 12c01275cfe1..adedf4b6de1a 100644 --- a/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsRetryTest.java +++ b/google-cloud-clients/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsRetryTest.java @@ -66,17 +66,20 @@ public void setUp() throws IOException { service = new TestBigtableService(); serverRule.getServiceRegistry().addService(service); - BigtableDataSettings settings = + BigtableDataSettings.Builder settings = BigtableDataSettings.newBuilder() .setProjectId(PROJECT_ID) .setInstanceId(INSTANCE_ID) - .setCredentialsProvider(NoCredentialsProvider.create()) - .setTransportChannelProvider( - FixedTransportChannelProvider.create( - GrpcTransportChannel.create(serverRule.getChannel()))) - .build(); + .setCredentialsProvider(NoCredentialsProvider.create()); - client = BigtableDataClient.create(settings); + settings + .stubSettings() + .setTransportChannelProvider( + FixedTransportChannelProvider.create( + GrpcTransportChannel.create(serverRule.getChannel()))) + .build(); + + client = BigtableDataClient.create(settings.build()); } @After diff --git a/google-cloud-clients/google-cloud-compute/README.md b/google-cloud-clients/google-cloud-compute/README.md index c76d031d7d09..207f5a04f755 100644 --- a/google-cloud-clients/google-cloud-compute/README.md +++ b/google-cloud-clients/google-cloud-compute/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-compute - 0.80.0-alpha + 0.81.0-alpha ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-compute:0.80.0-alpha' +compile 'com.google.cloud:google-cloud-compute:0.81.0-alpha' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-compute" % "0.80.0-alpha" +libraryDependencies += "com.google.cloud" % "google-cloud-compute" % "0.81.0-alpha" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-compute/pom.xml b/google-cloud-clients/google-cloud-compute/pom.xml index bd956f431738..4c222b460592 100644 --- a/google-cloud-clients/google-cloud-compute/pom.xml +++ b/google-cloud-clients/google-cloud-compute/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-compute - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud Compute https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-compute @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-compute diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AttachDiskInstanceHttpRequest.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AttachDiskInstanceHttpRequest.java index 94e3950952f8..9eef9ccac7e1 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AttachDiskInstanceHttpRequest.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/AttachDiskInstanceHttpRequest.java @@ -158,10 +158,7 @@ public String getFields() { return fields; } - /** - * Whether to force attach the disk even if it's currently attached to another instance. This is - * only available for regional disks. - */ + /** Whether to force attach the disk even if it's currently attached to another instance. */ public Boolean getForceAttach() { return forceAttach; } @@ -348,18 +345,12 @@ public Builder setFields(String fields) { return this; } - /** - * Whether to force attach the disk even if it's currently attached to another instance. This is - * only available for regional disks. - */ + /** Whether to force attach the disk even if it's currently attached to another instance. */ public Boolean getForceAttach() { return forceAttach; } - /** - * Whether to force attach the disk even if it's currently attached to another instance. This is - * only available for regional disks. - */ + /** Whether to force attach the disk even if it's currently attached to another instance. */ public Builder setForceAttach(Boolean forceAttach) { this.forceAttach = forceAttach; return this; diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/Condition.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/Condition.java index 926326417397..91a6ae9ae268 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/Condition.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/Condition.java @@ -31,7 +31,6 @@ public final class Condition implements ApiMessage { private final String op; private final String svc; private final String sys; - private final String value; private final List values; private Condition() { @@ -39,17 +38,14 @@ private Condition() { this.op = null; this.svc = null; this.sys = null; - this.value = null; this.values = null; } - private Condition( - String iam, String op, String svc, String sys, String value, List values) { + private Condition(String iam, String op, String svc, String sys, List values) { this.iam = iam; this.op = op; this.svc = svc; this.sys = sys; - this.value = value; this.values = values; } @@ -67,9 +63,6 @@ public Object getFieldValue(String fieldName) { if ("sys".equals(fieldName)) { return sys; } - if ("value".equals(fieldName)) { - return value; - } if ("values".equals(fieldName)) { return values; } @@ -117,12 +110,7 @@ public String getSys() { return sys; } - /** DEPRECATED. Use 'values' instead. */ - public String getValue() { - return value; - } - - /** The objects of the condition. This is mutually exclusive with 'value'. */ + /** The objects of the condition. */ public List getValuesList() { return values; } @@ -154,7 +142,6 @@ public static class Builder { private String op; private String svc; private String sys; - private String value; private List values; Builder() {} @@ -173,9 +160,6 @@ public Builder mergeFrom(Condition other) { if (other.getSys() != null) { this.sys = other.sys; } - if (other.getValue() != null) { - this.value = other.value; - } if (other.getValuesList() != null) { this.values = other.values; } @@ -187,7 +171,6 @@ public Builder mergeFrom(Condition other) { this.op = source.op; this.svc = source.svc; this.sys = source.sys; - this.value = source.value; this.values = source.values; } @@ -241,23 +224,12 @@ public Builder setSys(String sys) { return this; } - /** DEPRECATED. Use 'values' instead. */ - public String getValue() { - return value; - } - - /** DEPRECATED. Use 'values' instead. */ - public Builder setValue(String value) { - this.value = value; - return this; - } - - /** The objects of the condition. This is mutually exclusive with 'value'. */ + /** The objects of the condition. */ public List getValuesList() { return values; } - /** The objects of the condition. This is mutually exclusive with 'value'. */ + /** The objects of the condition. */ public Builder addAllValues(List values) { if (this.values == null) { this.values = new LinkedList<>(); @@ -266,7 +238,7 @@ public Builder addAllValues(List values) { return this; } - /** The objects of the condition. This is mutually exclusive with 'value'. */ + /** The objects of the condition. */ public Builder addValues(String values) { if (this.values == null) { this.values = new LinkedList<>(); @@ -277,7 +249,7 @@ public Builder addValues(String values) { public Condition build() { - return new Condition(iam, op, svc, sys, value, values); + return new Condition(iam, op, svc, sys, values); } public Builder clone() { @@ -286,7 +258,6 @@ public Builder clone() { newBuilder.setOp(this.op); newBuilder.setSvc(this.svc); newBuilder.setSys(this.sys); - newBuilder.setValue(this.value); newBuilder.addAllValues(this.values); return newBuilder; } @@ -307,9 +278,6 @@ public String toString() { + "sys=" + sys + ", " - + "value=" - + value - + ", " + "values=" + values + "}"; @@ -326,7 +294,6 @@ public boolean equals(Object o) { && Objects.equals(this.op, that.getOp()) && Objects.equals(this.svc, that.getSvc()) && Objects.equals(this.sys, that.getSys()) - && Objects.equals(this.value, that.getValue()) && Objects.equals(this.values, that.getValuesList()); } return false; @@ -334,6 +301,6 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(iam, op, svc, sys, value, values); + return Objects.hash(iam, op, svc, sys, values); } } diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ForwardingRule.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ForwardingRule.java index bf88ef0ba396..be66f586278d 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ForwardingRule.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/ForwardingRule.java @@ -34,6 +34,7 @@ * beta.regionForwardingRules ==) (== resource_for v1.regionForwardingRules ==) */ public final class ForwardingRule implements ApiMessage { + private final Boolean allPorts; private final String backendService; private final String creationTimestamp; private final String description; @@ -61,6 +62,7 @@ public final class ForwardingRule implements ApiMessage { private final String target; private ForwardingRule() { + this.allPorts = null; this.backendService = null; this.creationTimestamp = null; this.description = null; @@ -84,6 +86,7 @@ private ForwardingRule() { } private ForwardingRule( + Boolean allPorts, String backendService, String creationTimestamp, String description, @@ -104,6 +107,7 @@ private ForwardingRule( String serviceName, String subnetwork, String target) { + this.allPorts = allPorts; this.backendService = backendService; this.creationTimestamp = creationTimestamp; this.description = description; @@ -128,6 +132,9 @@ private ForwardingRule( @Override public Object getFieldValue(String fieldName) { + if ("allPorts".equals(fieldName)) { + return allPorts; + } if ("backendService".equals(fieldName)) { return backendService; } @@ -209,6 +216,19 @@ public List getFieldMask() { return null; } + /** + * This field is used along with the backend_service field for internal load balancing or with the + * target field for internal TargetInstance. This field cannot be used with port or portRange + * fields. + * + *

When the load balancing scheme is INTERNAL and protocol is TCP/UDP, specify this field to + * allow packets addressed to any ports will be forwarded to the backends configured with this + * forwarding rule. + */ + public Boolean getAllPorts() { + return allPorts; + } + /** * This field is only used for INTERNAL load balancing. * @@ -427,8 +447,8 @@ public String getSubnetwork() { * The URL of the target resource to receive the matched traffic. For regional forwarding rules, * this target must live in the same region as the forwarding rule. For global forwarding rules, * this target must be a global load balancing resource. The forwarded traffic must be of a type - * appropriate to the target object. For INTERNAL_SELF_MANAGED" load balancing, only HTTP and - * HTTPS targets are valid. + * appropriate to the target object. For INTERNAL_SELF_MANAGED load balancing, only HTTP and HTTPS + * targets are valid. */ public String getTarget() { return target; @@ -457,6 +477,7 @@ public static ForwardingRule getDefaultInstance() { } public static class Builder { + private Boolean allPorts; private String backendService; private String creationTimestamp; private String description; @@ -482,6 +503,9 @@ public static class Builder { public Builder mergeFrom(ForwardingRule other) { if (other == ForwardingRule.getDefaultInstance()) return this; + if (other.getAllPorts() != null) { + this.allPorts = other.allPorts; + } if (other.getBackendService() != null) { this.backendService = other.backendService; } @@ -546,6 +570,7 @@ public Builder mergeFrom(ForwardingRule other) { } Builder(ForwardingRule source) { + this.allPorts = source.allPorts; this.backendService = source.backendService; this.creationTimestamp = source.creationTimestamp; this.description = source.description; @@ -568,6 +593,33 @@ public Builder mergeFrom(ForwardingRule other) { this.target = source.target; } + /** + * This field is used along with the backend_service field for internal load balancing or with + * the target field for internal TargetInstance. This field cannot be used with port or + * portRange fields. + * + *

When the load balancing scheme is INTERNAL and protocol is TCP/UDP, specify this field to + * allow packets addressed to any ports will be forwarded to the backends configured with this + * forwarding rule. + */ + public Boolean getAllPorts() { + return allPorts; + } + + /** + * This field is used along with the backend_service field for internal load balancing or with + * the target field for internal TargetInstance. This field cannot be used with port or + * portRange fields. + * + *

When the load balancing scheme is INTERNAL and protocol is TCP/UDP, specify this field to + * allow packets addressed to any ports will be forwarded to the backends configured with this + * forwarding rule. + */ + public Builder setAllPorts(Boolean allPorts) { + this.allPorts = allPorts; + return this; + } + /** * This field is only used for INTERNAL load balancing. * @@ -1045,7 +1097,7 @@ public Builder setSubnetwork(String subnetwork) { * The URL of the target resource to receive the matched traffic. For regional forwarding rules, * this target must live in the same region as the forwarding rule. For global forwarding rules, * this target must be a global load balancing resource. The forwarded traffic must be of a type - * appropriate to the target object. For INTERNAL_SELF_MANAGED" load balancing, only HTTP and + * appropriate to the target object. For INTERNAL_SELF_MANAGED load balancing, only HTTP and * HTTPS targets are valid. */ public String getTarget() { @@ -1056,7 +1108,7 @@ public String getTarget() { * The URL of the target resource to receive the matched traffic. For regional forwarding rules, * this target must live in the same region as the forwarding rule. For global forwarding rules, * this target must be a global load balancing resource. The forwarded traffic must be of a type - * appropriate to the target object. For INTERNAL_SELF_MANAGED" load balancing, only HTTP and + * appropriate to the target object. For INTERNAL_SELF_MANAGED load balancing, only HTTP and * HTTPS targets are valid. */ public Builder setTarget(String target) { @@ -1067,6 +1119,7 @@ public Builder setTarget(String target) { public ForwardingRule build() { return new ForwardingRule( + allPorts, backendService, creationTimestamp, description, @@ -1091,6 +1144,7 @@ public ForwardingRule build() { public Builder clone() { Builder newBuilder = new Builder(); + newBuilder.setAllPorts(this.allPorts); newBuilder.setBackendService(this.backendService); newBuilder.setCreationTimestamp(this.creationTimestamp); newBuilder.setDescription(this.description); @@ -1118,6 +1172,9 @@ public Builder clone() { @Override public String toString() { return "ForwardingRule{" + + "allPorts=" + + allPorts + + ", " + "backendService=" + backendService + ", " @@ -1187,7 +1244,8 @@ public boolean equals(Object o) { } if (o instanceof ForwardingRule) { ForwardingRule that = (ForwardingRule) o; - return Objects.equals(this.backendService, that.getBackendService()) + return Objects.equals(this.allPorts, that.getAllPorts()) + && Objects.equals(this.backendService, that.getBackendService()) && Objects.equals(this.creationTimestamp, that.getCreationTimestamp()) && Objects.equals(this.description, that.getDescription()) && Objects.equals(this.iPAddress, that.getIPAddress()) @@ -1214,6 +1272,7 @@ public boolean equals(Object o) { @Override public int hashCode() { return Objects.hash( + allPorts, backendService, creationTimestamp, description, diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceClient.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceClient.java index 7458a77b898a..b6e5c69f776c 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceClient.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InstanceClient.java @@ -436,7 +436,7 @@ public final AggregatedListInstancesPagedResponse aggregatedListInstances( * * @param instance The instance name for this request. * @param forceAttach Whether to force attach the disk even if it's currently attached to another - * instance. This is only available for regional disks. + * instance. * @param attachedDiskResource An instance-attached disk resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ @@ -472,7 +472,7 @@ public final Operation attachDiskInstance( * * @param instance The instance name for this request. * @param forceAttach Whether to force attach the disk even if it's currently attached to another - * instance. This is only available for regional disks. + * instance. * @param attachedDiskResource An instance-attached disk resource. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectDiagnosticsLinkOpticalPower.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectDiagnosticsLinkOpticalPower.java index a38af6872490..b7aa305ab37d 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectDiagnosticsLinkOpticalPower.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectDiagnosticsLinkOpticalPower.java @@ -67,14 +67,22 @@ public List getFieldMask() { return null; } + /** + * The status of the current value when compared to the warning and alarm levels for the receiving + * or transmitting transceiver. Possible states include: - OK: The value has not crossed a warning + * threshold. - LOW_WARNING: The value has crossed below the low warning threshold. - + * HIGH_WARNING: The value has crossed above the high warning threshold. - LOW_ALARM: The value + * has crossed below the low alarm threshold. - HIGH_ALARM: The value has crossed above the high + * alarm threshold. + */ public String getState() { return state; } /** - * Value of the current optical power, read in dBm. Take a known good optical value, give it a 10% - * margin and trigger warnings relative to that value. In general, a -7dBm warning and a -11dBm - * alarm are good optical value estimates for most links. + * Value of the current receiving or transmitting optical power, read in dBm. Take a known good + * optical value, give it a 10% margin and trigger warnings relative to that value. In general, a + * -7dBm warning and a -11dBm alarm are good optical value estimates for most links. */ public Float getValue() { return value; @@ -124,28 +132,44 @@ public Builder mergeFrom(InterconnectDiagnosticsLinkOpticalPower other) { this.value = source.value; } + /** + * The status of the current value when compared to the warning and alarm levels for the + * receiving or transmitting transceiver. Possible states include: - OK: The value has not + * crossed a warning threshold. - LOW_WARNING: The value has crossed below the low warning + * threshold. - HIGH_WARNING: The value has crossed above the high warning threshold. - + * LOW_ALARM: The value has crossed below the low alarm threshold. - HIGH_ALARM: The value has + * crossed above the high alarm threshold. + */ public String getState() { return state; } + /** + * The status of the current value when compared to the warning and alarm levels for the + * receiving or transmitting transceiver. Possible states include: - OK: The value has not + * crossed a warning threshold. - LOW_WARNING: The value has crossed below the low warning + * threshold. - HIGH_WARNING: The value has crossed above the high warning threshold. - + * LOW_ALARM: The value has crossed below the low alarm threshold. - HIGH_ALARM: The value has + * crossed above the high alarm threshold. + */ public Builder setState(String state) { this.state = state; return this; } /** - * Value of the current optical power, read in dBm. Take a known good optical value, give it a - * 10% margin and trigger warnings relative to that value. In general, a -7dBm warning and a - * -11dBm alarm are good optical value estimates for most links. + * Value of the current receiving or transmitting optical power, read in dBm. Take a known good + * optical value, give it a 10% margin and trigger warnings relative to that value. In general, + * a -7dBm warning and a -11dBm alarm are good optical value estimates for most links. */ public Float getValue() { return value; } /** - * Value of the current optical power, read in dBm. Take a known good optical value, give it a - * 10% margin and trigger warnings relative to that value. In general, a -7dBm warning and a - * -11dBm alarm are good optical value estimates for most links. + * Value of the current receiving or transmitting optical power, read in dBm. Take a known good + * optical value, give it a 10% margin and trigger warnings relative to that value. In general, + * a -7dBm warning and a -11dBm alarm are good optical value estimates for most links. */ public Builder setValue(Float value) { this.value = value; diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectDiagnosticsLinkStatus.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectDiagnosticsLinkStatus.java index 198d2e10b71f..0605021a5ccc 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectDiagnosticsLinkStatus.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/InterconnectDiagnosticsLinkStatus.java @@ -120,10 +120,18 @@ public InterconnectDiagnosticsLinkLACPStatus getLacpStatus() { return lacpStatus; } + /** + * An InterconnectDiagnostics.LinkOpticalPower object, describing the current value and status of + * the received light level. + */ public InterconnectDiagnosticsLinkOpticalPower getReceivingOpticalPower() { return receivingOpticalPower; } + /** + * An InterconnectDiagnostics.LinkOpticalPower object, describing the current value and status of + * the transmitted light level. + */ public InterconnectDiagnosticsLinkOpticalPower getTransmittingOpticalPower() { return transmittingOpticalPower; } @@ -255,20 +263,36 @@ public Builder setLacpStatus(InterconnectDiagnosticsLinkLACPStatus lacpStatus) { return this; } + /** + * An InterconnectDiagnostics.LinkOpticalPower object, describing the current value and status + * of the received light level. + */ public InterconnectDiagnosticsLinkOpticalPower getReceivingOpticalPower() { return receivingOpticalPower; } + /** + * An InterconnectDiagnostics.LinkOpticalPower object, describing the current value and status + * of the received light level. + */ public Builder setReceivingOpticalPower( InterconnectDiagnosticsLinkOpticalPower receivingOpticalPower) { this.receivingOpticalPower = receivingOpticalPower; return this; } + /** + * An InterconnectDiagnostics.LinkOpticalPower object, describing the current value and status + * of the transmitted light level. + */ public InterconnectDiagnosticsLinkOpticalPower getTransmittingOpticalPower() { return transmittingOpticalPower; } + /** + * An InterconnectDiagnostics.LinkOpticalPower object, describing the current value and status + * of the transmitted light level. + */ public Builder setTransmittingOpticalPower( InterconnectDiagnosticsLinkOpticalPower transmittingOpticalPower) { this.transmittingOpticalPower = transmittingOpticalPower; diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/Network.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/Network.java index f09c0a4cc285..887e5b3d9d3d 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/Network.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/Network.java @@ -180,8 +180,9 @@ public String getGatewayIPv4() { } /** - * The range of internal addresses that are legal on this network. This range is a CIDR - * specification, for example: 192.168.0.0/16. Provided by the client when the network is created. + * Deprecated in favor of subnet mode networks. The range of internal addresses that are legal on + * this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the + * client when the network is created. */ public String getIPv4Range() { return iPv4Range; @@ -394,18 +395,18 @@ public Builder setGatewayIPv4(String gatewayIPv4) { } /** - * The range of internal addresses that are legal on this network. This range is a CIDR - * specification, for example: 192.168.0.0/16. Provided by the client when the network is - * created. + * Deprecated in favor of subnet mode networks. The range of internal addresses that are legal + * on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by + * the client when the network is created. */ public String getIPv4Range() { return iPv4Range; } /** - * The range of internal addresses that are legal on this network. This range is a CIDR - * specification, for example: 192.168.0.0/16. Provided by the client when the network is - * created. + * Deprecated in favor of subnet mode networks. The range of internal addresses that are legal + * on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by + * the client when the network is created. */ public Builder setIPv4Range(String iPv4Range) { this.iPv4Range = iPv4Range; diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworkPeering.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworkPeering.java index 56c752ad67c2..4ad2e87c986d 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworkPeering.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworkPeering.java @@ -31,6 +31,7 @@ */ public final class NetworkPeering implements ApiMessage { private final Boolean autoCreateRoutes; + private final Boolean exchangeSubnetRoutes; private final String name; private final String network; private final String state; @@ -38,6 +39,7 @@ public final class NetworkPeering implements ApiMessage { private NetworkPeering() { this.autoCreateRoutes = null; + this.exchangeSubnetRoutes = null; this.name = null; this.network = null; this.state = null; @@ -45,8 +47,14 @@ private NetworkPeering() { } private NetworkPeering( - Boolean autoCreateRoutes, String name, String network, String state, String stateDetails) { + Boolean autoCreateRoutes, + Boolean exchangeSubnetRoutes, + String name, + String network, + String state, + String stateDetails) { this.autoCreateRoutes = autoCreateRoutes; + this.exchangeSubnetRoutes = exchangeSubnetRoutes; this.name = name; this.network = network; this.state = state; @@ -58,6 +66,9 @@ public Object getFieldValue(String fieldName) { if ("autoCreateRoutes".equals(fieldName)) { return autoCreateRoutes; } + if ("exchangeSubnetRoutes".equals(fieldName)) { + return exchangeSubnetRoutes; + } if ("name".equals(fieldName)) { return name; } @@ -92,15 +103,26 @@ public List getFieldMask() { } /** - * Indicates whether full mesh connectivity is created and managed automatically. When it is set - * to true, Google Compute Engine will automatically create and manage the routes between two - * networks when the state is ACTIVE. Otherwise, user needs to create routes manually to route - * packets to peer network. + * This field will be deprecated soon. Prefer using exchange_subnet_routes instead. Indicates + * whether full mesh connectivity is created and managed automatically. When it is set to true, + * Google Compute Engine will automatically create and manage the routes between two networks when + * the state is ACTIVE. Otherwise, user needs to create routes manually to route packets to peer + * network. */ public Boolean getAutoCreateRoutes() { return autoCreateRoutes; } + /** + * Whether full mesh connectivity is created and managed automatically. When it is set to true, + * Google Compute Engine will automatically create and manage the routes between two networks when + * the peering state is ACTIVE. Otherwise, user needs to create routes manually to route packets + * to peer network. + */ + public Boolean getExchangeSubnetRoutes() { + return exchangeSubnetRoutes; + } + /** * Name of this peering. Provided by the client when the peering is created. The name must comply * with RFC1035. Specifically, the name must be 1-63 characters long and match regular expression @@ -155,6 +177,7 @@ public static NetworkPeering getDefaultInstance() { public static class Builder { private Boolean autoCreateRoutes; + private Boolean exchangeSubnetRoutes; private String name; private String network; private String state; @@ -167,6 +190,9 @@ public Builder mergeFrom(NetworkPeering other) { if (other.getAutoCreateRoutes() != null) { this.autoCreateRoutes = other.autoCreateRoutes; } + if (other.getExchangeSubnetRoutes() != null) { + this.exchangeSubnetRoutes = other.exchangeSubnetRoutes; + } if (other.getName() != null) { this.name = other.name; } @@ -184,6 +210,7 @@ public Builder mergeFrom(NetworkPeering other) { Builder(NetworkPeering source) { this.autoCreateRoutes = source.autoCreateRoutes; + this.exchangeSubnetRoutes = source.exchangeSubnetRoutes; this.name = source.name; this.network = source.network; this.state = source.state; @@ -191,26 +218,49 @@ public Builder mergeFrom(NetworkPeering other) { } /** - * Indicates whether full mesh connectivity is created and managed automatically. When it is set - * to true, Google Compute Engine will automatically create and manage the routes between two - * networks when the state is ACTIVE. Otherwise, user needs to create routes manually to route - * packets to peer network. + * This field will be deprecated soon. Prefer using exchange_subnet_routes instead. Indicates + * whether full mesh connectivity is created and managed automatically. When it is set to true, + * Google Compute Engine will automatically create and manage the routes between two networks + * when the state is ACTIVE. Otherwise, user needs to create routes manually to route packets to + * peer network. */ public Boolean getAutoCreateRoutes() { return autoCreateRoutes; } /** - * Indicates whether full mesh connectivity is created and managed automatically. When it is set - * to true, Google Compute Engine will automatically create and manage the routes between two - * networks when the state is ACTIVE. Otherwise, user needs to create routes manually to route - * packets to peer network. + * This field will be deprecated soon. Prefer using exchange_subnet_routes instead. Indicates + * whether full mesh connectivity is created and managed automatically. When it is set to true, + * Google Compute Engine will automatically create and manage the routes between two networks + * when the state is ACTIVE. Otherwise, user needs to create routes manually to route packets to + * peer network. */ public Builder setAutoCreateRoutes(Boolean autoCreateRoutes) { this.autoCreateRoutes = autoCreateRoutes; return this; } + /** + * Whether full mesh connectivity is created and managed automatically. When it is set to true, + * Google Compute Engine will automatically create and manage the routes between two networks + * when the peering state is ACTIVE. Otherwise, user needs to create routes manually to route + * packets to peer network. + */ + public Boolean getExchangeSubnetRoutes() { + return exchangeSubnetRoutes; + } + + /** + * Whether full mesh connectivity is created and managed automatically. When it is set to true, + * Google Compute Engine will automatically create and manage the routes between two networks + * when the peering state is ACTIVE. Otherwise, user needs to create routes manually to route + * packets to peer network. + */ + public Builder setExchangeSubnetRoutes(Boolean exchangeSubnetRoutes) { + this.exchangeSubnetRoutes = exchangeSubnetRoutes; + return this; + } + /** * Name of this peering. Provided by the client when the peering is created. The name must * comply with RFC1035. Specifically, the name must be 1-63 characters long and match regular @@ -277,12 +327,14 @@ public Builder setStateDetails(String stateDetails) { public NetworkPeering build() { - return new NetworkPeering(autoCreateRoutes, name, network, state, stateDetails); + return new NetworkPeering( + autoCreateRoutes, exchangeSubnetRoutes, name, network, state, stateDetails); } public Builder clone() { Builder newBuilder = new Builder(); newBuilder.setAutoCreateRoutes(this.autoCreateRoutes); + newBuilder.setExchangeSubnetRoutes(this.exchangeSubnetRoutes); newBuilder.setName(this.name); newBuilder.setNetwork(this.network); newBuilder.setState(this.state); @@ -297,6 +349,9 @@ public String toString() { + "autoCreateRoutes=" + autoCreateRoutes + ", " + + "exchangeSubnetRoutes=" + + exchangeSubnetRoutes + + ", " + "name=" + name + ", " @@ -319,6 +374,7 @@ public boolean equals(Object o) { if (o instanceof NetworkPeering) { NetworkPeering that = (NetworkPeering) o; return Objects.equals(this.autoCreateRoutes, that.getAutoCreateRoutes()) + && Objects.equals(this.exchangeSubnetRoutes, that.getExchangeSubnetRoutes()) && Objects.equals(this.name, that.getName()) && Objects.equals(this.network, that.getNetwork()) && Objects.equals(this.state, that.getState()) @@ -329,6 +385,6 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(autoCreateRoutes, name, network, state, stateDetails); + return Objects.hash(autoCreateRoutes, exchangeSubnetRoutes, name, network, state, stateDetails); } } diff --git a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworksAddPeeringRequest.java b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworksAddPeeringRequest.java index cb738af6a6cc..61df24c21de2 100644 --- a/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworksAddPeeringRequest.java +++ b/google-cloud-clients/google-cloud-compute/src/main/java/com/google/cloud/compute/v1/NetworksAddPeeringRequest.java @@ -27,17 +27,21 @@ public final class NetworksAddPeeringRequest implements ApiMessage { private final Boolean autoCreateRoutes; private final String name; + private final NetworkPeering networkPeering; private final String peerNetwork; private NetworksAddPeeringRequest() { this.autoCreateRoutes = null; this.name = null; + this.networkPeering = null; this.peerNetwork = null; } - private NetworksAddPeeringRequest(Boolean autoCreateRoutes, String name, String peerNetwork) { + private NetworksAddPeeringRequest( + Boolean autoCreateRoutes, String name, NetworkPeering networkPeering, String peerNetwork) { this.autoCreateRoutes = autoCreateRoutes; this.name = name; + this.networkPeering = networkPeering; this.peerNetwork = peerNetwork; } @@ -49,6 +53,9 @@ public Object getFieldValue(String fieldName) { if ("name".equals(fieldName)) { return name; } + if ("networkPeering".equals(fieldName)) { + return networkPeering; + } if ("peerNetwork".equals(fieldName)) { return peerNetwork; } @@ -73,7 +80,10 @@ public List getFieldMask() { return null; } - /** Whether Google Compute Engine manages the routes automatically. */ + /** + * This field will be deprecated soon. Prefer using exchange_subnet_routes in network_peering + * instead. Whether Google Compute Engine manages the routes automatically. + */ public Boolean getAutoCreateRoutes() { return autoCreateRoutes; } @@ -83,6 +93,16 @@ public String getName() { return name; } + /** + * Network peering parameters. In order to specify route policies for peering using import/export + * custom routes, you will have to fill all peering related parameters (name, peer network, + * exchange_subnet_routes) in network_peeringfield. Corresponding fields in + * NetworksAddPeeringRequest will be deprecated soon. + */ + public NetworkPeering getNetworkPeering() { + return networkPeering; + } + /** * URL of the peer network. It can be either full URL or partial URL. The peer network may belong * to a different project. If the partial URL does not contain project, it is assumed that the @@ -117,6 +137,7 @@ public static NetworksAddPeeringRequest getDefaultInstance() { public static class Builder { private Boolean autoCreateRoutes; private String name; + private NetworkPeering networkPeering; private String peerNetwork; Builder() {} @@ -129,6 +150,9 @@ public Builder mergeFrom(NetworksAddPeeringRequest other) { if (other.getName() != null) { this.name = other.name; } + if (other.getNetworkPeering() != null) { + this.networkPeering = other.networkPeering; + } if (other.getPeerNetwork() != null) { this.peerNetwork = other.peerNetwork; } @@ -138,15 +162,22 @@ public Builder mergeFrom(NetworksAddPeeringRequest other) { Builder(NetworksAddPeeringRequest source) { this.autoCreateRoutes = source.autoCreateRoutes; this.name = source.name; + this.networkPeering = source.networkPeering; this.peerNetwork = source.peerNetwork; } - /** Whether Google Compute Engine manages the routes automatically. */ + /** + * This field will be deprecated soon. Prefer using exchange_subnet_routes in network_peering + * instead. Whether Google Compute Engine manages the routes automatically. + */ public Boolean getAutoCreateRoutes() { return autoCreateRoutes; } - /** Whether Google Compute Engine manages the routes automatically. */ + /** + * This field will be deprecated soon. Prefer using exchange_subnet_routes in network_peering + * instead. Whether Google Compute Engine manages the routes automatically. + */ public Builder setAutoCreateRoutes(Boolean autoCreateRoutes) { this.autoCreateRoutes = autoCreateRoutes; return this; @@ -163,6 +194,27 @@ public Builder setName(String name) { return this; } + /** + * Network peering parameters. In order to specify route policies for peering using + * import/export custom routes, you will have to fill all peering related parameters (name, peer + * network, exchange_subnet_routes) in network_peeringfield. Corresponding fields in + * NetworksAddPeeringRequest will be deprecated soon. + */ + public NetworkPeering getNetworkPeering() { + return networkPeering; + } + + /** + * Network peering parameters. In order to specify route policies for peering using + * import/export custom routes, you will have to fill all peering related parameters (name, peer + * network, exchange_subnet_routes) in network_peeringfield. Corresponding fields in + * NetworksAddPeeringRequest will be deprecated soon. + */ + public Builder setNetworkPeering(NetworkPeering networkPeering) { + this.networkPeering = networkPeering; + return this; + } + /** * URL of the peer network. It can be either full URL or partial URL. The peer network may * belong to a different project. If the partial URL does not contain project, it is assumed @@ -184,13 +236,14 @@ public Builder setPeerNetwork(String peerNetwork) { public NetworksAddPeeringRequest build() { - return new NetworksAddPeeringRequest(autoCreateRoutes, name, peerNetwork); + return new NetworksAddPeeringRequest(autoCreateRoutes, name, networkPeering, peerNetwork); } public Builder clone() { Builder newBuilder = new Builder(); newBuilder.setAutoCreateRoutes(this.autoCreateRoutes); newBuilder.setName(this.name); + newBuilder.setNetworkPeering(this.networkPeering); newBuilder.setPeerNetwork(this.peerNetwork); return newBuilder; } @@ -205,6 +258,9 @@ public String toString() { + "name=" + name + ", " + + "networkPeering=" + + networkPeering + + ", " + "peerNetwork=" + peerNetwork + "}"; @@ -219,6 +275,7 @@ public boolean equals(Object o) { NetworksAddPeeringRequest that = (NetworksAddPeeringRequest) o; return Objects.equals(this.autoCreateRoutes, that.getAutoCreateRoutes()) && Objects.equals(this.name, that.getName()) + && Objects.equals(this.networkPeering, that.getNetworkPeering()) && Objects.equals(this.peerNetwork, that.getPeerNetwork()); } return false; @@ -226,6 +283,6 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(autoCreateRoutes, name, peerNetwork); + return Objects.hash(autoCreateRoutes, name, networkPeering, peerNetwork); } } diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ForwardingRuleClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ForwardingRuleClientTest.java index 88f0b6f50da5..2524e8722f74 100644 --- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ForwardingRuleClientTest.java +++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/ForwardingRuleClientTest.java @@ -247,6 +247,7 @@ public void deleteForwardingRuleExceptionTest() throws Exception { public void getForwardingRuleTest() { String iPAddress = "iPAddress-551149873"; String iPProtocol = "iPProtocol323774237"; + Boolean allPorts = true; ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]"); String creationTimestamp = "creationTimestamp567396278"; @@ -270,6 +271,7 @@ public void getForwardingRuleTest() { ForwardingRule.newBuilder() .setIPAddress(iPAddress) .setIPProtocol(iPProtocol) + .setAllPorts(allPorts) .setBackendService(backendService.toString()) .setCreationTimestamp(creationTimestamp) .setDescription(description) diff --git a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/GlobalForwardingRuleClientTest.java b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/GlobalForwardingRuleClientTest.java index 88896124384b..c7b8bd490023 100644 --- a/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/GlobalForwardingRuleClientTest.java +++ b/google-cloud-clients/google-cloud-compute/src/test/java/com/google/cloud/compute/v1/GlobalForwardingRuleClientTest.java @@ -180,6 +180,7 @@ public void deleteGlobalForwardingRuleExceptionTest() throws Exception { public void getGlobalForwardingRuleTest() { String iPAddress = "iPAddress-551149873"; String iPProtocol = "iPProtocol323774237"; + Boolean allPorts = true; ProjectGlobalBackendServiceName backendService = ProjectGlobalBackendServiceName.of("[PROJECT]", "[BACKEND_SERVICE]"); String creationTimestamp = "creationTimestamp567396278"; @@ -203,6 +204,7 @@ public void getGlobalForwardingRuleTest() { ForwardingRule.newBuilder() .setIPAddress(iPAddress) .setIPProtocol(iPProtocol) + .setAllPorts(allPorts) .setBackendService(backendService.toString()) .setCreationTimestamp(creationTimestamp) .setDescription(description) diff --git a/google-cloud-clients/google-cloud-compute/synth.metadata b/google-cloud-clients/google-cloud-compute/synth.metadata index 97f1c69653ad..a2d48230cb9f 100644 --- a/google-cloud-clients/google-cloud-compute/synth.metadata +++ b/google-cloud-clients/google-cloud-compute/synth.metadata @@ -1,18 +1,18 @@ { - "updateTime": "2019-02-09T08:37:05.422209Z", + "updateTime": "2019-02-21T08:37:13.725039Z", "sources": [ { "git": { "name": "discovery-artifact-manager", "remote": "https://github.com/googleapis/discovery-artifact-manager.git", - "sha": "9bfc9a0670b380d45348ce4539207cc1683d9960" + "sha": "08a158ea995a7cff450f31c9eb889dadaea17fbb" } }, { "generator": { "name": "artman", - "version": "0.16.11", - "dockerImage": "googleapis/artman@sha256:34191bf23693554c7dcf6a252004e0cd042074fd062751ccca884c7c5887a78a" + "version": "0.16.14", + "dockerImage": "googleapis/artman@sha256:f3d61ae45abaeefb6be5f228cda22732c2f1b00fb687c79c4bd4f2c42bb1e1a7" } } ] diff --git a/google-cloud-clients/google-cloud-container/README.md b/google-cloud-clients/google-cloud-container/README.md index e86126496456..9485e4f7983e 100644 --- a/google-cloud-clients/google-cloud-container/README.md +++ b/google-cloud-clients/google-cloud-container/README.md @@ -22,16 +22,16 @@ Add this to your pom.xml file com.google.cloud google-cloud-container - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-container:0.80.0-beta' +compile 'com.google.cloud:google-cloud-container:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-container" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-container" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-container/pom.xml b/google-cloud-clients/google-cloud-container/pom.xml index 72e4c7e0dd15..6774a2115d97 100644 --- a/google-cloud-clients/google-cloud-container/pom.xml +++ b/google-cloud-clients/google-cloud-container/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-container - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud Container https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-container @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-container diff --git a/google-cloud-clients/google-cloud-containeranalysis/README.md b/google-cloud-clients/google-cloud-containeranalysis/README.md index d886ea54149f..50b6be448b7b 100644 --- a/google-cloud-clients/google-cloud-containeranalysis/README.md +++ b/google-cloud-clients/google-cloud-containeranalysis/README.md @@ -19,16 +19,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-containeranalysis - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-containeranalysis:0.80.0-beta' +compile 'com.google.cloud:google-cloud-containeranalysis:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-containeranalysis" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-containeranalysis" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-containeranalysis/pom.xml b/google-cloud-clients/google-cloud-containeranalysis/pom.xml index 1dc99ce9cc90..f73eb1492403 100644 --- a/google-cloud-clients/google-cloud-containeranalysis/pom.xml +++ b/google-cloud-clients/google-cloud-containeranalysis/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 google-cloud-containeranalysis - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud Container Analysis https://github.com/GoogleCloudPlatform/google-cloud-java/tree/master/google-cloud-clients/google-cloud-containeranalysis @@ -15,7 +15,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-containeranalysis diff --git a/google-cloud-clients/google-cloud-contrib/README.md b/google-cloud-clients/google-cloud-contrib/README.md index 419a9bf74fec..33da17d6fc17 100644 --- a/google-cloud-clients/google-cloud-contrib/README.md +++ b/google-cloud-clients/google-cloud-contrib/README.md @@ -25,16 +25,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-contrib - 0.80.0-alpha + 0.81.0-alpha ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-contrib:0.80.0-alpha' +compile 'com.google.cloud:google-cloud-contrib:0.81.0-alpha' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-contrib" % "0.80.0-alpha" +libraryDependencies += "com.google.cloud" % "google-cloud-contrib" % "0.81.0-alpha" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-contrib/google-cloud-logging-logback/README.md b/google-cloud-clients/google-cloud-contrib/google-cloud-logging-logback/README.md index d17a160458ed..2713710bbc19 100644 --- a/google-cloud-clients/google-cloud-contrib/google-cloud-logging-logback/README.md +++ b/google-cloud-clients/google-cloud-contrib/google-cloud-logging-logback/README.md @@ -21,16 +21,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-logging-logback - 0.80.0-alpha + 0.81.0-alpha ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-logging-logback:0.80.0-alpha' +compile 'com.google.cloud:google-cloud-logging-logback:0.81.0-alpha' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-logging-logback" % "0.80.0-alpha" +libraryDependencies += "com.google.cloud" % "google-cloud-logging-logback" % "0.81.0-alpha" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-contrib/google-cloud-logging-logback/pom.xml b/google-cloud-clients/google-cloud-contrib/google-cloud-logging-logback/pom.xml index da97a7fc518c..52d44d18f2be 100644 --- a/google-cloud-clients/google-cloud-contrib/google-cloud-logging-logback/pom.xml +++ b/google-cloud-clients/google-cloud-contrib/google-cloud-logging-logback/pom.xml @@ -5,7 +5,7 @@ 4.0.0 google-cloud-logging-logback - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud Logging Logback Appender https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-contrib/google-cloud-logging-logback @@ -20,7 +20,7 @@ com.google.cloud google-cloud-contrib - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha diff --git a/google-cloud-clients/google-cloud-contrib/google-cloud-nio-examples/README.md b/google-cloud-clients/google-cloud-contrib/google-cloud-nio-examples/README.md index 27fd1ddda7fc..b0aef937d4a5 100644 --- a/google-cloud-clients/google-cloud-contrib/google-cloud-nio-examples/README.md +++ b/google-cloud-clients/google-cloud-contrib/google-cloud-nio-examples/README.md @@ -23,12 +23,12 @@ To run this example: [//]: # ({x-version-update-start:google-cloud-nio:current}) ``` - java -cp google-cloud-clients/google-cloud-contrib/google-cloud-nio/target/google-cloud-nio-0.80.1-alpha-SNAPSHOT.jar:google-cloud-clients/google-cloud-contrib/google-cloud-nio-examples/target/google-cloud-nio-examples-0.80.1-alpha-SNAPSHOT.jar com.google.cloud.nio.examples.ListFilesystems + java -cp google-cloud-clients/google-cloud-contrib/google-cloud-nio/target/google-cloud-nio-0.81.0-alpha.jar:google-cloud-clients/google-cloud-contrib/google-cloud-nio-examples/target/google-cloud-nio-examples-0.81.0-alpha.jar com.google.cloud.nio.examples.ListFilesystems ``` Notice that it lists Google Cloud Storage, which it wouldn't if you ran it without the NIO jar: ``` - java -cp google-cloud-clients/google-cloud-contrib/google-cloud-nio-examples/target/google-cloud-nio-examples-0.80.1-alpha-SNAPSHOT.jar com.google.cloud.nio.examples.ListFilesystems + java -cp google-cloud-clients/google-cloud-contrib/google-cloud-nio-examples/target/google-cloud-nio-examples-0.81.0-alpha.jar com.google.cloud.nio.examples.ListFilesystems ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-contrib/google-cloud-nio-examples/pom.xml b/google-cloud-clients/google-cloud-contrib/google-cloud-nio-examples/pom.xml index 13374167d438..989a766cb392 100644 --- a/google-cloud-clients/google-cloud-contrib/google-cloud-nio-examples/pom.xml +++ b/google-cloud-clients/google-cloud-contrib/google-cloud-nio-examples/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-nio-examples - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud NIO Examples https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-contrib/google-cloud-nio-examples @@ -12,7 +12,7 @@ com.google.cloud google-cloud-contrib - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-nio-examples diff --git a/google-cloud-clients/google-cloud-contrib/google-cloud-nio/README.md b/google-cloud-clients/google-cloud-contrib/google-cloud-nio/README.md index fd45af89e7b6..c4d1a3159a0f 100644 --- a/google-cloud-clients/google-cloud-contrib/google-cloud-nio/README.md +++ b/google-cloud-clients/google-cloud-contrib/google-cloud-nio/README.md @@ -26,16 +26,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-nio - 0.80.0-alpha + 0.81.0-alpha ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-nio:0.80.0-alpha' +compile 'com.google.cloud:google-cloud-nio:0.81.0-alpha' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-nio" % "0.80.0-alpha" +libraryDependencies += "com.google.cloud" % "google-cloud-nio" % "0.81.0-alpha" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-contrib/google-cloud-nio/pom.xml b/google-cloud-clients/google-cloud-contrib/google-cloud-nio/pom.xml index 47421db21351..745ec200b55e 100644 --- a/google-cloud-clients/google-cloud-contrib/google-cloud-nio/pom.xml +++ b/google-cloud-clients/google-cloud-contrib/google-cloud-nio/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-nio - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud NIO https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-contrib/google-cloud-nio @@ -12,7 +12,7 @@ com.google.cloud google-cloud-contrib - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-nio diff --git a/google-cloud-clients/google-cloud-contrib/pom.xml b/google-cloud-clients/google-cloud-contrib/pom.xml index 8db326e8d004..03ebc489880c 100644 --- a/google-cloud-clients/google-cloud-contrib/pom.xml +++ b/google-cloud-clients/google-cloud-contrib/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-contrib - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha pom Google Cloud Contributions https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-contrib @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-contrib diff --git a/google-cloud-clients/google-cloud-core-grpc/pom.xml b/google-cloud-clients/google-cloud-core-grpc/pom.xml index 6c62f3522b19..7e41769571f7 100644 --- a/google-cloud-clients/google-cloud-core-grpc/pom.xml +++ b/google-cloud-clients/google-cloud-core-grpc/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-core-grpc - 1.62.1-SNAPSHOT + 1.63.0 jar Google Cloud Core gRPC https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-core-grpc @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-core-grpc diff --git a/google-cloud-clients/google-cloud-core-http/pom.xml b/google-cloud-clients/google-cloud-core-http/pom.xml index cacb306965b0..5be8fbc79dd6 100644 --- a/google-cloud-clients/google-cloud-core-http/pom.xml +++ b/google-cloud-clients/google-cloud-core-http/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-core-http - 1.62.1-SNAPSHOT + 1.63.0 jar Google Cloud Core HTTP https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-core-http @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-core-http diff --git a/google-cloud-clients/google-cloud-core/README.md b/google-cloud-clients/google-cloud-core/README.md index 077683adc00e..d1b6c66d0b53 100644 --- a/google-cloud-clients/google-cloud-core/README.md +++ b/google-cloud-clients/google-cloud-core/README.md @@ -19,16 +19,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-core - 1.62.0 + 1.63.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-core:1.62.0' +compile 'com.google.cloud:google-cloud-core:1.63.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-core" % "1.62.0" +libraryDependencies += "com.google.cloud" % "google-cloud-core" % "1.63.0" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-core/pom.xml b/google-cloud-clients/google-cloud-core/pom.xml index 15dbae2f9ac2..fa933b896e4d 100644 --- a/google-cloud-clients/google-cloud-core/pom.xml +++ b/google-cloud-clients/google-cloud-core/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-core - 1.62.1-SNAPSHOT + 1.63.0 jar Google Cloud Core https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-core @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-core @@ -37,7 +37,6 @@ - com.google.code.findbugs jsr305 diff --git a/google-cloud-clients/google-cloud-dataproc/README.md b/google-cloud-clients/google-cloud-dataproc/README.md index 9408ecb334b3..d5e194c26c2c 100644 --- a/google-cloud-clients/google-cloud-dataproc/README.md +++ b/google-cloud-clients/google-cloud-dataproc/README.md @@ -22,16 +22,16 @@ Add this to your pom.xml file com.google.cloud google-cloud-dataproc - 0.80.0-alpha + 0.81.0-alpha ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-dataproc:0.80.0-alpha' +compile 'com.google.cloud:google-cloud-dataproc:0.81.0-alpha' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-dataproc" % "0.80.0-alpha" +libraryDependencies += "com.google.cloud" % "google-cloud-dataproc" % "0.81.0-alpha" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-dataproc/pom.xml b/google-cloud-clients/google-cloud-dataproc/pom.xml index 489c1e17b876..a414f18ea133 100644 --- a/google-cloud-clients/google-cloud-dataproc/pom.xml +++ b/google-cloud-clients/google-cloud-dataproc/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-dataproc - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud Dataproc https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-dataproc @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-dataproc diff --git a/google-cloud-clients/google-cloud-datastore/README.md b/google-cloud-clients/google-cloud-datastore/README.md index 973c5ca111c2..dc8611097043 100644 --- a/google-cloud-clients/google-cloud-datastore/README.md +++ b/google-cloud-clients/google-cloud-datastore/README.md @@ -19,16 +19,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-datastore - 1.62.0 + 1.63.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-datastore:1.62.0' +compile 'com.google.cloud:google-cloud-datastore:1.63.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "1.62.0" +libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "1.63.0" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-datastore/pom.xml b/google-cloud-clients/google-cloud-datastore/pom.xml index 3355d230b44c..29490d5501db 100644 --- a/google-cloud-clients/google-cloud-datastore/pom.xml +++ b/google-cloud-clients/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 1.62.1-SNAPSHOT + 1.63.0 jar Google Cloud Datastore https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-datastore diff --git a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/QueryResults.java b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/QueryResults.java index 27c6f19aebf4..3f73824dcdbc 100644 --- a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/QueryResults.java +++ b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/QueryResults.java @@ -16,6 +16,7 @@ package com.google.cloud.datastore; +import com.google.datastore.v1.QueryResultBatch; import java.util.Iterator; /** @@ -66,4 +67,7 @@ public interface QueryResults extends Iterator { * }

*/ int getSkippedResults(); + + /** Returns MoreResults state of the query after the current batch. */ + QueryResultBatch.MoreResultsType getMoreResults(); } diff --git a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/QueryResultsImpl.java b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/QueryResultsImpl.java index c6179686707e..3c8bba10a089 100644 --- a/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/QueryResultsImpl.java +++ b/google-cloud-clients/google-cloud-datastore/src/main/java/com/google/cloud/datastore/QueryResultsImpl.java @@ -37,6 +37,7 @@ class QueryResultsImpl extends AbstractIterator implements QueryResults private boolean lastBatch; private Iterator entityResultPbIter; private ByteString cursor; + private MoreResultsType moreResults; QueryResultsImpl( DatastoreImpl datastore, com.google.datastore.v1.ReadOptions readOptionsPb, Query query) { @@ -74,7 +75,8 @@ private void sendRequest() { if (mostRecentQueryPb == null) { mostRecentQueryPb = requestPb.getQuery(); } - lastBatch = runQueryResponsePb.getBatch().getMoreResults() != MoreResultsType.NOT_FINISHED; + moreResults = runQueryResponsePb.getBatch().getMoreResults(); + lastBatch = moreResults != MoreResultsType.NOT_FINISHED; entityResultPbIter = runQueryResponsePb.getBatch().getEntityResultsList().iterator(); actualResultType = ResultType.fromPb(runQueryResponsePb.getBatch().getEntityResultType()); if (Objects.equals(queryResultType, ResultType.PROJECTION_ENTITY)) { @@ -117,4 +119,9 @@ public Cursor getCursorAfter() { public int getSkippedResults() { return runQueryResponsePb.getBatch().getSkippedResults(); } + + @Override + public MoreResultsType getMoreResults() { + return moreResults; + } } diff --git a/google-cloud-clients/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java b/google-cloud-clients/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java index 25d9c9d88c40..2183a4983efd 100644 --- a/google-cloud-clients/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java +++ b/google-cloud-clients/google-cloud-datastore/src/test/java/com/google/cloud/datastore/DatastoreTest.java @@ -585,6 +585,26 @@ public void testStructuredQueryPagination() throws DatastoreException { EasyMock.verify(rpcFactoryMock, rpcMock); } + @Test + public void testStructuredQueryPaginationWithMoreResults() throws DatastoreException { + List responses = buildResponsesForQueryPagination(); + for (int i = 0; i < responses.size(); i++) { + EasyMock.expect(rpcMock.runQuery(EasyMock.anyObject(RunQueryRequest.class))) + .andReturn(responses.get(i)); + } + EasyMock.replay(rpcFactoryMock, rpcMock); + Datastore datastore = rpcMockOptions.getService(); + QueryResults results = datastore.run(Query.newKeyQueryBuilder().build()); + int count = 0; + while (results.hasNext()) { + count += 1; + results.next(); + } + assertEquals(count, 5); + assertEquals(QueryResultBatch.MoreResultsType.NO_MORE_RESULTS, results.getMoreResults()); + EasyMock.verify(rpcFactoryMock, rpcMock); + } + private List buildResponsesForQueryPagination() { Entity entity4 = Entity.newBuilder(KEY4).set("value", StringValue.of("value")).build(); Entity entity5 = Entity.newBuilder(KEY5).set("value", "value").build(); diff --git a/google-cloud-clients/google-cloud-dialogflow/README.md b/google-cloud-clients/google-cloud-dialogflow/README.md index 35d045877937..73c62b4e356e 100644 --- a/google-cloud-clients/google-cloud-dialogflow/README.md +++ b/google-cloud-clients/google-cloud-dialogflow/README.md @@ -23,16 +23,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-dialogflow - 0.80.0-alpha + 0.81.0-alpha ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-dialogflow:0.80.0-alpha' +compile 'com.google.cloud:google-cloud-dialogflow:0.81.0-alpha' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-dialogflow" % "0.80.0-alpha" +libraryDependencies += "com.google.cloud" % "google-cloud-dialogflow" % "0.81.0-alpha" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-dialogflow/pom.xml b/google-cloud-clients/google-cloud-dialogflow/pom.xml index eadd155794fb..7a5c0e006203 100644 --- a/google-cloud-clients/google-cloud-dialogflow/pom.xml +++ b/google-cloud-clients/google-cloud-dialogflow/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-dialogflow - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud Dialog Flow API https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-dialogflow @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-dialogflow diff --git a/google-cloud-clients/google-cloud-dlp/README.md b/google-cloud-clients/google-cloud-dlp/README.md index abfea3cc1d8a..df03574402f1 100644 --- a/google-cloud-clients/google-cloud-dlp/README.md +++ b/google-cloud-clients/google-cloud-dlp/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-dlp - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-dlp:0.80.0-beta' +compile 'com.google.cloud:google-cloud-dlp:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-dlp" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-dlp" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-dlp/pom.xml b/google-cloud-clients/google-cloud-dlp/pom.xml index 8fb9e48cb47c..31da102a7d7c 100644 --- a/google-cloud-clients/google-cloud-dlp/pom.xml +++ b/google-cloud-clients/google-cloud-dlp/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-dlp - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud Data Loss Prevention API https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-dlp @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-dlp diff --git a/google-cloud-clients/google-cloud-dlp/synth.metadata b/google-cloud-clients/google-cloud-dlp/synth.metadata index b435a70f2921..07d94c19e552 100644 --- a/google-cloud-clients/google-cloud-dlp/synth.metadata +++ b/google-cloud-clients/google-cloud-dlp/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-01-17T08:43:16.350139Z", + "updateTime": "2019-02-20T08:44:11.890128Z", "sources": [ { "generator": { "name": "artman", - "version": "0.16.6", - "dockerImage": "googleapis/artman@sha256:12722f2ca3fbc3b53cc6aa5f0e569d7d221b46bd876a2136497089dec5e3634e" + "version": "0.16.13", + "dockerImage": "googleapis/artman@sha256:5fd9aee1d82a00cebf425c8fa431f5457539562f5867ad9c54370f0ec9a7ccaa" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "0ac60e21a1aa86c07c1836865b35308ba8178b05", - "internalRef": "229626798" + "sha": "96cb68536cdb3c1d95c624ec0d32466cfd5fd882", + "internalRef": "234655328" } } ], diff --git a/google-cloud-clients/google-cloud-dns/README.md b/google-cloud-clients/google-cloud-dns/README.md index 5e3eed67ad18..0faa65043567 100644 --- a/google-cloud-clients/google-cloud-dns/README.md +++ b/google-cloud-clients/google-cloud-dns/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-dns - 0.80.0-alpha + 0.81.0-alpha ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-dns:0.80.0-alpha' +compile 'com.google.cloud:google-cloud-dns:0.81.0-alpha' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-dns" % "0.80.0-alpha" +libraryDependencies += "com.google.cloud" % "google-cloud-dns" % "0.81.0-alpha" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-dns/pom.xml b/google-cloud-clients/google-cloud-dns/pom.xml index b28b104158e5..d202dc6a2de3 100644 --- a/google-cloud-clients/google-cloud-dns/pom.xml +++ b/google-cloud-clients/google-cloud-dns/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 google-cloud-dns - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud DNS https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-dns @@ -14,7 +14,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-dns diff --git a/google-cloud-clients/google-cloud-errorreporting/README.md b/google-cloud-clients/google-cloud-errorreporting/README.md index 1afbdd6f16ac..86749d004426 100644 --- a/google-cloud-clients/google-cloud-errorreporting/README.md +++ b/google-cloud-clients/google-cloud-errorreporting/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-errorreporting - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-errorreporting:0.80.0-beta' +compile 'com.google.cloud:google-cloud-errorreporting:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-errorreporting" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-errorreporting" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-errorreporting/pom.xml b/google-cloud-clients/google-cloud-errorreporting/pom.xml index 3a25daf5771f..77c72cbe9bb3 100644 --- a/google-cloud-clients/google-cloud-errorreporting/pom.xml +++ b/google-cloud-clients/google-cloud-errorreporting/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-errorreporting - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud Error Reporting https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-errorreporting @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-errorreporting diff --git a/google-cloud-clients/google-cloud-firestore/README.md b/google-cloud-clients/google-cloud-firestore/README.md index 87298168887c..2b55454100c2 100644 --- a/google-cloud-clients/google-cloud-firestore/README.md +++ b/google-cloud-clients/google-cloud-firestore/README.md @@ -17,16 +17,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-firestore - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-firestore:0.80.0-beta' +compile 'com.google.cloud:google-cloud-firestore:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-firestore" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-firestore" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-firestore/pom.xml b/google-cloud-clients/google-cloud-firestore/pom.xml index a5512fcd3892..98d641fba528 100644 --- a/google-cloud-clients/google-cloud-firestore/pom.xml +++ b/google-cloud-clients/google-cloud-firestore/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 google-cloud-firestore - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud Firestore https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-firestore @@ -15,7 +15,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-firestore diff --git a/google-cloud-clients/google-cloud-iamcredentials/README.md b/google-cloud-clients/google-cloud-iamcredentials/README.md index c8d4a1dfe089..0b04d516f458 100644 --- a/google-cloud-clients/google-cloud-iamcredentials/README.md +++ b/google-cloud-clients/google-cloud-iamcredentials/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-iamcredentials - 0.7.0-alpha + 0.8.0-alpha ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-iamcredentials:0.7.0-alpha' +compile 'com.google.cloud:google-cloud-iamcredentials:0.8.0-alpha' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-iamcredentials" % "0.7.0-alpha" +libraryDependencies += "com.google.cloud" % "google-cloud-iamcredentials" % "0.8.0-alpha" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-iamcredentials/pom.xml b/google-cloud-clients/google-cloud-iamcredentials/pom.xml index dc79b7e4b57e..1d8896b72e18 100644 --- a/google-cloud-clients/google-cloud-iamcredentials/pom.xml +++ b/google-cloud-clients/google-cloud-iamcredentials/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-iamcredentials - 0.7.1-alpha-SNAPSHOT + 0.8.0-alpha jar Google Cloud Java Client for IAM Service Account Credentials API https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-iamcredentials @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-iamcredentials diff --git a/google-cloud-clients/google-cloud-iot/README.md b/google-cloud-clients/google-cloud-iot/README.md index 4895b8ae9734..a78a483a368f 100644 --- a/google-cloud-clients/google-cloud-iot/README.md +++ b/google-cloud-clients/google-cloud-iot/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-iot - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-iot:0.80.0-beta' +compile 'com.google.cloud:google-cloud-iot:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-iot" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-iot" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-iot/pom.xml b/google-cloud-clients/google-cloud-iot/pom.xml index 46e3c293e077..f8eb6ffffca3 100644 --- a/google-cloud-clients/google-cloud-iot/pom.xml +++ b/google-cloud-clients/google-cloud-iot/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-iot - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud IoT https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-iot @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-iot diff --git a/google-cloud-clients/google-cloud-kms/README.md b/google-cloud-clients/google-cloud-kms/README.md index c361bb73fdc8..77a68216b0fa 100644 --- a/google-cloud-clients/google-cloud-kms/README.md +++ b/google-cloud-clients/google-cloud-kms/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-kms - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-kms:0.80.0-beta' +compile 'com.google.cloud:google-cloud-kms:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-kms" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-kms" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) @@ -55,6 +55,9 @@ You will need a [Google Developers Console](https://console.developers.google.co #### Installation and setup You'll need to obtain the `google-cloud-kms` library. See the [Quickstart](#quickstart) section to add `google-cloud-kms` as a dependency in your code. +#### Examples +More information including Java getting started examples can be found in the [KMS documentation](https://cloud.google.com/kms/docs/reference/libraries). + Troubleshooting --------------- diff --git a/google-cloud-clients/google-cloud-kms/pom.xml b/google-cloud-clients/google-cloud-kms/pom.xml index 5ae3eceeb33f..c9f32187a052 100644 --- a/google-cloud-clients/google-cloud-kms/pom.xml +++ b/google-cloud-clients/google-cloud-kms/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-kms - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud KMS https://github.com/GoogleCloudPlatform/google-cloud-java/tree/master/google-cloud-clients/google-cloud-kms @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-kms-v1 diff --git a/google-cloud-clients/google-cloud-kms/src/test/java/com/google/cloud/kms/it/ITKmsTest.java b/google-cloud-clients/google-cloud-kms/src/test/java/com/google/cloud/kms/it/ITKmsTest.java new file mode 100644 index 000000000000..ad4b65a9ed88 --- /dev/null +++ b/google-cloud-clients/google-cloud-kms/src/test/java/com/google/cloud/kms/it/ITKmsTest.java @@ -0,0 +1,87 @@ +/* + * Copyright 2019 Google LLC + * + * 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 + * + * https://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 com.google.cloud.kms.it; + +import com.google.auth.oauth2.GoogleCredentials; +import com.google.cloud.ServiceOptions; +import com.google.cloud.kms.v1.*; +import io.grpc.*; +import io.grpc.auth.MoreCallCredentials; +import io.grpc.stub.MetadataUtils; +import java.io.IOException; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class ITKmsTest { + private static final String KMS_KEY_RING_LOCATION = "us"; + private static final String KMS_KEY_RING_NAME = "gcs_test_kms_key_ring"; + private static Metadata requestParamsHeader = new Metadata(); + private static Metadata.Key requestParamsKey = + Metadata.Key.of("x-goog-request-params", Metadata.ASCII_STRING_MARSHALLER); + private static KeyManagementServiceGrpc.KeyManagementServiceBlockingStub kmsStub; + + @Before + public void setUp() throws IOException { + GoogleCredentials credentials = GoogleCredentials.getApplicationDefault(); + ManagedChannel kmsChannel = + ManagedChannelBuilder.forTarget("cloudkms.googleapis.com:443").build(); + kmsStub = + KeyManagementServiceGrpc.newBlockingStub(kmsChannel) + .withCallCredentials(MoreCallCredentials.from(credentials)); + } + + @Test + public void ensureKmsKeyRingExists() { + String projectId = ServiceOptions.getDefaultProjectId(); + KeyRing keyRing = getKeyRing(kmsStub, projectId); + Assert.assertNotNull(keyRing); + } + + private static KeyRing getKeyRing( + KeyManagementServiceGrpc.KeyManagementServiceBlockingStub kmsStub, String projectId) + throws StatusRuntimeException { + String kmsKeyRingResourcePath = + KeyRingName.of(projectId, ITKmsTest.KMS_KEY_RING_LOCATION, ITKmsTest.KMS_KEY_RING_NAME) + .toString(); + try { + GetKeyRingRequest getKeyRingRequest = + GetKeyRingRequest.newBuilder().setName(kmsKeyRingResourcePath).build(); + requestParamsHeader.put(requestParamsKey, "name=" + kmsKeyRingResourcePath); + KeyManagementServiceGrpc.KeyManagementServiceBlockingStub stubForGetKeyRing = + MetadataUtils.attachHeaders(kmsStub, requestParamsHeader); + return stubForGetKeyRing.getKeyRing(getKeyRingRequest); + } catch (StatusRuntimeException ex) { + if (ex.getStatus().getCode() == Status.Code.NOT_FOUND) { + String keyRingParent = + LocationName.of(projectId, ITKmsTest.KMS_KEY_RING_LOCATION).toString(); + CreateKeyRingRequest createKeyRingRequest = + CreateKeyRingRequest.newBuilder() + .setParent(keyRingParent) + .setKeyRingId(ITKmsTest.KMS_KEY_RING_NAME) + .build(); + requestParamsHeader.put(requestParamsKey, "parent=" + keyRingParent); + KeyManagementServiceGrpc.KeyManagementServiceBlockingStub stubForCreateKeyRing = + MetadataUtils.attachHeaders(kmsStub, requestParamsHeader); + return stubForCreateKeyRing.createKeyRing(createKeyRingRequest); + } else { + Assert.fail("Error creating or looking up key"); + } + } + return null; + } +} diff --git a/google-cloud-clients/google-cloud-kms/synth.metadata b/google-cloud-clients/google-cloud-kms/synth.metadata index af2fb47b3210..be869afff31b 100644 --- a/google-cloud-clients/google-cloud-kms/synth.metadata +++ b/google-cloud-clients/google-cloud-kms/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-01-17T08:45:26.677473Z", + "updateTime": "2019-02-16T08:46:53.347663Z", "sources": [ { "generator": { "name": "artman", - "version": "0.16.6", - "dockerImage": "googleapis/artman@sha256:12722f2ca3fbc3b53cc6aa5f0e569d7d221b46bd876a2136497089dec5e3634e" + "version": "0.16.13", + "dockerImage": "googleapis/artman@sha256:5fd9aee1d82a00cebf425c8fa431f5457539562f5867ad9c54370f0ec9a7ccaa" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "0ac60e21a1aa86c07c1836865b35308ba8178b05", - "internalRef": "229626798" + "sha": "1a4f0f12777dc2f8bf2c2ce84438329639c75e29", + "internalRef": "234149430" } } ], diff --git a/google-cloud-clients/google-cloud-language/README.md b/google-cloud-clients/google-cloud-language/README.md index 6075e5793031..c77874cc74fe 100644 --- a/google-cloud-clients/google-cloud-language/README.md +++ b/google-cloud-clients/google-cloud-language/README.md @@ -19,16 +19,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-language - 1.62.0 + 1.63.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-language:1.62.0' +compile 'com.google.cloud:google-cloud-language:1.63.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-language" % "1.62.0" +libraryDependencies += "com.google.cloud" % "google-cloud-language" % "1.63.0" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-language/pom.xml b/google-cloud-clients/google-cloud-language/pom.xml index 81640b559916..135cd6cb8430 100644 --- a/google-cloud-clients/google-cloud-language/pom.xml +++ b/google-cloud-clients/google-cloud-language/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 google-cloud-language - 1.62.1-SNAPSHOT + 1.63.0 jar Google Cloud Natural Language https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-language @@ -15,7 +15,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-language diff --git a/google-cloud-clients/google-cloud-logging/README.md b/google-cloud-clients/google-cloud-logging/README.md index b1ae4c554a9f..e89d0e3023fc 100644 --- a/google-cloud-clients/google-cloud-logging/README.md +++ b/google-cloud-clients/google-cloud-logging/README.md @@ -19,16 +19,16 @@ Add this to your pom.xml file com.google.cloud google-cloud-logging - 1.62.0 + 1.63.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-logging:1.62.0' +compile 'com.google.cloud:google-cloud-logging:1.63.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-logging" % "1.62.0" +libraryDependencies += "com.google.cloud" % "google-cloud-logging" % "1.63.0" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-logging/pom.xml b/google-cloud-clients/google-cloud-logging/pom.xml index 12c2f4c20775..63455fce3819 100644 --- a/google-cloud-clients/google-cloud-logging/pom.xml +++ b/google-cloud-clients/google-cloud-logging/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-logging - 1.62.1-SNAPSHOT + 1.63.0 jar Google Cloud Logging https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-logging @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-logging diff --git a/google-cloud-clients/google-cloud-monitoring/README.md b/google-cloud-clients/google-cloud-monitoring/README.md index f18db0f328f4..53db207dfb73 100644 --- a/google-cloud-clients/google-cloud-monitoring/README.md +++ b/google-cloud-clients/google-cloud-monitoring/README.md @@ -19,16 +19,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-monitoring - 1.62.0 + 1.63.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-monitoring:1.62.0' +compile 'com.google.cloud:google-cloud-monitoring:1.63.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-monitoring" % "1.62.0" +libraryDependencies += "com.google.cloud" % "google-cloud-monitoring" % "1.63.0" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-monitoring/pom.xml b/google-cloud-clients/google-cloud-monitoring/pom.xml index baa3ee5c35ae..109bac305962 100644 --- a/google-cloud-clients/google-cloud-monitoring/pom.xml +++ b/google-cloud-clients/google-cloud-monitoring/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-monitoring - 1.62.1-SNAPSHOT + 1.63.0 jar Google Cloud Monitoring https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-monitoring @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-monitoring diff --git a/google-cloud-clients/google-cloud-notification/README.md b/google-cloud-clients/google-cloud-notification/README.md index e714a4c221c9..aeaff5cbd62c 100644 --- a/google-cloud-clients/google-cloud-notification/README.md +++ b/google-cloud-clients/google-cloud-notification/README.md @@ -17,16 +17,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-notification - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-notification:0.80.0-beta' +compile 'com.google.cloud:google-cloud-notification:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-notification" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-notification" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-notification/pom.xml b/google-cloud-clients/google-cloud-notification/pom.xml index 8e288f981ec8..1d7b53d299e3 100644 --- a/google-cloud-clients/google-cloud-notification/pom.xml +++ b/google-cloud-clients/google-cloud-notification/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 google-cloud-notification - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud Pub/Sub Notifications for GCS https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-notification @@ -15,7 +15,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-notification diff --git a/google-cloud-clients/google-cloud-os-login/README.md b/google-cloud-clients/google-cloud-os-login/README.md index 08514b04f9d8..a0ef20e4e80e 100644 --- a/google-cloud-clients/google-cloud-os-login/README.md +++ b/google-cloud-clients/google-cloud-os-login/README.md @@ -22,16 +22,16 @@ Add this to your pom.xml file com.google.cloud google-cloud-os-login - 0.80.0-alpha + 0.81.0-alpha ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-os-login:0.80.0-alpha' +compile 'com.google.cloud:google-cloud-os-login:0.81.0-alpha' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-os-login" % "0.80.0-alpha" +libraryDependencies += "com.google.cloud" % "google-cloud-os-login" % "0.81.0-alpha" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-os-login/pom.xml b/google-cloud-clients/google-cloud-os-login/pom.xml index f17a6c00b849..d55abf1731de 100644 --- a/google-cloud-clients/google-cloud-os-login/pom.xml +++ b/google-cloud-clients/google-cloud-os-login/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-os-login - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud OS Login https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-os-login @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-os-login diff --git a/google-cloud-clients/google-cloud-pubsub/README.md b/google-cloud-clients/google-cloud-pubsub/README.md index cd2829d411f4..97e347b7769e 100644 --- a/google-cloud-clients/google-cloud-pubsub/README.md +++ b/google-cloud-clients/google-cloud-pubsub/README.md @@ -19,16 +19,16 @@ Add this to your pom.xml file com.google.cloud google-cloud-pubsub - 1.62.0 + 1.63.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-pubsub:1.62.0' +compile 'com.google.cloud:google-cloud-pubsub:1.63.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-pubsub" % "1.62.0" +libraryDependencies += "com.google.cloud" % "google-cloud-pubsub" % "1.63.0" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-pubsub/pom.xml b/google-cloud-clients/google-cloud-pubsub/pom.xml index 429e53b8df10..b4ee9c8b37ff 100644 --- a/google-cloud-clients/google-cloud-pubsub/pom.xml +++ b/google-cloud-clients/google-cloud-pubsub/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-pubsub - 1.62.1-SNAPSHOT + 1.63.0 jar Google Cloud Pub/Sub https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-pubsub @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-pubsub diff --git a/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java b/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java index 83545a032e92..e841967b5a73 100644 --- a/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java +++ b/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java @@ -479,10 +479,13 @@ public static class Builder extends StubSettings.BuildernewArrayList( - StatusCode.Code.DEADLINE_EXCEEDED, StatusCode.Code.UNAVAILABLE))); - definitions.put("non_idempotent", ImmutableSet.copyOf(Lists.newArrayList())); + StatusCode.Code.ABORTED, StatusCode.Code.UNAVAILABLE, StatusCode.Code.UNKNOWN))); definitions.put( - "one_plus_delivery", + "non_idempotent", + ImmutableSet.copyOf(Lists.newArrayList(StatusCode.Code.UNAVAILABLE))); + definitions.put("none", ImmutableSet.copyOf(Lists.newArrayList())); + definitions.put( + "publish", ImmutableSet.copyOf( Lists.newArrayList( StatusCode.Code.ABORTED, @@ -584,12 +587,12 @@ private static Builder initDefaults(Builder builder) { builder .createTopicSettings() - .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default")); builder .updateTopicSettings() - .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default")); builder @@ -606,7 +609,7 @@ private static Builder initDefaults(Builder builder) { .build()); builder .publishSettings() - .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("one_plus_delivery")) + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("publish")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("messaging")); builder @@ -626,7 +629,7 @@ private static Builder initDefaults(Builder builder) { builder .deleteTopicSettings() - .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default")); builder diff --git a/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java b/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java index 4ba60dea6b45..f0bc52496598 100644 --- a/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java +++ b/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java @@ -479,16 +479,11 @@ public static class Builder extends StubSettings.BuildernewArrayList( - StatusCode.Code.DEADLINE_EXCEEDED, StatusCode.Code.UNAVAILABLE))); + StatusCode.Code.ABORTED, StatusCode.Code.UNAVAILABLE, StatusCode.Code.UNKNOWN))); definitions.put( - "pull", - ImmutableSet.copyOf( - Lists.newArrayList( - StatusCode.Code.DEADLINE_EXCEEDED, - StatusCode.Code.INTERNAL, - StatusCode.Code.RESOURCE_EXHAUSTED, - StatusCode.Code.UNAVAILABLE))); - definitions.put("non_idempotent", ImmutableSet.copyOf(Lists.newArrayList())); + "non_idempotent", + ImmutableSet.copyOf(Lists.newArrayList(StatusCode.Code.UNAVAILABLE))); + definitions.put("none", ImmutableSet.copyOf(Lists.newArrayList())); RETRYABLE_CODE_DEFINITIONS = definitions.build(); } @@ -622,7 +617,7 @@ private static Builder initDefaults(Builder builder) { builder .updateSubscriptionSettings() - .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default")); builder @@ -632,7 +627,7 @@ private static Builder initDefaults(Builder builder) { builder .deleteSubscriptionSettings() - .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default")); builder @@ -642,12 +637,12 @@ private static Builder initDefaults(Builder builder) { builder .acknowledgeSettings() - .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("messaging")); builder .pullSettings() - .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("pull")) + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("messaging")); builder @@ -662,22 +657,22 @@ private static Builder initDefaults(Builder builder) { builder .createSnapshotSettings() - .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default")); builder .updateSnapshotSettings() - .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default")); builder .deleteSnapshotSettings() - .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default")); builder .seekSettings() - .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent")) + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default")); builder diff --git a/google-cloud-clients/google-cloud-pubsub/synth.metadata b/google-cloud-clients/google-cloud-pubsub/synth.metadata index 7af19ab59c17..d8183652373c 100644 --- a/google-cloud-clients/google-cloud-pubsub/synth.metadata +++ b/google-cloud-clients/google-cloud-pubsub/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-01-17T08:48:48.620536Z", + "updateTime": "2019-02-13T08:46:41.544485Z", "sources": [ { "generator": { "name": "artman", - "version": "0.16.6", - "dockerImage": "googleapis/artman@sha256:12722f2ca3fbc3b53cc6aa5f0e569d7d221b46bd876a2136497089dec5e3634e" + "version": "0.16.13", + "dockerImage": "googleapis/artman@sha256:5fd9aee1d82a00cebf425c8fa431f5457539562f5867ad9c54370f0ec9a7ccaa" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "0ac60e21a1aa86c07c1836865b35308ba8178b05", - "internalRef": "229626798" + "sha": "ca61898878f0926dd9dcc68ba90764f17133efe4", + "internalRef": "233680013" } } ], diff --git a/google-cloud-clients/google-cloud-redis/README.md b/google-cloud-clients/google-cloud-redis/README.md index 49df6c32f749..d9804273ba60 100644 --- a/google-cloud-clients/google-cloud-redis/README.md +++ b/google-cloud-clients/google-cloud-redis/README.md @@ -22,16 +22,16 @@ Add this to your pom.xml file com.google.cloud google-cloud-redis - 0.80.0-alpha + 0.81.0-alpha ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-redis:0.80.0-alpha' +compile 'com.google.cloud:google-cloud-redis:0.81.0-alpha' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-redis" % "0.80.0-alpha" +libraryDependencies += "com.google.cloud" % "google-cloud-redis" % "0.81.0-alpha" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-redis/pom.xml b/google-cloud-clients/google-cloud-redis/pom.xml index 806db650d91b..e6d7311d4f88 100644 --- a/google-cloud-clients/google-cloud-redis/pom.xml +++ b/google-cloud-clients/google-cloud-redis/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-redis - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud Redis https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-redis @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-redis diff --git a/google-cloud-clients/google-cloud-resourcemanager/README.md b/google-cloud-clients/google-cloud-resourcemanager/README.md index ab544f995314..c32781288e81 100644 --- a/google-cloud-clients/google-cloud-resourcemanager/README.md +++ b/google-cloud-clients/google-cloud-resourcemanager/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-resourcemanager - 0.80.0-alpha + 0.81.0-alpha ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-resourcemanager:0.80.0-alpha' +compile 'com.google.cloud:google-cloud-resourcemanager:0.81.0-alpha' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-resourcemanager" % "0.80.0-alpha" +libraryDependencies += "com.google.cloud" % "google-cloud-resourcemanager" % "0.81.0-alpha" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-resourcemanager/pom.xml b/google-cloud-clients/google-cloud-resourcemanager/pom.xml index f7d50d487fc3..a15a461355d9 100644 --- a/google-cloud-clients/google-cloud-resourcemanager/pom.xml +++ b/google-cloud-clients/google-cloud-resourcemanager/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-resourcemanager - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud Resource Manager https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-resourcemanager @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-resourcemanager diff --git a/google-cloud-clients/google-cloud-scheduler/README.md b/google-cloud-clients/google-cloud-scheduler/README.md index 7afb2e90e258..5bbf0a9fe4cb 100644 --- a/google-cloud-clients/google-cloud-scheduler/README.md +++ b/google-cloud-clients/google-cloud-scheduler/README.md @@ -22,16 +22,16 @@ Add this to your pom.xml file com.google.cloud google-cloud-scheduler - 0.80.0-alpha + 0.81.0-alpha ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-scheduler:0.80.0-alpha' +compile 'com.google.cloud:google-cloud-scheduler:0.81.0-alpha' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-scheduler" % "0.80.0-alpha" +libraryDependencies += "com.google.cloud" % "google-cloud-scheduler" % "0.81.0-alpha" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-scheduler/pom.xml b/google-cloud-clients/google-cloud-scheduler/pom.xml index 46ea128c8b8e..0e915f6f657e 100644 --- a/google-cloud-clients/google-cloud-scheduler/pom.xml +++ b/google-cloud-clients/google-cloud-scheduler/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-scheduler - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud Scheduler https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-scheduler @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-scheduler diff --git a/google-cloud-clients/google-cloud-securitycenter/README.md b/google-cloud-clients/google-cloud-securitycenter/README.md index 6dc5485cdaa0..6b078f932c78 100644 --- a/google-cloud-clients/google-cloud-securitycenter/README.md +++ b/google-cloud-clients/google-cloud-securitycenter/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-securitycenter - 0.80.0-alpha + 0.81.0-alpha ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-securitycenter:0.80.0-alpha' +compile 'com.google.cloud:google-cloud-securitycenter:0.81.0-alpha' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-securitycenter" % "0.80.0-alpha" +libraryDependencies += "com.google.cloud" % "google-cloud-securitycenter" % "0.81.0-alpha" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-securitycenter/pom.xml b/google-cloud-clients/google-cloud-securitycenter/pom.xml index 399cbbdbe02e..0413fe778ff6 100644 --- a/google-cloud-clients/google-cloud-securitycenter/pom.xml +++ b/google-cloud-clients/google-cloud-securitycenter/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-securitycenter - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud Security Command Center https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-securitycenter @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-securitycenter diff --git a/google-cloud-clients/google-cloud-spanner/README.md b/google-cloud-clients/google-cloud-spanner/README.md index 080e129f7b16..854c9821f08c 100644 --- a/google-cloud-clients/google-cloud-spanner/README.md +++ b/google-cloud-clients/google-cloud-spanner/README.md @@ -20,16 +20,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-spanner - 1.7.0 + 1.8.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-spanner:1.7.0' +compile 'com.google.cloud:google-cloud-spanner:1.8.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "1.7.0" +libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "1.8.0" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-spanner/pom.xml b/google-cloud-clients/google-cloud-spanner/pom.xml index ef83a769431a..4eadf6d8786b 100644 --- a/google-cloud-clients/google-cloud-spanner/pom.xml +++ b/google-cloud-clients/google-cloud-spanner/pom.xml @@ -4,7 +4,7 @@ http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 google-cloud-spanner - 1.7.1-SNAPSHOT + 1.8.0 jar Google Cloud Spanner https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-spanner @@ -14,7 +14,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-spanner @@ -62,6 +62,13 @@ com.google.cloud.spanner.IntegrationTest com.google.cloud.spanner.FlakyTest + + + org.apache.maven.surefire + surefire-junit47 + 3.0.0-M3 + + diff --git a/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerImpl.java b/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerImpl.java index 36ecbc8863ad..2424cf321e16 100644 --- a/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerImpl.java +++ b/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerImpl.java @@ -1291,7 +1291,6 @@ public T run(TransactionCallable callable) { // We also do this unconditionally in case a user has modified the flag when the transaction // was running. hasPendingTransaction.remove(); - span.end(); } } @@ -2627,7 +2626,6 @@ public void close(@Nullable String message) { if (stream != null) { stream.close(message); } - span.end(); } @Override diff --git a/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerClient.java b/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerClient.java index cf6633182073..6e9c233afe6d 100644 --- a/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerClient.java +++ b/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerClient.java @@ -36,6 +36,8 @@ import com.google.spanner.v1.CreateSessionRequest; import com.google.spanner.v1.DatabaseName; import com.google.spanner.v1.DeleteSessionRequest; +import com.google.spanner.v1.ExecuteBatchDmlRequest; +import com.google.spanner.v1.ExecuteBatchDmlResponse; import com.google.spanner.v1.ExecuteSqlRequest; import com.google.spanner.v1.GetSessionRequest; import com.google.spanner.v1.ListSessionsRequest; @@ -525,7 +527,8 @@ public final UnaryCallable listSessio // AUTO-GENERATED DOCUMENTATION AND METHOD /** - * Ends a session, releasing server resources associated with it. + * Ends a session, releasing server resources associated with it. This will asynchronously trigger + * cancellation of any operations that are running with this session. * *

Sample code: * @@ -548,7 +551,8 @@ public final void deleteSession(SessionName name) { // AUTO-GENERATED DOCUMENTATION AND METHOD /** - * Ends a session, releasing server resources associated with it. + * Ends a session, releasing server resources associated with it. This will asynchronously trigger + * cancellation of any operations that are running with this session. * *

Sample code: * @@ -570,7 +574,8 @@ public final void deleteSession(String name) { // AUTO-GENERATED DOCUMENTATION AND METHOD /** - * Ends a session, releasing server resources associated with it. + * Ends a session, releasing server resources associated with it. This will asynchronously trigger + * cancellation of any operations that are running with this session. * *

Sample code: * @@ -593,7 +598,8 @@ public final void deleteSession(DeleteSessionRequest request) { // AUTO-GENERATED DOCUMENTATION AND METHOD /** - * Ends a session, releasing server resources associated with it. + * Ends a session, releasing server resources associated with it. This will asynchronously trigger + * cancellation of any operations that are running with this session. * *

Sample code: * @@ -710,6 +716,96 @@ public final UnaryCallable executeSqlCallable() { return stub.executeStreamingSqlCallable(); } + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Executes a batch of SQL DML statements. This method allows many statements to be run with lower + * latency than submitting them sequentially with + * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql]. + * + *

Statements are executed in order, sequentially. + * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse] will contain a + * [ResultSet][google.spanner.v1.ResultSet] for each DML statement that has successfully executed. + * If a statement fails, its error status will be returned as part of the + * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse]. Execution will stop at the first + * failed statement; the remaining statements will not run. + * + *

ExecuteBatchDml is expected to return an OK status with a response even if there was an + * error while processing one of the DML statements. Clients must inspect response.status to + * determine if there were any errors while processing the request. + * + *

See more details in [ExecuteBatchDmlRequest][Spanner.ExecuteBatchDmlRequest] and + * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse]. + * + *

Sample code: + * + *


+   * try (SpannerClient spannerClient = SpannerClient.create()) {
+   *   SessionName session = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]");
+   *   TransactionSelector transaction = TransactionSelector.newBuilder().build();
+   *   List<ExecuteBatchDmlRequest.Statement> statements = new ArrayList<>();
+   *   long seqno = 0L;
+   *   ExecuteBatchDmlRequest request = ExecuteBatchDmlRequest.newBuilder()
+   *     .setSession(session.toString())
+   *     .setTransaction(transaction)
+   *     .addAllStatements(statements)
+   *     .setSeqno(seqno)
+   *     .build();
+   *   ExecuteBatchDmlResponse response = spannerClient.executeBatchDml(request);
+   * }
+   * 
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ExecuteBatchDmlResponse executeBatchDml(ExecuteBatchDmlRequest request) { + return executeBatchDmlCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Executes a batch of SQL DML statements. This method allows many statements to be run with lower + * latency than submitting them sequentially with + * [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql]. + * + *

Statements are executed in order, sequentially. + * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse] will contain a + * [ResultSet][google.spanner.v1.ResultSet] for each DML statement that has successfully executed. + * If a statement fails, its error status will be returned as part of the + * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse]. Execution will stop at the first + * failed statement; the remaining statements will not run. + * + *

ExecuteBatchDml is expected to return an OK status with a response even if there was an + * error while processing one of the DML statements. Clients must inspect response.status to + * determine if there were any errors while processing the request. + * + *

See more details in [ExecuteBatchDmlRequest][Spanner.ExecuteBatchDmlRequest] and + * [ExecuteBatchDmlResponse][Spanner.ExecuteBatchDmlResponse]. + * + *

Sample code: + * + *


+   * try (SpannerClient spannerClient = SpannerClient.create()) {
+   *   SessionName session = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]");
+   *   TransactionSelector transaction = TransactionSelector.newBuilder().build();
+   *   List<ExecuteBatchDmlRequest.Statement> statements = new ArrayList<>();
+   *   long seqno = 0L;
+   *   ExecuteBatchDmlRequest request = ExecuteBatchDmlRequest.newBuilder()
+   *     .setSession(session.toString())
+   *     .setTransaction(transaction)
+   *     .addAllStatements(statements)
+   *     .setSeqno(seqno)
+   *     .build();
+   *   ApiFuture<ExecuteBatchDmlResponse> future = spannerClient.executeBatchDmlCallable().futureCall(request);
+   *   // Do something
+   *   ExecuteBatchDmlResponse response = future.get();
+   * }
+   * 
+ */ + public final UnaryCallable + executeBatchDmlCallable() { + return stub.executeBatchDmlCallable(); + } + // AUTO-GENERATED DOCUMENTATION AND METHOD /** * Reads rows from the database using key lookups and scans, as a simple key/value style diff --git a/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerSettings.java b/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerSettings.java index e6bc753f5c95..59d76f84329a 100644 --- a/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerSettings.java +++ b/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/SpannerSettings.java @@ -36,6 +36,8 @@ import com.google.spanner.v1.CommitResponse; import com.google.spanner.v1.CreateSessionRequest; import com.google.spanner.v1.DeleteSessionRequest; +import com.google.spanner.v1.ExecuteBatchDmlRequest; +import com.google.spanner.v1.ExecuteBatchDmlResponse; import com.google.spanner.v1.ExecuteSqlRequest; import com.google.spanner.v1.GetSessionRequest; import com.google.spanner.v1.ListSessionsRequest; @@ -113,6 +115,12 @@ public UnaryCallSettings executeSqlSettings() { return ((SpannerStubSettings) getStubSettings()).executeStreamingSqlSettings(); } + /** Returns the object with the settings used for calls to executeBatchDml. */ + public UnaryCallSettings + executeBatchDmlSettings() { + return ((SpannerStubSettings) getStubSettings()).executeBatchDmlSettings(); + } + /** Returns the object with the settings used for calls to read. */ public UnaryCallSettings readSettings() { return ((SpannerStubSettings) getStubSettings()).readSettings(); @@ -277,6 +285,12 @@ public UnaryCallSettings.Builder executeSqlSetting return getStubSettingsBuilder().executeStreamingSqlSettings(); } + /** Returns the builder for the settings used for calls to executeBatchDml. */ + public UnaryCallSettings.Builder + executeBatchDmlSettings() { + return getStubSettingsBuilder().executeBatchDmlSettings(); + } + /** Returns the builder for the settings used for calls to read. */ public UnaryCallSettings.Builder readSettings() { return getStubSettingsBuilder().readSettings(); diff --git a/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/GrpcSpannerStub.java b/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/GrpcSpannerStub.java index 3818afc33859..326ec0816c08 100644 --- a/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/GrpcSpannerStub.java +++ b/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/GrpcSpannerStub.java @@ -31,6 +31,8 @@ import com.google.spanner.v1.CommitResponse; import com.google.spanner.v1.CreateSessionRequest; import com.google.spanner.v1.DeleteSessionRequest; +import com.google.spanner.v1.ExecuteBatchDmlRequest; +import com.google.spanner.v1.ExecuteBatchDmlResponse; import com.google.spanner.v1.ExecuteSqlRequest; import com.google.spanner.v1.GetSessionRequest; import com.google.spanner.v1.ListSessionsRequest; @@ -107,6 +109,16 @@ public class GrpcSpannerStub extends SpannerStub { .setRequestMarshaller(ProtoUtils.marshaller(ExecuteSqlRequest.getDefaultInstance())) .setResponseMarshaller(ProtoUtils.marshaller(PartialResultSet.getDefaultInstance())) .build(); + private static final MethodDescriptor + executeBatchDmlMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.spanner.v1.Spanner/ExecuteBatchDml") + .setRequestMarshaller( + ProtoUtils.marshaller(ExecuteBatchDmlRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(ExecuteBatchDmlResponse.getDefaultInstance())) + .build(); private static final MethodDescriptor readMethodDescriptor = MethodDescriptor.newBuilder() .setType(MethodDescriptor.MethodType.UNARY) @@ -175,6 +187,8 @@ public class GrpcSpannerStub extends SpannerStub { private final UnaryCallable executeSqlCallable; private final ServerStreamingCallable executeStreamingSqlCallable; + private final UnaryCallable + executeBatchDmlCallable; private final UnaryCallable readCallable; private final ServerStreamingCallable streamingReadCallable; private final UnaryCallable beginTransactionCallable; @@ -243,6 +257,11 @@ protected GrpcSpannerStub( GrpcCallSettings.newBuilder() .setMethodDescriptor(executeStreamingSqlMethodDescriptor) .build(); + GrpcCallSettings + executeBatchDmlTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(executeBatchDmlMethodDescriptor) + .build(); GrpcCallSettings readTransportSettings = GrpcCallSettings.newBuilder() .setMethodDescriptor(readMethodDescriptor) @@ -295,6 +314,9 @@ protected GrpcSpannerStub( executeStreamingSqlTransportSettings, settings.executeStreamingSqlSettings(), clientContext); + this.executeBatchDmlCallable = + callableFactory.createUnaryCallable( + executeBatchDmlTransportSettings, settings.executeBatchDmlSettings(), clientContext); this.readCallable = callableFactory.createUnaryCallable( readTransportSettings, settings.readSettings(), clientContext); @@ -349,6 +371,10 @@ public UnaryCallable executeSqlCallable() { return executeStreamingSqlCallable; } + public UnaryCallable executeBatchDmlCallable() { + return executeBatchDmlCallable; + } + public UnaryCallable readCallable() { return readCallable; } diff --git a/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStub.java b/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStub.java index 45a0ac0dd0ed..0b72ec8200d2 100644 --- a/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStub.java +++ b/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStub.java @@ -27,6 +27,8 @@ import com.google.spanner.v1.CommitResponse; import com.google.spanner.v1.CreateSessionRequest; import com.google.spanner.v1.DeleteSessionRequest; +import com.google.spanner.v1.ExecuteBatchDmlRequest; +import com.google.spanner.v1.ExecuteBatchDmlResponse; import com.google.spanner.v1.ExecuteSqlRequest; import com.google.spanner.v1.GetSessionRequest; import com.google.spanner.v1.ListSessionsRequest; @@ -81,6 +83,10 @@ public UnaryCallable executeSqlCallable() { throw new UnsupportedOperationException("Not implemented: executeStreamingSqlCallable()"); } + public UnaryCallable executeBatchDmlCallable() { + throw new UnsupportedOperationException("Not implemented: executeBatchDmlCallable()"); + } + public UnaryCallable readCallable() { throw new UnsupportedOperationException("Not implemented: readCallable()"); } diff --git a/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStubSettings.java b/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStubSettings.java index e05a2447db75..775a86c72538 100644 --- a/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStubSettings.java +++ b/google-cloud-clients/google-cloud-spanner/src/main/java/com/google/cloud/spanner/v1/stub/SpannerStubSettings.java @@ -50,6 +50,8 @@ import com.google.spanner.v1.CommitResponse; import com.google.spanner.v1.CreateSessionRequest; import com.google.spanner.v1.DeleteSessionRequest; +import com.google.spanner.v1.ExecuteBatchDmlRequest; +import com.google.spanner.v1.ExecuteBatchDmlResponse; import com.google.spanner.v1.ExecuteSqlRequest; import com.google.spanner.v1.GetSessionRequest; import com.google.spanner.v1.ListSessionsRequest; @@ -112,6 +114,8 @@ public class SpannerStubSettings extends StubSettings { private final UnaryCallSettings executeSqlSettings; private final ServerStreamingCallSettings executeStreamingSqlSettings; + private final UnaryCallSettings + executeBatchDmlSettings; private final UnaryCallSettings readSettings; private final ServerStreamingCallSettings streamingReadSettings; private final UnaryCallSettings beginTransactionSettings; @@ -152,6 +156,12 @@ public UnaryCallSettings executeSqlSettings() { return executeStreamingSqlSettings; } + /** Returns the object with the settings used for calls to executeBatchDml. */ + public UnaryCallSettings + executeBatchDmlSettings() { + return executeBatchDmlSettings; + } + /** Returns the object with the settings used for calls to read. */ public UnaryCallSettings readSettings() { return readSettings; @@ -260,6 +270,7 @@ protected SpannerStubSettings(Builder settingsBuilder) throws IOException { deleteSessionSettings = settingsBuilder.deleteSessionSettings().build(); executeSqlSettings = settingsBuilder.executeSqlSettings().build(); executeStreamingSqlSettings = settingsBuilder.executeStreamingSqlSettings().build(); + executeBatchDmlSettings = settingsBuilder.executeBatchDmlSettings().build(); readSettings = settingsBuilder.readSettings().build(); streamingReadSettings = settingsBuilder.streamingReadSettings().build(); beginTransactionSettings = settingsBuilder.beginTransactionSettings().build(); @@ -335,6 +346,8 @@ public static class Builder extends StubSettings.Builder executeSqlSettings; private final ServerStreamingCallSettings.Builder executeStreamingSqlSettings; + private final UnaryCallSettings.Builder + executeBatchDmlSettings; private final UnaryCallSettings.Builder readSettings; private final ServerStreamingCallSettings.Builder streamingReadSettings; @@ -425,6 +438,8 @@ protected Builder(ClientContext clientContext) { executeStreamingSqlSettings = ServerStreamingCallSettings.newBuilder(); + executeBatchDmlSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + readSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); streamingReadSettings = ServerStreamingCallSettings.newBuilder(); @@ -446,6 +461,7 @@ protected Builder(ClientContext clientContext) { listSessionsSettings, deleteSessionSettings, executeSqlSettings, + executeBatchDmlSettings, readSettings, beginTransactionSettings, commitSettings, @@ -497,6 +513,11 @@ private static Builder initDefaults(Builder builder) { .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("non_idempotent")) .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("streaming")); + builder + .executeBatchDmlSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("default")); + builder .readSettings() .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) @@ -544,6 +565,7 @@ protected Builder(SpannerStubSettings settings) { deleteSessionSettings = settings.deleteSessionSettings.toBuilder(); executeSqlSettings = settings.executeSqlSettings.toBuilder(); executeStreamingSqlSettings = settings.executeStreamingSqlSettings.toBuilder(); + executeBatchDmlSettings = settings.executeBatchDmlSettings.toBuilder(); readSettings = settings.readSettings.toBuilder(); streamingReadSettings = settings.streamingReadSettings.toBuilder(); beginTransactionSettings = settings.beginTransactionSettings.toBuilder(); @@ -559,6 +581,7 @@ protected Builder(SpannerStubSettings settings) { listSessionsSettings, deleteSessionSettings, executeSqlSettings, + executeBatchDmlSettings, readSettings, beginTransactionSettings, commitSettings, @@ -616,6 +639,12 @@ public UnaryCallSettings.Builder executeSqlSetting return executeStreamingSqlSettings; } + /** Returns the builder for the settings used for calls to executeBatchDml. */ + public UnaryCallSettings.Builder + executeBatchDmlSettings() { + return executeBatchDmlSettings; + } + /** Returns the builder for the settings used for calls to read. */ public UnaryCallSettings.Builder readSettings() { return readSettings; diff --git a/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITVPCNegativeTest.java b/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITVPCNegativeTest.java new file mode 100644 index 000000000000..889830a28693 --- /dev/null +++ b/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/it/ITVPCNegativeTest.java @@ -0,0 +1,174 @@ +/* + * Copyright 2019 Google LLC + * + * 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 com.google.cloud.spanner.it; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.junit.Assume.assumeTrue; + +import com.google.cloud.spanner.DatabaseAdminClient; +import com.google.cloud.spanner.DatabaseClient; +import com.google.cloud.spanner.DatabaseId; +import com.google.cloud.spanner.ErrorCode; +import com.google.cloud.spanner.InstanceAdminClient; +import com.google.cloud.spanner.InstanceId; +import com.google.cloud.spanner.IntegrationTest; +import com.google.cloud.spanner.KeySet; +import com.google.cloud.spanner.Options; +import com.google.cloud.spanner.SessionPoolOptions; +import com.google.cloud.spanner.Spanner; +import com.google.cloud.spanner.SpannerException; +import com.google.cloud.spanner.SpannerOptions; +import java.util.Arrays; +import org.junit.After; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** Integration tests for VPC-SC */ +@Category(IntegrationTest.class) +@RunWith(JUnit4.class) +public class ITVPCNegativeTest { + private static final String IN_VPCSC_TEST = System.getenv("GOOGLE_CLOUD_TESTS_IN_VPCSC"); + private static final String OUTSIDE_VPC_PROJECT = + System.getenv("GOOGLE_CLOUD_TESTS_VPCSC_OUTSIDE_PERIMETER_PROJECT"); + + private Spanner spanner; + private InstanceAdminClient instanceAdminClient; + private DatabaseAdminClient databaseAdminClient; + private DatabaseClient databaseClient; + + @BeforeClass + public static void setUpClass() { + assumeTrue( + "To run tests, GOOGLE_CLOUD_TESTS_IN_VPCSC environment variable needs to be set to True", + IN_VPCSC_TEST != null && IN_VPCSC_TEST.equalsIgnoreCase("true")); + assertTrue( + "GOOGLE_CLOUD_TESTS_VPCSC_OUTSIDE_PERIMETER_PROJECT environment variable needs " + + "to be set to a GCP project that is outside the VPC perimeter", + OUTSIDE_VPC_PROJECT != null && OUTSIDE_VPC_PROJECT != ""); + } + + @Before + public void setUp() { + InstanceId instanceId = InstanceId.of(OUTSIDE_VPC_PROJECT, "nonexistent-instance"); + SpannerOptions options = + SpannerOptions.newBuilder() + .setProjectId(instanceId.getProject()) + .setSessionPoolOption( + SessionPoolOptions.newBuilder() + // Do not eagerly create sessions since they will fail outside the VPC. + .setMinSessions(0) + // Client shouldn't block if sessions cannot be created + .setFailIfPoolExhausted() + .build()) + .build(); + spanner = options.getService(); + instanceAdminClient = spanner.getInstanceAdminClient(); + databaseAdminClient = spanner.getDatabaseAdminClient(); + databaseClient = + spanner.getDatabaseClient( + DatabaseId.of(OUTSIDE_VPC_PROJECT, "nonexistent-instance", "nonexistent-database")); + } + + @After + public void tearDown() { + spanner.close(); + } + + private void checkExceptionForVPCError(SpannerException e) { + assertEquals(ErrorCode.PERMISSION_DENIED, e.getErrorCode()); + assertThat(e.getMessage()).contains("Request is prohibited by organization's policy"); + } + + @Test + public void deniedListInstanceConfigs() { + try { + instanceAdminClient.listInstanceConfigs(); + fail("Expected PERMISSION_DENIED SpannerException"); + } catch (SpannerException e) { + checkExceptionForVPCError(e); + } + } + + @Test + public void deniedGetInstanceConfig() { + try { + instanceAdminClient.getInstanceConfig("nonexistent-configs"); + fail("Expected PERMISSION_DENIED SpannerException"); + } catch (SpannerException e) { + checkExceptionForVPCError(e); + } + } + + @Test + public void deniedListInstances() { + try { + instanceAdminClient.listInstances(); + fail("Expected PERMISSION_DENIED SpannerException"); + } catch (SpannerException e) { + checkExceptionForVPCError(e); + } + } + + @Test + public void deniedGetInstance() { + try { + instanceAdminClient.getInstance("non-existent"); + fail("Expected PERMISSION_DENIED SpannerException"); + } catch (SpannerException e) { + checkExceptionForVPCError(e); + } + } + + @Test + public void deniedListDatabases() { + try { + databaseAdminClient.listDatabases("nonexistent-instance", Options.pageSize(1)); + fail("Expected PERMISSION_DENIED SpannerException"); + } catch (SpannerException e) { + checkExceptionForVPCError(e); + } + } + + @Test + public void deniedGetDatabase() { + try { + databaseAdminClient.getDatabase("nonexistent-instance", "nonexistent-database"); + fail("Expected PERMISSION_DENIED SpannerException"); + } catch (SpannerException e) { + checkExceptionForVPCError(e); + } + } + + @Test + public void deniedRead() { + try { + // Tests that the initial create session request returns a permission denied. + databaseClient + .singleUse() + .read("nonexistent-table", KeySet.all(), Arrays.asList("nonexistent-col")); + } catch (SpannerException e) { + checkExceptionForVPCError(e); + } + } +} diff --git a/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/MockSpannerImpl.java b/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/MockSpannerImpl.java index 0f23ffab7c33..1fc3105bca43 100644 --- a/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/MockSpannerImpl.java +++ b/google-cloud-clients/google-cloud-spanner/src/test/java/com/google/cloud/spanner/v1/MockSpannerImpl.java @@ -23,6 +23,8 @@ import com.google.spanner.v1.CommitResponse; import com.google.spanner.v1.CreateSessionRequest; import com.google.spanner.v1.DeleteSessionRequest; +import com.google.spanner.v1.ExecuteBatchDmlRequest; +import com.google.spanner.v1.ExecuteBatchDmlResponse; import com.google.spanner.v1.ExecuteSqlRequest; import com.google.spanner.v1.GetSessionRequest; import com.google.spanner.v1.ListSessionsRequest; @@ -162,6 +164,21 @@ public void executeStreamingSql( } } + @Override + public void executeBatchDml( + ExecuteBatchDmlRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof ExecuteBatchDmlResponse) { + requests.add(request); + responseObserver.onNext((ExecuteBatchDmlResponse) response); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError((Exception) response); + } else { + responseObserver.onError(new IllegalArgumentException("Unrecognized response type")); + } + } + @Override public void read(ReadRequest request, StreamObserver responseObserver) { Object response = responses.remove(); diff --git a/google-cloud-clients/google-cloud-spanner/synth.metadata b/google-cloud-clients/google-cloud-spanner/synth.metadata index a99d1a66ed2b..3ea8b3449f79 100644 --- a/google-cloud-clients/google-cloud-spanner/synth.metadata +++ b/google-cloud-clients/google-cloud-spanner/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-02-02T08:47:49.148359Z", + "updateTime": "2019-02-21T08:50:42.547323Z", "sources": [ { "generator": { "name": "artman", - "version": "0.16.8", - "dockerImage": "googleapis/artman@sha256:75bc07ef34a1de9895c18af54dc503ed3b3f3b52e85062e3360a979d2a0741e7" + "version": "0.16.14", + "dockerImage": "googleapis/artman@sha256:f3d61ae45abaeefb6be5f228cda22732c2f1b00fb687c79c4bd4f2c42bb1e1a7" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "bce093dab3e65c40eb9a37efbdc960f34df6037a", - "internalRef": "231974277" + "sha": "9cf63704bd272a40b79dde5a2b33f61104ee4f7f", + "internalRef": "234935970" } } ], diff --git a/google-cloud-clients/google-cloud-speech/README.md b/google-cloud-clients/google-cloud-speech/README.md index b826dd470c59..653187a8d8a2 100644 --- a/google-cloud-clients/google-cloud-speech/README.md +++ b/google-cloud-clients/google-cloud-speech/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-speech - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-speech:0.80.0-beta' +compile 'com.google.cloud:google-cloud-speech:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-speech" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-speech" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-speech/pom.xml b/google-cloud-clients/google-cloud-speech/pom.xml index 8bdfd79f1efa..a89e2ab0577a 100644 --- a/google-cloud-clients/google-cloud-speech/pom.xml +++ b/google-cloud-clients/google-cloud-speech/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-speech - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud Speech https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-speech @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-speech diff --git a/google-cloud-clients/google-cloud-storage/README.md b/google-cloud-clients/google-cloud-storage/README.md index 56ca5ea7dc2f..4c334a9e73c2 100644 --- a/google-cloud-clients/google-cloud-storage/README.md +++ b/google-cloud-clients/google-cloud-storage/README.md @@ -19,16 +19,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-storage - 1.62.0 + 1.63.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-storage:1.62.0' +compile 'com.google.cloud:google-cloud-storage:1.63.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-storage" % "1.62.0" +libraryDependencies += "com.google.cloud" % "google-cloud-storage" % "1.63.0" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-storage/pom.xml b/google-cloud-clients/google-cloud-storage/pom.xml index 8129a56b3c5f..9ac2d4e2ec21 100644 --- a/google-cloud-clients/google-cloud-storage/pom.xml +++ b/google-cloud-clients/google-cloud-storage/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-storage - 1.62.1-SNAPSHOT + 1.63.0 jar Google Cloud Storage https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-storage @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-storage @@ -31,6 +31,11 @@ google-api-services-storage compile + + com.google.http-client + google-http-client-apache + 2.0.0 + diff --git a/google-cloud-clients/google-cloud-storage/src/main/java/com/google/cloud/storage/BlobInfo.java b/google-cloud-clients/google-cloud-storage/src/main/java/com/google/cloud/storage/BlobInfo.java index d1bea35a9487..652636ac50dd 100644 --- a/google-cloud-clients/google-cloud-storage/src/main/java/com/google/cloud/storage/BlobInfo.java +++ b/google-cloud-clients/google-cloud-storage/src/main/java/com/google/cloud/storage/BlobInfo.java @@ -483,10 +483,11 @@ Builder setMediaLink(String mediaLink) { @Override public Builder setMetadata(Map metadata) { - this.metadata = - metadata != null - ? new HashMap<>(metadata) - : Data.>nullOf(ImmutableEmptyMap.class); + if (metadata != null) { + this.metadata = new HashMap<>(metadata); + } else { + this.metadata = (Map) Data.nullOf(ImmutableEmptyMap.class); + } return this; } diff --git a/google-cloud-clients/google-cloud-storage/src/test/java/com/google/cloud/storage/StorageImplTest.java b/google-cloud-clients/google-cloud-storage/src/test/java/com/google/cloud/storage/StorageImplTest.java index ef1fb677edcd..0d77547e7605 100644 --- a/google-cloud-clients/google-cloud-storage/src/test/java/com/google/cloud/storage/StorageImplTest.java +++ b/google-cloud-clients/google-cloud-storage/src/test/java/com/google/cloud/storage/StorageImplTest.java @@ -1662,7 +1662,10 @@ public void testSignUrl() UnsupportedEncodingException { EasyMock.replay(storageRpcMock); ServiceAccountCredentials credentials = - new ServiceAccountCredentials(null, ACCOUNT, privateKey, null, null); + ServiceAccountCredentials.newBuilder() + .setClientEmail(ACCOUNT) + .setPrivateKey(privateKey) + .build(); storage = options.toBuilder().setCredentials(credentials).build().getService(); URL url = storage.signUrl(BLOB_INFO1, 14, TimeUnit.DAYS); String stringUrl = url.toString(); @@ -1703,7 +1706,10 @@ public void testSignUrlWithHostName() UnsupportedEncodingException { EasyMock.replay(storageRpcMock); ServiceAccountCredentials credentials = - new ServiceAccountCredentials(null, ACCOUNT, privateKey, null, null); + ServiceAccountCredentials.newBuilder() + .setClientEmail(ACCOUNT) + .setPrivateKey(privateKey) + .build(); storage = options.toBuilder().setCredentials(credentials).build().getService(); URL url = storage.signUrl( @@ -1750,7 +1756,10 @@ public void testSignUrlLeadingSlash() String blobName = "/b1"; EasyMock.replay(storageRpcMock); ServiceAccountCredentials credentials = - new ServiceAccountCredentials(null, ACCOUNT, privateKey, null, null); + ServiceAccountCredentials.newBuilder() + .setClientEmail(ACCOUNT) + .setPrivateKey(privateKey) + .build(); storage = options.toBuilder().setCredentials(credentials).build().getService(); URL url = storage.signUrl(BlobInfo.newBuilder(BUCKET_NAME1, blobName).build(), 14, TimeUnit.DAYS); @@ -1792,7 +1801,10 @@ public void testSignUrlLeadingSlashWithHostName() String blobName = "/b1"; EasyMock.replay(storageRpcMock); ServiceAccountCredentials credentials = - new ServiceAccountCredentials(null, ACCOUNT, privateKey, null, null); + ServiceAccountCredentials.newBuilder() + .setClientEmail(ACCOUNT) + .setPrivateKey(privateKey) + .build(); storage = options.toBuilder().setCredentials(credentials).build().getService(); URL url = storage.signUrl( @@ -1837,7 +1849,10 @@ public void testSignUrlWithOptions() UnsupportedEncodingException { EasyMock.replay(storageRpcMock); ServiceAccountCredentials credentials = - new ServiceAccountCredentials(null, ACCOUNT, privateKey, null, null); + ServiceAccountCredentials.newBuilder() + .setClientEmail(ACCOUNT) + .setPrivateKey(privateKey) + .build(); storage = options.toBuilder().setCredentials(credentials).build().getService(); URL url = storage.signUrl( @@ -1889,7 +1904,10 @@ public void testSignUrlWithOptionsAndHostName() UnsupportedEncodingException { EasyMock.replay(storageRpcMock); ServiceAccountCredentials credentials = - new ServiceAccountCredentials(null, ACCOUNT, privateKey, null, null); + ServiceAccountCredentials.newBuilder() + .setClientEmail(ACCOUNT) + .setPrivateKey(privateKey) + .build(); storage = options.toBuilder().setCredentials(credentials).build().getService(); URL url = storage.signUrl( @@ -1948,7 +1966,10 @@ public void testSignUrlForBlobWithSpecialChars() }; EasyMock.replay(storageRpcMock); ServiceAccountCredentials credentials = - new ServiceAccountCredentials(null, ACCOUNT, privateKey, null, null); + ServiceAccountCredentials.newBuilder() + .setClientEmail(ACCOUNT) + .setPrivateKey(privateKey) + .build(); storage = options.toBuilder().setCredentials(credentials).build().getService(); for (char specialChar : specialChars) { @@ -2000,7 +2021,10 @@ public void testSignUrlForBlobWithSpecialCharsAndHostName() }; EasyMock.replay(storageRpcMock); ServiceAccountCredentials credentials = - new ServiceAccountCredentials(null, ACCOUNT, privateKey, null, null); + ServiceAccountCredentials.newBuilder() + .setClientEmail(ACCOUNT) + .setPrivateKey(privateKey) + .build(); storage = options.toBuilder().setCredentials(credentials).build().getService(); for (char specialChar : specialChars) { @@ -2050,7 +2074,10 @@ public void testSignUrlWithExtHeaders() UnsupportedEncodingException { EasyMock.replay(storageRpcMock); ServiceAccountCredentials credentials = - new ServiceAccountCredentials(null, ACCOUNT, privateKey, null, null); + ServiceAccountCredentials.newBuilder() + .setClientEmail(ACCOUNT) + .setPrivateKey(privateKey) + .build(); storage = options.toBuilder().setCredentials(credentials).build().getService(); Map extHeaders = new HashMap(); extHeaders.put("x-goog-acl", "public-read"); @@ -2107,7 +2134,10 @@ public void testSignUrlWithExtHeadersAndHostName() UnsupportedEncodingException { EasyMock.replay(storageRpcMock); ServiceAccountCredentials credentials = - new ServiceAccountCredentials(null, ACCOUNT, privateKey, null, null); + ServiceAccountCredentials.newBuilder() + .setClientEmail(ACCOUNT) + .setPrivateKey(privateKey) + .build(); storage = options.toBuilder().setCredentials(credentials).build().getService(); Map extHeaders = new HashMap(); extHeaders.put("x-goog-acl", "public-read"); @@ -2165,7 +2195,10 @@ public void testSignUrlForBlobWithSlashes() UnsupportedEncodingException { EasyMock.replay(storageRpcMock); ServiceAccountCredentials credentials = - new ServiceAccountCredentials(null, ACCOUNT, privateKey, null, null); + ServiceAccountCredentials.newBuilder() + .setClientEmail(ACCOUNT) + .setPrivateKey(privateKey) + .build(); storage = options.toBuilder().setCredentials(credentials).build().getService(); String blobName = "/foo/bar/baz #%20other cool stuff.txt"; @@ -2208,7 +2241,10 @@ public void testSignUrlForBlobWithSlashesAndHostName() UnsupportedEncodingException { EasyMock.replay(storageRpcMock); ServiceAccountCredentials credentials = - new ServiceAccountCredentials(null, ACCOUNT, privateKey, null, null); + ServiceAccountCredentials.newBuilder() + .setClientEmail(ACCOUNT) + .setPrivateKey(privateKey) + .build(); storage = options.toBuilder().setCredentials(credentials).build().getService(); String blobName = "/foo/bar/baz #%20other cool stuff.txt"; diff --git a/google-cloud-clients/google-cloud-tasks/README.md b/google-cloud-clients/google-cloud-tasks/README.md index 8a2c8d41ac1d..fbf33e062fc5 100644 --- a/google-cloud-clients/google-cloud-tasks/README.md +++ b/google-cloud-clients/google-cloud-tasks/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-tasks - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-tasks:0.80.0-beta' +compile 'com.google.cloud:google-cloud-tasks:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-tasks" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-tasks" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-tasks/pom.xml b/google-cloud-clients/google-cloud-tasks/pom.xml index b8cdb2d1c034..b3a3d80cb852 100644 --- a/google-cloud-clients/google-cloud-tasks/pom.xml +++ b/google-cloud-clients/google-cloud-tasks/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-tasks - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud Tasks https://github.com/GoogleCloudPlatform/google-cloud-java/tree/master/google-cloud-clients/google-cloud-tasks @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-tasks-v2beta2 diff --git a/google-cloud-clients/google-cloud-texttospeech/README.md b/google-cloud-clients/google-cloud-texttospeech/README.md index 605e58da5265..518d9f3fc78d 100644 --- a/google-cloud-clients/google-cloud-texttospeech/README.md +++ b/google-cloud-clients/google-cloud-texttospeech/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-texttospeech - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-texttospeech:0.80.0-beta' +compile 'com.google.cloud:google-cloud-texttospeech:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-texttospeech" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-texttospeech" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-texttospeech/pom.xml b/google-cloud-clients/google-cloud-texttospeech/pom.xml index 62ca8ccd5ac0..4a3496e808fb 100644 --- a/google-cloud-clients/google-cloud-texttospeech/pom.xml +++ b/google-cloud-clients/google-cloud-texttospeech/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-texttospeech - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud Text-to-Speech https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-texttospeech @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-texttospeech-v1beta1 diff --git a/google-cloud-clients/google-cloud-trace/README.md b/google-cloud-clients/google-cloud-trace/README.md index 0690cc5b58f4..99dbdc2092c8 100644 --- a/google-cloud-clients/google-cloud-trace/README.md +++ b/google-cloud-clients/google-cloud-trace/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-trace - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-trace:0.80.0-beta' +compile 'com.google.cloud:google-cloud-trace:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-trace" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-trace" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-trace/pom.xml b/google-cloud-clients/google-cloud-trace/pom.xml index 2d597062a18c..64454b4afd48 100644 --- a/google-cloud-clients/google-cloud-trace/pom.xml +++ b/google-cloud-clients/google-cloud-trace/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-trace - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud Trace https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-trace @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-trace diff --git a/google-cloud-clients/google-cloud-translate/README.md b/google-cloud-clients/google-cloud-translate/README.md index 0cf9b3ad23b6..73e3da0ac8b3 100644 --- a/google-cloud-clients/google-cloud-translate/README.md +++ b/google-cloud-clients/google-cloud-translate/README.md @@ -19,16 +19,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-translate - 1.62.0 + 1.63.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-translate:1.62.0' +compile 'com.google.cloud:google-cloud-translate:1.63.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-translate" % "1.62.0" +libraryDependencies += "com.google.cloud" % "google-cloud-translate" % "1.63.0" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-translate/pom.xml b/google-cloud-clients/google-cloud-translate/pom.xml index 298362685641..4a7d716969de 100644 --- a/google-cloud-clients/google-cloud-translate/pom.xml +++ b/google-cloud-clients/google-cloud-translate/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-translate - 1.62.1-SNAPSHOT + 1.63.0 jar Google Cloud Translation https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-translate @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-translate diff --git a/google-cloud-clients/google-cloud-video-intelligence/README.md b/google-cloud-clients/google-cloud-video-intelligence/README.md index 0c2a17ab9a2d..f752caab6b8f 100644 --- a/google-cloud-clients/google-cloud-video-intelligence/README.md +++ b/google-cloud-clients/google-cloud-video-intelligence/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-video-intelligence - 0.80.0-beta + 0.81.0-beta ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-video-intelligence:0.80.0-beta' +compile 'com.google.cloud:google-cloud-video-intelligence:0.81.0-beta' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-video-intelligence" % "0.80.0-beta" +libraryDependencies += "com.google.cloud" % "google-cloud-video-intelligence" % "0.81.0-beta" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-video-intelligence/pom.xml b/google-cloud-clients/google-cloud-video-intelligence/pom.xml index 901a021b6978..1f39892daa5a 100644 --- a/google-cloud-clients/google-cloud-video-intelligence/pom.xml +++ b/google-cloud-clients/google-cloud-video-intelligence/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-video-intelligence - 0.80.1-beta-SNAPSHOT + 0.81.0-beta jar Google Cloud Video Intelligence https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-video-intelligence @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-video-intelligence diff --git a/google-cloud-clients/google-cloud-video-intelligence/synth.metadata b/google-cloud-clients/google-cloud-video-intelligence/synth.metadata index f89f53c27529..c774c0cb15cf 100644 --- a/google-cloud-clients/google-cloud-video-intelligence/synth.metadata +++ b/google-cloud-clients/google-cloud-video-intelligence/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-02-02T08:50:14.214660Z", + "updateTime": "2019-02-21T08:55:19.182601Z", "sources": [ { "generator": { "name": "artman", - "version": "0.16.8", - "dockerImage": "googleapis/artman@sha256:75bc07ef34a1de9895c18af54dc503ed3b3f3b52e85062e3360a979d2a0741e7" + "version": "0.16.14", + "dockerImage": "googleapis/artman@sha256:f3d61ae45abaeefb6be5f228cda22732c2f1b00fb687c79c4bd4f2c42bb1e1a7" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "bce093dab3e65c40eb9a37efbdc960f34df6037a", - "internalRef": "231974277" + "sha": "9cf63704bd272a40b79dde5a2b33f61104ee4f7f", + "internalRef": "234935970" } } ], diff --git a/google-cloud-clients/google-cloud-vision/README.md b/google-cloud-clients/google-cloud-vision/README.md index 59f423bb0e5f..9860a03ea9aa 100644 --- a/google-cloud-clients/google-cloud-vision/README.md +++ b/google-cloud-clients/google-cloud-vision/README.md @@ -19,16 +19,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-vision - 1.62.0 + 1.63.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-vision:1.62.0' +compile 'com.google.cloud:google-cloud-vision:1.63.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-vision" % "1.62.0" +libraryDependencies += "com.google.cloud" % "google-cloud-vision" % "1.63.0" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-vision/pom.xml b/google-cloud-clients/google-cloud-vision/pom.xml index c7c8026508ae..4cd86a111df4 100644 --- a/google-cloud-clients/google-cloud-vision/pom.xml +++ b/google-cloud-clients/google-cloud-vision/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-vision - 1.62.1-SNAPSHOT + 1.63.0 jar Google Cloud Vision https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-vision @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-vision diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ImageAnnotatorClient.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ImageAnnotatorClient.java index 0dfa662c67b4..0e4ab5543008 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ImageAnnotatorClient.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ImageAnnotatorClient.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -309,7 +309,7 @@ public final BatchAnnotateImagesResponse batchAnnotateImages(BatchAnnotateImages * AsyncBatchAnnotateFilesRequest request = AsyncBatchAnnotateFilesRequest.newBuilder() * .addAllRequests(requests) * .build(); - * OperationFuture<Operation> future = imageAnnotatorClient.asyncBatchAnnotateFilesOperationCallable().futureCall(request); + * OperationFuture<AsyncBatchAnnotateFilesResponse, OperationMetadata> future = imageAnnotatorClient.asyncBatchAnnotateFilesOperationCallable().futureCall(request); * // Do something * AsyncBatchAnnotateFilesResponse response = future.get(); * } diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ImageAnnotatorSettings.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ImageAnnotatorSettings.java index b287d0b6200d..169eecdf1e38 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ImageAnnotatorSettings.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ImageAnnotatorSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ProductSearchClient.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ProductSearchClient.java index cbbfa2cd1cb5..85b6559eca0e 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ProductSearchClient.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ProductSearchClient.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -63,10 +63,10 @@ *
  * 
  * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
- *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+ *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
  *   Product product = Product.newBuilder().build();
  *   String productId = "";
- *   Product response = productSearchClient.createProduct(formattedParent, product, productId);
+ *   Product response = productSearchClient.createProduct(parent, product, productId);
  * }
  * 
  * 
@@ -130,17 +130,17 @@ public class ProductSearchClient implements BackgroundResource { private static final PathTemplate LOCATION_PATH_TEMPLATE = PathTemplate.createWithoutUrlEncoding("projects/{project}/locations/{location}"); - private static final PathTemplate PRODUCT_PATH_TEMPLATE = - PathTemplate.createWithoutUrlEncoding( - "projects/{project}/locations/{location}/products/{product}"); - private static final PathTemplate PRODUCT_SET_PATH_TEMPLATE = PathTemplate.createWithoutUrlEncoding( "projects/{project}/locations/{location}/productSets/{product_set}"); - private static final PathTemplate IMAGE_PATH_TEMPLATE = + private static final PathTemplate PRODUCT_PATH_TEMPLATE = + PathTemplate.createWithoutUrlEncoding( + "projects/{project}/locations/{location}/products/{product}"); + + private static final PathTemplate REFERENCE_IMAGE_PATH_TEMPLATE = PathTemplate.createWithoutUrlEncoding( - "projects/{project}/locations/{location}/products/{product}/referenceImages/{image}"); + "projects/{project}/locations/{location}/products/{product}/referenceImages/{reference_image}"); /** Formats a string containing the fully-qualified path to represent a location resource. */ public static final String formatLocationName(String project, String location) { @@ -149,14 +149,6 @@ public static final String formatLocationName(String project, String location) { "location", location); } - /** Formats a string containing the fully-qualified path to represent a product resource. */ - public static final String formatProductName(String project, String location, String product) { - return PRODUCT_PATH_TEMPLATE.instantiate( - "project", project, - "location", location, - "product", product); - } - /** Formats a string containing the fully-qualified path to represent a product_set resource. */ public static final String formatProductSetName( String project, String location, String productSet) { @@ -166,14 +158,24 @@ public static final String formatProductSetName( "product_set", productSet); } - /** Formats a string containing the fully-qualified path to represent a image resource. */ - public static final String formatImageName( - String project, String location, String product, String image) { - return IMAGE_PATH_TEMPLATE.instantiate( + /** Formats a string containing the fully-qualified path to represent a product resource. */ + public static final String formatProductName(String project, String location, String product) { + return PRODUCT_PATH_TEMPLATE.instantiate( + "project", project, + "location", location, + "product", product); + } + + /** + * Formats a string containing the fully-qualified path to represent a reference_image resource. + */ + public static final String formatReferenceImageName( + String project, String location, String product, String referenceImage) { + return REFERENCE_IMAGE_PATH_TEMPLATE.instantiate( "project", project, "location", location, "product", product, - "image", image); + "reference_image", referenceImage); } /** @@ -190,6 +192,29 @@ public static final String parseLocationFromLocationName(String locationName) { return LOCATION_PATH_TEMPLATE.parse(locationName).get("location"); } + /** + * Parses the project from the given fully-qualified path which represents a product_set resource. + */ + public static final String parseProjectFromProductSetName(String productSetName) { + return PRODUCT_SET_PATH_TEMPLATE.parse(productSetName).get("project"); + } + + /** + * Parses the location from the given fully-qualified path which represents a product_set + * resource. + */ + public static final String parseLocationFromProductSetName(String productSetName) { + return PRODUCT_SET_PATH_TEMPLATE.parse(productSetName).get("location"); + } + + /** + * Parses the product_set from the given fully-qualified path which represents a product_set + * resource. + */ + public static final String parseProductSetFromProductSetName(String productSetName) { + return PRODUCT_SET_PATH_TEMPLATE.parse(productSetName).get("product_set"); + } + /** Parses the project from the given fully-qualified path which represents a product resource. */ public static final String parseProjectFromProductName(String productName) { return PRODUCT_PATH_TEMPLATE.parse(productName).get("project"); @@ -208,46 +233,35 @@ public static final String parseProductFromProductName(String productName) { } /** - * Parses the project from the given fully-qualified path which represents a product_set resource. + * Parses the project from the given fully-qualified path which represents a reference_image + * resource. */ - public static final String parseProjectFromProductSetName(String productSetName) { - return PRODUCT_SET_PATH_TEMPLATE.parse(productSetName).get("project"); + public static final String parseProjectFromReferenceImageName(String referenceImageName) { + return REFERENCE_IMAGE_PATH_TEMPLATE.parse(referenceImageName).get("project"); } /** - * Parses the location from the given fully-qualified path which represents a product_set + * Parses the location from the given fully-qualified path which represents a reference_image * resource. */ - public static final String parseLocationFromProductSetName(String productSetName) { - return PRODUCT_SET_PATH_TEMPLATE.parse(productSetName).get("location"); + public static final String parseLocationFromReferenceImageName(String referenceImageName) { + return REFERENCE_IMAGE_PATH_TEMPLATE.parse(referenceImageName).get("location"); } /** - * Parses the product_set from the given fully-qualified path which represents a product_set + * Parses the product from the given fully-qualified path which represents a reference_image * resource. */ - public static final String parseProductSetFromProductSetName(String productSetName) { - return PRODUCT_SET_PATH_TEMPLATE.parse(productSetName).get("product_set"); - } - - /** Parses the project from the given fully-qualified path which represents a image resource. */ - public static final String parseProjectFromImageName(String imageName) { - return IMAGE_PATH_TEMPLATE.parse(imageName).get("project"); - } - - /** Parses the location from the given fully-qualified path which represents a image resource. */ - public static final String parseLocationFromImageName(String imageName) { - return IMAGE_PATH_TEMPLATE.parse(imageName).get("location"); + public static final String parseProductFromReferenceImageName(String referenceImageName) { + return REFERENCE_IMAGE_PATH_TEMPLATE.parse(referenceImageName).get("product"); } - /** Parses the product from the given fully-qualified path which represents a image resource. */ - public static final String parseProductFromImageName(String imageName) { - return IMAGE_PATH_TEMPLATE.parse(imageName).get("product"); - } - - /** Parses the image from the given fully-qualified path which represents a image resource. */ - public static final String parseImageFromImageName(String imageName) { - return IMAGE_PATH_TEMPLATE.parse(imageName).get("image"); + /** + * Parses the reference_image from the given fully-qualified path which represents a + * reference_image resource. + */ + public static final String parseReferenceImageFromReferenceImageName(String referenceImageName) { + return REFERENCE_IMAGE_PATH_TEMPLATE.parse(referenceImageName).get("reference_image"); } /** Constructs an instance of ProductSearchClient with default settings. */ @@ -324,10 +338,51 @@ public final OperationsClient getOperationsClient() { * *

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   Product product = Product.newBuilder().build();
    *   String productId = "";
-   *   Product response = productSearchClient.createProduct(formattedParent, product, productId);
+   *   Product response = productSearchClient.createProduct(parent, product, productId);
+   * }
+   * 
+ * + * @param parent The project in which the Product should be created. + *

Format is `projects/PROJECT_ID/locations/LOC_ID`. + * @param product The product to create. + * @param productId A user-supplied resource id for this Product. If set, the server will attempt + * to use this value as the resource id. If it is already in use, an error is returned with + * code ALREADY_EXISTS. Must be at most 128 characters long. It cannot contain the character + * `/`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Product createProduct(LocationName parent, Product product, String productId) { + + CreateProductRequest request = + CreateProductRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .setProduct(product) + .setProductId(productId) + .build(); + return createProduct(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates and returns a new product resource. + * + *

Possible errors: + * + *

* Returns INVALID_ARGUMENT if display_name is missing or longer than 4096 characters. + * * Returns INVALID_ARGUMENT if description is longer than 4096 characters. * Returns + * INVALID_ARGUMENT if product_category is missing or invalid. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
+   *   Product product = Product.newBuilder().build();
+   *   String productId = "";
+   *   Product response = productSearchClient.createProduct(parent.toString(), product, productId);
    * }
    * 
* @@ -341,7 +396,7 @@ public final OperationsClient getOperationsClient() { * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final Product createProduct(String parent, Product product, String productId) { - LOCATION_PATH_TEMPLATE.validate(parent, "createProduct"); + CreateProductRequest request = CreateProductRequest.newBuilder() .setParent(parent) @@ -365,10 +420,10 @@ public final Product createProduct(String parent, Product product, String produc * *

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   Product product = Product.newBuilder().build();
    *   CreateProductRequest request = CreateProductRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .setProduct(product)
    *     .build();
    *   Product response = productSearchClient.createProduct(request);
@@ -396,10 +451,10 @@ public final Product createProduct(CreateProductRequest request) {
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   Product product = Product.newBuilder().build();
    *   CreateProductRequest request = CreateProductRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .setProduct(product)
    *     .build();
    *   ApiFuture<Product> future = productSearchClient.createProductCallable().futureCall(request);
@@ -424,8 +479,39 @@ public final UnaryCallable createProductCallable(
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
-   *   for (Product element : productSearchClient.listProducts(formattedParent).iterateAll()) {
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
+   *   for (Product element : productSearchClient.listProducts(parent).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * 
+ * + * @param parent The project OR ProductSet from which Products should be listed. + *

Format: `projects/PROJECT_ID/locations/LOC_ID` + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListProductsPagedResponse listProducts(LocationName parent) { + ListProductsRequest request = + ListProductsRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .build(); + return listProducts(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Lists products in an unspecified order. + * + *

Possible errors: + * + *

* Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
+   *   for (Product element : productSearchClient.listProducts(parent.toString()).iterateAll()) {
    *     // doThingsWith(element);
    *   }
    * }
@@ -436,7 +522,6 @@ public final UnaryCallable createProductCallable(
    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
    */
   public final ListProductsPagedResponse listProducts(String parent) {
-    LOCATION_PATH_TEMPLATE.validate(parent, "listProducts");
     ListProductsRequest request = ListProductsRequest.newBuilder().setParent(parent).build();
     return listProducts(request);
   }
@@ -453,9 +538,9 @@ public final ListProductsPagedResponse listProducts(String parent) {
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   ListProductsRequest request = ListProductsRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .build();
    *   for (Product element : productSearchClient.listProducts(request).iterateAll()) {
    *     // doThingsWith(element);
@@ -482,9 +567,9 @@ public final ListProductsPagedResponse listProducts(ListProductsRequest request)
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   ListProductsRequest request = ListProductsRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .build();
    *   ApiFuture<ListProductsPagedResponse> future = productSearchClient.listProductsPagedCallable().futureCall(request);
    *   // Do something
@@ -511,9 +596,9 @@ public final ListProductsPagedResponse listProducts(ListProductsRequest request)
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   ListProductsRequest request = ListProductsRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .build();
    *   while (true) {
    *     ListProductsResponse response = productSearchClient.listProductsCallable().call(request);
@@ -546,8 +631,36 @@ public final UnaryCallable listProduc
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]");
-   *   Product response = productSearchClient.getProduct(formattedName);
+   *   ProductName name = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   Product response = productSearchClient.getProduct(name);
+   * }
+   * 
+ * + * @param name Resource name of the Product to get. + *

Format is: `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Product getProduct(ProductName name) { + + GetProductRequest request = + GetProductRequest.newBuilder().setName(name == null ? null : name.toString()).build(); + return getProduct(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Gets information associated with a Product. + * + *

Possible errors: + * + *

* Returns NOT_FOUND if the Product does not exist. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   ProductName name = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   Product response = productSearchClient.getProduct(name.toString());
    * }
    * 
* @@ -556,7 +669,7 @@ public final UnaryCallable listProduc * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final Product getProduct(String name) { - PRODUCT_PATH_TEMPLATE.validate(name, "getProduct"); + GetProductRequest request = GetProductRequest.newBuilder().setName(name).build(); return getProduct(request); } @@ -573,9 +686,9 @@ public final Product getProduct(String name) { * *

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   ProductName name = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
    *   GetProductRequest request = GetProductRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .build();
    *   Product response = productSearchClient.getProduct(request);
    * }
@@ -600,9 +713,9 @@ public final Product getProduct(GetProductRequest request) {
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   ProductName name = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
    *   GetProductRequest request = GetProductRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .build();
    *   ApiFuture<Product> future = productSearchClient.getProductCallable().futureCall(request);
    *   // Do something
@@ -739,8 +852,40 @@ public final UnaryCallable updateProductCallable(
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]");
-   *   productSearchClient.deleteProduct(formattedName);
+   *   ProductName name = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   productSearchClient.deleteProduct(name);
+   * }
+   * 
+ * + * @param name Resource name of product to delete. + *

Format is: `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final void deleteProduct(ProductName name) { + + DeleteProductRequest request = + DeleteProductRequest.newBuilder().setName(name == null ? null : name.toString()).build(); + deleteProduct(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Permanently deletes a product and its reference images. + * + *

Metadata of the product and all its images will be deleted right away, but search queries + * against ProductSets containing the product may still work until all related caches are + * refreshed. + * + *

Possible errors: + * + *

* Returns NOT_FOUND if the product does not exist. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   ProductName name = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   productSearchClient.deleteProduct(name.toString());
    * }
    * 
* @@ -749,7 +894,7 @@ public final UnaryCallable updateProductCallable( * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final void deleteProduct(String name) { - PRODUCT_PATH_TEMPLATE.validate(name, "deleteProduct"); + DeleteProductRequest request = DeleteProductRequest.newBuilder().setName(name).build(); deleteProduct(request); } @@ -770,9 +915,9 @@ public final void deleteProduct(String name) { * *

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   ProductName name = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
    *   DeleteProductRequest request = DeleteProductRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .build();
    *   productSearchClient.deleteProduct(request);
    * }
@@ -801,9 +946,9 @@ public final void deleteProduct(DeleteProductRequest request) {
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   ProductName name = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
    *   DeleteProductRequest request = DeleteProductRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .build();
    *   ApiFuture<Void> future = productSearchClient.deleteProductCallable().futureCall(request);
    *   // Do something
@@ -828,8 +973,40 @@ public final UnaryCallable deleteProductCallable()
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]");
-   *   for (ReferenceImage element : productSearchClient.listReferenceImages(formattedParent).iterateAll()) {
+   *   ProductName parent = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   for (ReferenceImage element : productSearchClient.listReferenceImages(parent).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * 
+ * + * @param parent Resource name of the product containing the reference images. + *

Format is `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListReferenceImagesPagedResponse listReferenceImages(ProductName parent) { + ListReferenceImagesRequest request = + ListReferenceImagesRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .build(); + return listReferenceImages(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Lists reference images. + * + *

Possible errors: + * + *

* Returns NOT_FOUND if the parent product does not exist. * Returns INVALID_ARGUMENT + * if the page_size is greater than 100, or less than 1. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   ProductName parent = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   for (ReferenceImage element : productSearchClient.listReferenceImages(parent.toString()).iterateAll()) {
    *     // doThingsWith(element);
    *   }
    * }
@@ -840,7 +1017,6 @@ public final UnaryCallable deleteProductCallable()
    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
    */
   public final ListReferenceImagesPagedResponse listReferenceImages(String parent) {
-    PRODUCT_PATH_TEMPLATE.validate(parent, "listReferenceImages");
     ListReferenceImagesRequest request =
         ListReferenceImagesRequest.newBuilder().setParent(parent).build();
     return listReferenceImages(request);
@@ -859,9 +1035,9 @@ public final ListReferenceImagesPagedResponse listReferenceImages(String parent)
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   ProductName parent = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
    *   ListReferenceImagesRequest request = ListReferenceImagesRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .build();
    *   for (ReferenceImage element : productSearchClient.listReferenceImages(request).iterateAll()) {
    *     // doThingsWith(element);
@@ -890,9 +1066,9 @@ public final ListReferenceImagesPagedResponse listReferenceImages(
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   ProductName parent = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
    *   ListReferenceImagesRequest request = ListReferenceImagesRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .build();
    *   ApiFuture<ListReferenceImagesPagedResponse> future = productSearchClient.listReferenceImagesPagedCallable().futureCall(request);
    *   // Do something
@@ -920,9 +1096,9 @@ public final ListReferenceImagesPagedResponse listReferenceImages(
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   ProductName parent = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
    *   ListReferenceImagesRequest request = ListReferenceImagesRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .build();
    *   while (true) {
    *     ListReferenceImagesResponse response = productSearchClient.listReferenceImagesCallable().call(request);
@@ -956,8 +1132,39 @@ public final ListReferenceImagesPagedResponse listReferenceImages(
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatImageName("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[IMAGE]");
-   *   ReferenceImage response = productSearchClient.getReferenceImage(formattedName);
+   *   ReferenceImageName name = ReferenceImageName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[REFERENCE_IMAGE]");
+   *   ReferenceImage response = productSearchClient.getReferenceImage(name);
+   * }
+   * 
+ * + * @param name The resource name of the ReferenceImage to get. + *

Format is: + *

`projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ReferenceImage getReferenceImage(ReferenceImageName name) { + + GetReferenceImageRequest request = + GetReferenceImageRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .build(); + return getReferenceImage(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Gets information associated with a ReferenceImage. + * + *

Possible errors: + * + *

* Returns NOT_FOUND if the specified image does not exist. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   ReferenceImageName name = ReferenceImageName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[REFERENCE_IMAGE]");
+   *   ReferenceImage response = productSearchClient.getReferenceImage(name.toString());
    * }
    * 
* @@ -967,7 +1174,7 @@ public final ListReferenceImagesPagedResponse listReferenceImages( * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final ReferenceImage getReferenceImage(String name) { - IMAGE_PATH_TEMPLATE.validate(name, "getReferenceImage"); + GetReferenceImageRequest request = GetReferenceImageRequest.newBuilder().setName(name).build(); return getReferenceImage(request); } @@ -984,9 +1191,9 @@ public final ReferenceImage getReferenceImage(String name) { * *

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatImageName("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[IMAGE]");
+   *   ReferenceImageName name = ReferenceImageName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[REFERENCE_IMAGE]");
    *   GetReferenceImageRequest request = GetReferenceImageRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .build();
    *   ReferenceImage response = productSearchClient.getReferenceImage(request);
    * }
@@ -1011,9 +1218,9 @@ public final ReferenceImage getReferenceImage(GetReferenceImageRequest request)
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatImageName("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[IMAGE]");
+   *   ReferenceImageName name = ReferenceImageName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[REFERENCE_IMAGE]");
    *   GetReferenceImageRequest request = GetReferenceImageRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .build();
    *   ApiFuture<ReferenceImage> future = productSearchClient.getReferenceImageCallable().futureCall(request);
    *   // Do something
@@ -1042,8 +1249,44 @@ public final UnaryCallable getReferenc
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatImageName("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[IMAGE]");
-   *   productSearchClient.deleteReferenceImage(formattedName);
+   *   ReferenceImageName name = ReferenceImageName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[REFERENCE_IMAGE]");
+   *   productSearchClient.deleteReferenceImage(name);
+   * }
+   * 
+ * + * @param name The resource name of the reference image to delete. + *

Format is: + *

`projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID` + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final void deleteReferenceImage(ReferenceImageName name) { + + DeleteReferenceImageRequest request = + DeleteReferenceImageRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .build(); + deleteReferenceImage(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Permanently deletes a reference image. + * + *

The image metadata will be deleted right away, but search queries against ProductSets + * containing the image may still work until all related caches are refreshed. + * + *

The actual image files are not deleted from Google Cloud Storage. + * + *

Possible errors: + * + *

* Returns NOT_FOUND if the reference image does not exist. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   ReferenceImageName name = ReferenceImageName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[REFERENCE_IMAGE]");
+   *   productSearchClient.deleteReferenceImage(name.toString());
    * }
    * 
* @@ -1053,7 +1296,7 @@ public final UnaryCallable getReferenc * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final void deleteReferenceImage(String name) { - IMAGE_PATH_TEMPLATE.validate(name, "deleteReferenceImage"); + DeleteReferenceImageRequest request = DeleteReferenceImageRequest.newBuilder().setName(name).build(); deleteReferenceImage(request); @@ -1076,9 +1319,9 @@ public final void deleteReferenceImage(String name) { * *

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatImageName("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[IMAGE]");
+   *   ReferenceImageName name = ReferenceImageName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[REFERENCE_IMAGE]");
    *   DeleteReferenceImageRequest request = DeleteReferenceImageRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .build();
    *   productSearchClient.deleteReferenceImage(request);
    * }
@@ -1108,9 +1351,9 @@ public final void deleteReferenceImage(DeleteReferenceImageRequest request) {
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatImageName("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[IMAGE]");
+   *   ReferenceImageName name = ReferenceImageName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[REFERENCE_IMAGE]");
    *   DeleteReferenceImageRequest request = DeleteReferenceImageRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .build();
    *   ApiFuture<Void> future = productSearchClient.deleteReferenceImageCallable().futureCall(request);
    *   // Do something
@@ -1118,8 +1361,61 @@ public final void deleteReferenceImage(DeleteReferenceImageRequest request) {
    * }
    * 
*/ - public final UnaryCallable deleteReferenceImageCallable() { - return stub.deleteReferenceImageCallable(); + public final UnaryCallable deleteReferenceImageCallable() { + return stub.deleteReferenceImageCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates and returns a new ReferenceImage resource. + * + *

The `bounding_poly` field is optional. If `bounding_poly` is not specified, the system will + * try to detect regions of interest in the image that are compatible with the product_category on + * the parent product. If it is specified, detection is ALWAYS skipped. The system converts + * polygons into non-rotated rectangles. + * + *

Note that the pipeline will resize the image if the image resolution is too large to process + * (above 50MP). + * + *

Possible errors: + * + *

* Returns INVALID_ARGUMENT if the image_uri is missing or longer than 4096 characters. + * * Returns INVALID_ARGUMENT if the product does not exist. * Returns INVALID_ARGUMENT if + * bounding_poly is not provided, and nothing compatible with the parent product's + * product_category is detected. * Returns INVALID_ARGUMENT if bounding_poly contains more + * than 10 polygons. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   ProductName parent = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   ReferenceImage referenceImage = ReferenceImage.newBuilder().build();
+   *   String referenceImageId = "";
+   *   ReferenceImage response = productSearchClient.createReferenceImage(parent, referenceImage, referenceImageId);
+   * }
+   * 
+ * + * @param parent Resource name of the product in which to create the reference image. + *

Format is `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. + * @param referenceImage The reference image to create. If an image ID is specified, it is + * ignored. + * @param referenceImageId A user-supplied resource id for the ReferenceImage to be added. If set, + * the server will attempt to use this value as the resource id. If it is already in use, an + * error is returned with code ALREADY_EXISTS. Must be at most 128 characters long. It cannot + * contain the character `/`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ReferenceImage createReferenceImage( + ProductName parent, ReferenceImage referenceImage, String referenceImageId) { + + CreateReferenceImageRequest request = + CreateReferenceImageRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .setReferenceImage(referenceImage) + .setReferenceImageId(referenceImageId) + .build(); + return createReferenceImage(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD @@ -1146,10 +1442,10 @@ public final UnaryCallable deleteReferenceIm * *


    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   ProductName parent = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
    *   ReferenceImage referenceImage = ReferenceImage.newBuilder().build();
    *   String referenceImageId = "";
-   *   ReferenceImage response = productSearchClient.createReferenceImage(formattedParent, referenceImage, referenceImageId);
+   *   ReferenceImage response = productSearchClient.createReferenceImage(parent.toString(), referenceImage, referenceImageId);
    * }
    * 
* @@ -1165,7 +1461,7 @@ public final UnaryCallable deleteReferenceIm */ public final ReferenceImage createReferenceImage( String parent, ReferenceImage referenceImage, String referenceImageId) { - PRODUCT_PATH_TEMPLATE.validate(parent, "createReferenceImage"); + CreateReferenceImageRequest request = CreateReferenceImageRequest.newBuilder() .setParent(parent) @@ -1199,10 +1495,10 @@ public final ReferenceImage createReferenceImage( * *

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   ProductName parent = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
    *   ReferenceImage referenceImage = ReferenceImage.newBuilder().build();
    *   CreateReferenceImageRequest request = CreateReferenceImageRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .setReferenceImage(referenceImage)
    *     .build();
    *   ReferenceImage response = productSearchClient.createReferenceImage(request);
@@ -1240,10 +1536,10 @@ public final ReferenceImage createReferenceImage(CreateReferenceImageRequest req
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   ProductName parent = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
    *   ReferenceImage referenceImage = ReferenceImage.newBuilder().build();
    *   CreateReferenceImageRequest request = CreateReferenceImageRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .setReferenceImage(referenceImage)
    *     .build();
    *   ApiFuture<ReferenceImage> future = productSearchClient.createReferenceImageCallable().futureCall(request);
@@ -1270,10 +1566,51 @@ public final ReferenceImage createReferenceImage(CreateReferenceImageRequest req
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
+   *   ProductSet productSet = ProductSet.newBuilder().build();
+   *   String productSetId = "";
+   *   ProductSet response = productSearchClient.createProductSet(parent, productSet, productSetId);
+   * }
+   * 
+ * + * @param parent The project in which the ProductSet should be created. + *

Format is `projects/PROJECT_ID/locations/LOC_ID`. + * @param productSet The ProductSet to create. + * @param productSetId A user-supplied resource id for this ProductSet. If set, the server will + * attempt to use this value as the resource id. If it is already in use, an error is returned + * with code ALREADY_EXISTS. Must be at most 128 characters long. It cannot contain the + * character `/`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ProductSet createProductSet( + LocationName parent, ProductSet productSet, String productSetId) { + + CreateProductSetRequest request = + CreateProductSetRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .setProductSet(productSet) + .setProductSetId(productSetId) + .build(); + return createProductSet(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Creates and returns a new ProductSet resource. + * + *

Possible errors: + * + *

* Returns INVALID_ARGUMENT if display_name is missing, or is longer than 4096 + * characters. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   ProductSet productSet = ProductSet.newBuilder().build();
    *   String productSetId = "";
-   *   ProductSet response = productSearchClient.createProductSet(formattedParent, productSet, productSetId);
+   *   ProductSet response = productSearchClient.createProductSet(parent.toString(), productSet, productSetId);
    * }
    * 
* @@ -1288,7 +1625,7 @@ public final ReferenceImage createReferenceImage(CreateReferenceImageRequest req */ public final ProductSet createProductSet( String parent, ProductSet productSet, String productSetId) { - LOCATION_PATH_TEMPLATE.validate(parent, "createProductSet"); + CreateProductSetRequest request = CreateProductSetRequest.newBuilder() .setParent(parent) @@ -1311,10 +1648,10 @@ public final ProductSet createProductSet( * *

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   ProductSet productSet = ProductSet.newBuilder().build();
    *   CreateProductSetRequest request = CreateProductSetRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .setProductSet(productSet)
    *     .build();
    *   ProductSet response = productSearchClient.createProductSet(request);
@@ -1341,10 +1678,10 @@ public final ProductSet createProductSet(CreateProductSetRequest request) {
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   ProductSet productSet = ProductSet.newBuilder().build();
    *   CreateProductSetRequest request = CreateProductSetRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .setProductSet(productSet)
    *     .build();
    *   ApiFuture<ProductSet> future = productSearchClient.createProductSetCallable().futureCall(request);
@@ -1369,8 +1706,39 @@ public final UnaryCallable createProductSet
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
-   *   for (ProductSet element : productSearchClient.listProductSets(formattedParent).iterateAll()) {
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
+   *   for (ProductSet element : productSearchClient.listProductSets(parent).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * 
+ * + * @param parent The project from which ProductSets should be listed. + *

Format is `projects/PROJECT_ID/locations/LOC_ID`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListProductSetsPagedResponse listProductSets(LocationName parent) { + ListProductSetsRequest request = + ListProductSetsRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .build(); + return listProductSets(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Lists ProductSets in an unspecified order. + * + *

Possible errors: + * + *

* Returns INVALID_ARGUMENT if page_size is greater than 100, or less than 1. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
+   *   for (ProductSet element : productSearchClient.listProductSets(parent.toString()).iterateAll()) {
    *     // doThingsWith(element);
    *   }
    * }
@@ -1381,7 +1749,6 @@ public final UnaryCallable createProductSet
    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
    */
   public final ListProductSetsPagedResponse listProductSets(String parent) {
-    LOCATION_PATH_TEMPLATE.validate(parent, "listProductSets");
     ListProductSetsRequest request = ListProductSetsRequest.newBuilder().setParent(parent).build();
     return listProductSets(request);
   }
@@ -1398,9 +1765,9 @@ public final ListProductSetsPagedResponse listProductSets(String parent) {
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   ListProductSetsRequest request = ListProductSetsRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .build();
    *   for (ProductSet element : productSearchClient.listProductSets(request).iterateAll()) {
    *     // doThingsWith(element);
@@ -1427,9 +1794,9 @@ public final ListProductSetsPagedResponse listProductSets(ListProductSetsRequest
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   ListProductSetsRequest request = ListProductSetsRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .build();
    *   ApiFuture<ListProductSetsPagedResponse> future = productSearchClient.listProductSetsPagedCallable().futureCall(request);
    *   // Do something
@@ -1456,9 +1823,9 @@ public final ListProductSetsPagedResponse listProductSets(ListProductSetsRequest
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   ListProductSetsRequest request = ListProductSetsRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .build();
    *   while (true) {
    *     ListProductSetsResponse response = productSearchClient.listProductSetsCallable().call(request);
@@ -1492,8 +1859,36 @@ public final ListProductSetsPagedResponse listProductSets(ListProductSetsRequest
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
-   *   ProductSet response = productSearchClient.getProductSet(formattedName);
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductSet response = productSearchClient.getProductSet(name);
+   * }
+   * 
+ * + * @param name Resource name of the ProductSet to get. + *

Format is: `projects/PROJECT_ID/locations/LOG_ID/productSets/PRODUCT_SET_ID` + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ProductSet getProductSet(ProductSetName name) { + + GetProductSetRequest request = + GetProductSetRequest.newBuilder().setName(name == null ? null : name.toString()).build(); + return getProductSet(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Gets information associated with a ProductSet. + * + *

Possible errors: + * + *

* Returns NOT_FOUND if the ProductSet does not exist. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductSet response = productSearchClient.getProductSet(name.toString());
    * }
    * 
* @@ -1502,7 +1897,7 @@ public final ListProductSetsPagedResponse listProductSets(ListProductSetsRequest * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final ProductSet getProductSet(String name) { - PRODUCT_SET_PATH_TEMPLATE.validate(name, "getProductSet"); + GetProductSetRequest request = GetProductSetRequest.newBuilder().setName(name).build(); return getProductSet(request); } @@ -1519,9 +1914,9 @@ public final ProductSet getProductSet(String name) { * *

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
    *   GetProductSetRequest request = GetProductSetRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .build();
    *   ProductSet response = productSearchClient.getProductSet(request);
    * }
@@ -1546,9 +1941,9 @@ public final ProductSet getProductSet(GetProductSetRequest request) {
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
    *   GetProductSetRequest request = GetProductSetRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .build();
    *   ApiFuture<ProductSet> future = productSearchClient.getProductSetCallable().futureCall(request);
    *   // Do something
@@ -1655,7 +2050,38 @@ public final UnaryCallable updateProductSet
 
   // AUTO-GENERATED DOCUMENTATION AND METHOD
   /**
-   * Permanently deletes a ProductSet. All Products and ReferenceImages in the ProductSet will be
+   * Permanently deletes a ProductSet. Products and ReferenceImages in the ProductSet are not
+   * deleted.
+   *
+   * 

The actual image files are not deleted from Google Cloud Storage. + * + *

Possible errors: + * + *

* Returns NOT_FOUND if the ProductSet does not exist. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   productSearchClient.deleteProductSet(name);
+   * }
+   * 
+ * + * @param name Resource name of the ProductSet to delete. + *

Format is: `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final void deleteProductSet(ProductSetName name) { + + DeleteProductSetRequest request = + DeleteProductSetRequest.newBuilder().setName(name == null ? null : name.toString()).build(); + deleteProductSet(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Permanently deletes a ProductSet. Products and ReferenceImages in the ProductSet are not * deleted. * *

The actual image files are not deleted from Google Cloud Storage. @@ -1668,8 +2094,8 @@ public final UnaryCallable updateProductSet * *


    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
-   *   productSearchClient.deleteProductSet(formattedName);
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   productSearchClient.deleteProductSet(name.toString());
    * }
    * 
* @@ -1678,14 +2104,14 @@ public final UnaryCallable updateProductSet * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final void deleteProductSet(String name) { - PRODUCT_SET_PATH_TEMPLATE.validate(name, "deleteProductSet"); + DeleteProductSetRequest request = DeleteProductSetRequest.newBuilder().setName(name).build(); deleteProductSet(request); } // AUTO-GENERATED DOCUMENTATION AND METHOD /** - * Permanently deletes a ProductSet. All Products and ReferenceImages in the ProductSet will be + * Permanently deletes a ProductSet. Products and ReferenceImages in the ProductSet are not * deleted. * *

The actual image files are not deleted from Google Cloud Storage. @@ -1698,9 +2124,9 @@ public final void deleteProductSet(String name) { * *


    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
    *   DeleteProductSetRequest request = DeleteProductSetRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .build();
    *   productSearchClient.deleteProductSet(request);
    * }
@@ -1715,7 +2141,7 @@ public final void deleteProductSet(DeleteProductSetRequest request) {
 
   // AUTO-GENERATED DOCUMENTATION AND METHOD
   /**
-   * Permanently deletes a ProductSet. All Products and ReferenceImages in the ProductSet will be
+   * Permanently deletes a ProductSet. Products and ReferenceImages in the ProductSet are not
    * deleted.
    *
    * 

The actual image files are not deleted from Google Cloud Storage. @@ -1728,9 +2154,9 @@ public final void deleteProductSet(DeleteProductSetRequest request) { * *


    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
    *   DeleteProductSetRequest request = DeleteProductSetRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .build();
    *   ApiFuture<Void> future = productSearchClient.deleteProductSetCallable().futureCall(request);
    *   // Do something
@@ -1757,9 +2183,46 @@ public final UnaryCallable deleteProductSetCalla
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
-   *   String product = "";
-   *   productSearchClient.addProductToProductSet(formattedName, product);
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductName product = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   productSearchClient.addProductToProductSet(name, product);
+   * }
+   * 
+ * + * @param name The resource name for the ProductSet to modify. + *

Format is: `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` + * @param product The resource name for the Product to be added to this ProductSet. + *

Format is: `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final void addProductToProductSet(ProductSetName name, ProductName product) { + + AddProductToProductSetRequest request = + AddProductToProductSetRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .setProduct(product == null ? null : product.toString()) + .build(); + addProductToProductSet(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Adds a Product to the specified ProductSet. If the Product is already present, no change is + * made. + * + *

One Product can be added to at most 100 ProductSets. + * + *

Possible errors: + * + *

* Returns NOT_FOUND if the Product or the ProductSet doesn't exist. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductName product = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   productSearchClient.addProductToProductSet(name.toString(), product.toString());
    * }
    * 
* @@ -1770,7 +2233,7 @@ public final UnaryCallable deleteProductSetCalla * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final void addProductToProductSet(String name, String product) { - PRODUCT_SET_PATH_TEMPLATE.validate(name, "addProductToProductSet"); + AddProductToProductSetRequest request = AddProductToProductSetRequest.newBuilder().setName(name).setProduct(product).build(); addProductToProductSet(request); @@ -1791,11 +2254,11 @@ public final void addProductToProductSet(String name, String product) { * *

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
-   *   String product = "";
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductName product = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
    *   AddProductToProductSetRequest request = AddProductToProductSetRequest.newBuilder()
-   *     .setName(formattedName)
-   *     .setProduct(product)
+   *     .setName(name.toString())
+   *     .setProduct(product.toString())
    *     .build();
    *   productSearchClient.addProductToProductSet(request);
    * }
@@ -1823,11 +2286,11 @@ public final void addProductToProductSet(AddProductToProductSetRequest request)
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
-   *   String product = "";
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductName product = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
    *   AddProductToProductSetRequest request = AddProductToProductSetRequest.newBuilder()
-   *     .setName(formattedName)
-   *     .setProduct(product)
+   *     .setName(name.toString())
+   *     .setProduct(product.toString())
    *     .build();
    *   ApiFuture<Void> future = productSearchClient.addProductToProductSetCallable().futureCall(request);
    *   // Do something
@@ -1852,9 +2315,43 @@ public final void addProductToProductSet(AddProductToProductSetRequest request)
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
-   *   String product = "";
-   *   productSearchClient.removeProductFromProductSet(formattedName, product);
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductName product = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   productSearchClient.removeProductFromProductSet(name, product);
+   * }
+   * 
+ * + * @param name The resource name for the ProductSet to modify. + *

Format is: `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` + * @param product The resource name for the Product to be removed from this ProductSet. + *

Format is: `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final void removeProductFromProductSet(ProductSetName name, ProductName product) { + + RemoveProductFromProductSetRequest request = + RemoveProductFromProductSetRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .setProduct(product == null ? null : product.toString()) + .build(); + removeProductFromProductSet(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Removes a Product from the specified ProductSet. + * + *

Possible errors: + * + *

* Returns NOT_FOUND If the Product is not found under the ProductSet. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductName product = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
+   *   productSearchClient.removeProductFromProductSet(name.toString(), product.toString());
    * }
    * 
* @@ -1865,7 +2362,7 @@ public final void addProductToProductSet(AddProductToProductSetRequest request) * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final void removeProductFromProductSet(String name, String product) { - PRODUCT_SET_PATH_TEMPLATE.validate(name, "removeProductFromProductSet"); + RemoveProductFromProductSetRequest request = RemoveProductFromProductSetRequest.newBuilder().setName(name).setProduct(product).build(); removeProductFromProductSet(request); @@ -1883,11 +2380,11 @@ public final void removeProductFromProductSet(String name, String product) { * *

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
-   *   String product = "";
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductName product = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
    *   RemoveProductFromProductSetRequest request = RemoveProductFromProductSetRequest.newBuilder()
-   *     .setName(formattedName)
-   *     .setProduct(product)
+   *     .setName(name.toString())
+   *     .setProduct(product.toString())
    *     .build();
    *   productSearchClient.removeProductFromProductSet(request);
    * }
@@ -1912,11 +2409,11 @@ public final void removeProductFromProductSet(RemoveProductFromProductSetRequest
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
-   *   String product = "";
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductName product = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]");
    *   RemoveProductFromProductSetRequest request = RemoveProductFromProductSetRequest.newBuilder()
-   *     .setName(formattedName)
-   *     .setProduct(product)
+   *     .setName(name.toString())
+   *     .setProduct(product.toString())
    *     .build();
    *   ApiFuture<Void> future = productSearchClient.removeProductFromProductSetCallable().futureCall(request);
    *   // Do something
@@ -1942,8 +2439,40 @@ public final void removeProductFromProductSet(RemoveProductFromProductSetRequest
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
-   *   for (Product element : productSearchClient.listProductsInProductSet(formattedName).iterateAll()) {
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   for (Product element : productSearchClient.listProductsInProductSet(name).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * 
+ * + * @param name The ProductSet resource for which to retrieve Products. + *

Format is: `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListProductsInProductSetPagedResponse listProductsInProductSet(ProductSetName name) { + ListProductsInProductSetRequest request = + ListProductsInProductSetRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .build(); + return listProductsInProductSet(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Lists the Products in a ProductSet, in an unspecified order. If the ProductSet does not exist, + * the products field of the response will be empty. + * + *

Possible errors: + * + *

* Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   for (Product element : productSearchClient.listProductsInProductSet(name.toString()).iterateAll()) {
    *     // doThingsWith(element);
    *   }
    * }
@@ -1954,7 +2483,6 @@ public final void removeProductFromProductSet(RemoveProductFromProductSetRequest
    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
    */
   public final ListProductsInProductSetPagedResponse listProductsInProductSet(String name) {
-    PRODUCT_SET_PATH_TEMPLATE.validate(name, "listProductsInProductSet");
     ListProductsInProductSetRequest request =
         ListProductsInProductSetRequest.newBuilder().setName(name).build();
     return listProductsInProductSet(request);
@@ -1973,9 +2501,9 @@ public final ListProductsInProductSetPagedResponse listProductsInProductSet(Stri
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
    *   ListProductsInProductSetRequest request = ListProductsInProductSetRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .build();
    *   for (Product element : productSearchClient.listProductsInProductSet(request).iterateAll()) {
    *     // doThingsWith(element);
@@ -2004,9 +2532,9 @@ public final ListProductsInProductSetPagedResponse listProductsInProductSet(
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
    *   ListProductsInProductSetRequest request = ListProductsInProductSetRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .build();
    *   ApiFuture<ListProductsInProductSetPagedResponse> future = productSearchClient.listProductsInProductSetPagedCallable().futureCall(request);
    *   // Do something
@@ -2034,9 +2562,9 @@ public final ListProductsInProductSetPagedResponse listProductsInProductSet(
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedName = ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
+   *   ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]");
    *   ListProductsInProductSetRequest request = ListProductsInProductSetRequest.newBuilder()
-   *     .setName(formattedName)
+   *     .setName(name.toString())
    *     .build();
    *   while (true) {
    *     ListProductsInProductSetResponse response = productSearchClient.listProductsInProductSetCallable().call(request);
@@ -2076,9 +2604,51 @@ public final ListProductsInProductSetPagedResponse listProductsInProductSet(
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
+   *   ImportProductSetsInputConfig inputConfig = ImportProductSetsInputConfig.newBuilder().build();
+   *   ImportProductSetsResponse response = productSearchClient.importProductSetsAsync(parent, inputConfig).get();
+   * }
+   * 
+ * + * @param parent The project in which the ProductSets should be imported. + *

Format is `projects/PROJECT_ID/locations/LOC_ID`. + * @param inputConfig The input content for the list of requests. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + public final OperationFuture + importProductSetsAsync(LocationName parent, ImportProductSetsInputConfig inputConfig) { + + ImportProductSetsRequest request = + ImportProductSetsRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .setInputConfig(inputConfig) + .build(); + return importProductSetsAsync(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD + /** + * Asynchronous API that imports a list of reference images to specified product sets based on a + * list of image information. + * + *

The [google.longrunning.Operation][google.longrunning.Operation] API can be used to keep + * track of the progress and results of the request. `Operation.metadata` contains + * `BatchOperationMetadata`. (progress) `Operation.response` contains `ImportProductSetsResponse`. + * (results) + * + *

The input source of this method is a csv file on Google Cloud Storage. For the format of the + * csv file please see + * [ImportProductSetsGcsSource.csv_file_uri][google.cloud.vision.v1.ImportProductSetsGcsSource.csv_file_uri]. + * + *

Sample code: + * + *


+   * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   ImportProductSetsInputConfig inputConfig = ImportProductSetsInputConfig.newBuilder().build();
-   *   ImportProductSetsResponse response = productSearchClient.importProductSetsAsync(formattedParent, inputConfig).get();
+   *   ImportProductSetsResponse response = productSearchClient.importProductSetsAsync(parent.toString(), inputConfig).get();
    * }
    * 
* @@ -2091,7 +2661,7 @@ public final ListProductsInProductSetPagedResponse listProductsInProductSet( "The surface for long-running operations is not stable yet and may change in the future.") public final OperationFuture importProductSetsAsync(String parent, ImportProductSetsInputConfig inputConfig) { - LOCATION_PATH_TEMPLATE.validate(parent, "importProductSets"); + ImportProductSetsRequest request = ImportProductSetsRequest.newBuilder().setParent(parent).setInputConfig(inputConfig).build(); return importProductSetsAsync(request); @@ -2115,10 +2685,10 @@ public final ListProductsInProductSetPagedResponse listProductsInProductSet( * *

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   ImportProductSetsInputConfig inputConfig = ImportProductSetsInputConfig.newBuilder().build();
    *   ImportProductSetsRequest request = ImportProductSetsRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .setInputConfig(inputConfig)
    *     .build();
    *   ImportProductSetsResponse response = productSearchClient.importProductSetsAsync(request).get();
@@ -2153,13 +2723,13 @@ public final ListProductsInProductSetPagedResponse listProductsInProductSet(
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   ImportProductSetsInputConfig inputConfig = ImportProductSetsInputConfig.newBuilder().build();
    *   ImportProductSetsRequest request = ImportProductSetsRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .setInputConfig(inputConfig)
    *     .build();
-   *   OperationFuture<Operation> future = productSearchClient.importProductSetsOperationCallable().futureCall(request);
+   *   OperationFuture<ImportProductSetsResponse, BatchOperationMetadata> future = productSearchClient.importProductSetsOperationCallable().futureCall(request);
    *   // Do something
    *   ImportProductSetsResponse response = future.get();
    * }
@@ -2190,10 +2760,10 @@ public final ListProductsInProductSetPagedResponse listProductsInProductSet(
    *
    * 

    * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
-   *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
    *   ImportProductSetsInputConfig inputConfig = ImportProductSetsInputConfig.newBuilder().build();
    *   ImportProductSetsRequest request = ImportProductSetsRequest.newBuilder()
-   *     .setParent(formattedParent)
+   *     .setParent(parent.toString())
    *     .setInputConfig(inputConfig)
    *     .build();
    *   ApiFuture<Operation> future = productSearchClient.importProductSetsCallable().futureCall(request);
diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ProductSearchSettings.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ProductSearchSettings.java
index 050eaea10d26..747153699da5 100644
--- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ProductSearchSettings.java
+++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/ProductSearchSettings.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2018 Google LLC
+ * Copyright 2019 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/package-info.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/package-info.java
index 0567a3e2cfdb..38c5d2e2c1d1 100644
--- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/package-info.java
+++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/package-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2018 Google LLC
+ * Copyright 2019 Google LLC
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -42,10 +42,10 @@
  * 
  * 
  * try (ProductSearchClient productSearchClient = ProductSearchClient.create()) {
- *   String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]");
+ *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
  *   Product product = Product.newBuilder().build();
  *   String productId = "";
- *   Product response = productSearchClient.createProduct(formattedParent, product, productId);
+ *   Product response = productSearchClient.createProduct(parent, product, productId);
  * }
  * 
  * 
diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcImageAnnotatorCallableFactory.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcImageAnnotatorCallableFactory.java index 5d128b136544..060cb298f626 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcImageAnnotatorCallableFactory.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcImageAnnotatorCallableFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcImageAnnotatorStub.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcImageAnnotatorStub.java index 919f77ec4899..b4e9033b829f 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcImageAnnotatorStub.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcImageAnnotatorStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcProductSearchCallableFactory.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcProductSearchCallableFactory.java index f4e9dee677c7..098a24510dc8 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcProductSearchCallableFactory.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcProductSearchCallableFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcProductSearchStub.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcProductSearchStub.java index cabd824dbc31..d9fdc61c0abd 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcProductSearchStub.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/GrpcProductSearchStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ImageAnnotatorStub.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ImageAnnotatorStub.java index 4f35c899338a..d9301e814d5b 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ImageAnnotatorStub.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ImageAnnotatorStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ImageAnnotatorStubSettings.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ImageAnnotatorStubSettings.java index f1d303347cf8..41ef3686519d 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ImageAnnotatorStubSettings.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ImageAnnotatorStubSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ProductSearchStub.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ProductSearchStub.java index c61ea4ea525b..5b34f861cc3c 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ProductSearchStub.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ProductSearchStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ProductSearchStubSettings.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ProductSearchStubSettings.java index 8b07632c28ad..101277d5989a 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ProductSearchStubSettings.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1/stub/ProductSearchStubSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -385,7 +385,9 @@ public String extractNextToken(ListProductsResponse payload) { @Override public Iterable extractResources(ListProductsResponse payload) { - return payload.getProductsList(); + return payload.getProductsList() != null + ? payload.getProductsList() + : ImmutableList.of(); } }; @@ -423,7 +425,9 @@ public String extractNextToken(ListReferenceImagesResponse payload) { @Override public Iterable extractResources(ListReferenceImagesResponse payload) { - return payload.getReferenceImagesList(); + return payload.getReferenceImagesList() != null + ? payload.getReferenceImagesList() + : ImmutableList.of(); } }; @@ -460,7 +464,9 @@ public String extractNextToken(ListProductSetsResponse payload) { @Override public Iterable extractResources(ListProductSetsResponse payload) { - return payload.getProductSetsList(); + return payload.getProductSetsList() != null + ? payload.getProductSetsList() + : ImmutableList.of(); } }; @@ -502,7 +508,9 @@ public String extractNextToken(ListProductsInProductSetResponse payload) { @Override public Iterable extractResources(ListProductsInProductSetResponse payload) { - return payload.getProductsList(); + return payload.getProductsList() != null + ? payload.getProductsList() + : ImmutableList.of(); } }; diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorClient.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorClient.java index 2c3bab5e9eb9..8046192f2a49 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorClient.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorClient.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorSettings.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorSettings.java index 3e6a5e48d775..e7086d45f40a 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorSettings.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/package-info.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/package-info.java index 1e1d4137d12a..7b270a59bff1 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/package-info.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/GrpcImageAnnotatorCallableFactory.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/GrpcImageAnnotatorCallableFactory.java index e15db377bd8e..741c74d5fe9e 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/GrpcImageAnnotatorCallableFactory.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/GrpcImageAnnotatorCallableFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/GrpcImageAnnotatorStub.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/GrpcImageAnnotatorStub.java index 7da267f088b8..01bf1ab78e41 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/GrpcImageAnnotatorStub.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/GrpcImageAnnotatorStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/ImageAnnotatorStub.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/ImageAnnotatorStub.java index 4878ec7c26a8..e17cb43e5b4e 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/ImageAnnotatorStub.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/ImageAnnotatorStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/ImageAnnotatorStubSettings.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/ImageAnnotatorStubSettings.java index eec11ae0fd7f..e10c30f8b94e 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/ImageAnnotatorStubSettings.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p1beta1/stub/ImageAnnotatorStubSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorClient.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorClient.java index 8c61efd844c8..2963c84a95ce 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorClient.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorClient.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -310,7 +310,7 @@ public final BatchAnnotateImagesResponse batchAnnotateImages(BatchAnnotateImages * AsyncBatchAnnotateFilesRequest request = AsyncBatchAnnotateFilesRequest.newBuilder() * .addAllRequests(requests) * .build(); - * OperationFuture<Operation> future = imageAnnotatorClient.asyncBatchAnnotateFilesOperationCallable().futureCall(request); + * OperationFuture<AsyncBatchAnnotateFilesResponse, OperationMetadata> future = imageAnnotatorClient.asyncBatchAnnotateFilesOperationCallable().futureCall(request); * // Do something * AsyncBatchAnnotateFilesResponse response = future.get(); * } diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorSettings.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorSettings.java index 6466f83fc3a3..b38aa7468788 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorSettings.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/package-info.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/package-info.java index bcd23873e09b..a7765b17fafb 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/package-info.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/GrpcImageAnnotatorCallableFactory.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/GrpcImageAnnotatorCallableFactory.java index 9b9b6a689faf..bd7292e5a449 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/GrpcImageAnnotatorCallableFactory.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/GrpcImageAnnotatorCallableFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/GrpcImageAnnotatorStub.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/GrpcImageAnnotatorStub.java index 54f9c4e91e0c..a9bfbc5d425a 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/GrpcImageAnnotatorStub.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/GrpcImageAnnotatorStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/ImageAnnotatorStub.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/ImageAnnotatorStub.java index f9645aacfc07..70bce8084e16 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/ImageAnnotatorStub.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/ImageAnnotatorStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/ImageAnnotatorStubSettings.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/ImageAnnotatorStubSettings.java index c0f76053a59b..cd36d3ce6082 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/ImageAnnotatorStubSettings.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p2beta1/stub/ImageAnnotatorStubSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorClient.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorClient.java index 1fbab040c48d..e6264d754071 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorClient.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorClient.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -310,7 +310,7 @@ public final BatchAnnotateImagesResponse batchAnnotateImages(BatchAnnotateImages * AsyncBatchAnnotateFilesRequest request = AsyncBatchAnnotateFilesRequest.newBuilder() * .addAllRequests(requests) * .build(); - * OperationFuture<Operation> future = imageAnnotatorClient.asyncBatchAnnotateFilesOperationCallable().futureCall(request); + * OperationFuture<AsyncBatchAnnotateFilesResponse, OperationMetadata> future = imageAnnotatorClient.asyncBatchAnnotateFilesOperationCallable().futureCall(request); * // Do something * AsyncBatchAnnotateFilesResponse response = future.get(); * } diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorSettings.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorSettings.java index fbf85fdf5cdc..44d4e7ab584f 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorSettings.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ProductSearchClient.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ProductSearchClient.java index c9d87bec1e11..9b78a9544756 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ProductSearchClient.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ProductSearchClient.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -2612,7 +2612,7 @@ public final ListProductsInProductSetPagedResponse listProductsInProductSet( * .setParent(parent.toString()) * .setInputConfig(inputConfig) * .build(); - * OperationFuture<Operation> future = productSearchClient.importProductSetsOperationCallable().futureCall(request); + * OperationFuture<ImportProductSetsResponse, BatchOperationMetadata> future = productSearchClient.importProductSetsOperationCallable().futureCall(request); * // Do something * ImportProductSetsResponse response = future.get(); * } diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ProductSearchSettings.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ProductSearchSettings.java index da54b6b3212d..70d4368a03c2 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ProductSearchSettings.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/ProductSearchSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/package-info.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/package-info.java index 14b1f8c48bd3..0c8338f7eab8 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/package-info.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/package-info.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcImageAnnotatorCallableFactory.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcImageAnnotatorCallableFactory.java index 967e94c031b0..aea3948b3ebe 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcImageAnnotatorCallableFactory.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcImageAnnotatorCallableFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcImageAnnotatorStub.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcImageAnnotatorStub.java index 9c91111f1be2..5e627ab475c2 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcImageAnnotatorStub.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcImageAnnotatorStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcProductSearchCallableFactory.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcProductSearchCallableFactory.java index 3b56dc1038b8..e7a80ac1f470 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcProductSearchCallableFactory.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcProductSearchCallableFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcProductSearchStub.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcProductSearchStub.java index b09bdeefddad..db8ee2d0cff2 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcProductSearchStub.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/GrpcProductSearchStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ImageAnnotatorStub.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ImageAnnotatorStub.java index b449e77cecf6..7660962c9096 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ImageAnnotatorStub.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ImageAnnotatorStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ImageAnnotatorStubSettings.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ImageAnnotatorStubSettings.java index 18205e272330..0efce08db8f9 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ImageAnnotatorStubSettings.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ImageAnnotatorStubSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ProductSearchStub.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ProductSearchStub.java index 579d14c7928d..4eb1192618b2 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ProductSearchStub.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ProductSearchStub.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ProductSearchStubSettings.java b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ProductSearchStubSettings.java index e527051af7fb..8ac469ac9bd2 100644 --- a/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ProductSearchStubSettings.java +++ b/google-cloud-clients/google-cloud-vision/src/main/java/com/google/cloud/vision/v1p3beta1/stub/ProductSearchStubSettings.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -389,7 +389,9 @@ public String extractNextToken(ListProductSetsResponse payload) { @Override public Iterable extractResources(ListProductSetsResponse payload) { - return payload.getProductSetsList(); + return payload.getProductSetsList() != null + ? payload.getProductSetsList() + : ImmutableList.of(); } }; @@ -423,7 +425,9 @@ public String extractNextToken(ListProductsResponse payload) { @Override public Iterable extractResources(ListProductsResponse payload) { - return payload.getProductsList(); + return payload.getProductsList() != null + ? payload.getProductsList() + : ImmutableList.of(); } }; @@ -461,7 +465,9 @@ public String extractNextToken(ListReferenceImagesResponse payload) { @Override public Iterable extractResources(ListReferenceImagesResponse payload) { - return payload.getReferenceImagesList(); + return payload.getReferenceImagesList() != null + ? payload.getReferenceImagesList() + : ImmutableList.of(); } }; @@ -503,7 +509,9 @@ public String extractNextToken(ListProductsInProductSetResponse payload) { @Override public Iterable extractResources(ListProductsInProductSetResponse payload) { - return payload.getProductsList(); + return payload.getProductsList() != null + ? payload.getProductsList() + : ImmutableList.of(); } }; diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/ImageAnnotatorClientTest.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/ImageAnnotatorClientTest.java index b9cb14762db1..5646947cc919 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/ImageAnnotatorClientTest.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/ImageAnnotatorClientTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/ImageAnnotatorSmokeTest.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/ImageAnnotatorSmokeTest.java index 771099e9ad4e..879e571cd6f3 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/ImageAnnotatorSmokeTest.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/ImageAnnotatorSmokeTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockImageAnnotator.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockImageAnnotator.java index f9163add4df8..96d7bc528eb6 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockImageAnnotator.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockImageAnnotator.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockImageAnnotatorImpl.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockImageAnnotatorImpl.java index dd4012f1d5f9..3b1456bc3f71 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockImageAnnotatorImpl.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockImageAnnotatorImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockProductSearch.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockProductSearch.java index ebe03254f4bb..813c4cfd26f2 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockProductSearch.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockProductSearch.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockProductSearchImpl.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockProductSearchImpl.java index 303aed35b7f8..a7213f6abe46 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockProductSearchImpl.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/MockProductSearchImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/ProductSearchClientTest.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/ProductSearchClientTest.java index 485361f93dc7..ec3fff1a5baf 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/ProductSearchClientTest.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1/ProductSearchClientTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -90,31 +90,31 @@ public void tearDown() throws Exception { @Test @SuppressWarnings("all") public void createProductTest() { - String name = "name3373707"; + ProductName name = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]"); String displayName = "displayName1615086568"; String description = "description-1724546052"; String productCategory = "productCategory-1607451058"; Product expectedResponse = Product.newBuilder() - .setName(name) + .setName(name.toString()) .setDisplayName(displayName) .setDescription(description) .setProductCategory(productCategory) .build(); mockProductSearch.addResponse(expectedResponse); - String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]"); + LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); Product product = Product.newBuilder().build(); String productId = "productId1753008747"; - Product actualResponse = client.createProduct(formattedParent, product, productId); + Product actualResponse = client.createProduct(parent, product, productId); Assert.assertEquals(expectedResponse, actualResponse); List actualRequests = mockProductSearch.getRequests(); Assert.assertEquals(1, actualRequests.size()); CreateProductRequest actualRequest = (CreateProductRequest) actualRequests.get(0); - Assert.assertEquals(formattedParent, actualRequest.getParent()); + Assert.assertEquals(parent, LocationName.parse(actualRequest.getParent())); Assert.assertEquals(product, actualRequest.getProduct()); Assert.assertEquals(productId, actualRequest.getProductId()); Assert.assertTrue( @@ -130,11 +130,11 @@ public void createProductExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]"); + LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); Product product = Product.newBuilder().build(); String productId = "productId1753008747"; - client.createProduct(formattedParent, product, productId); + client.createProduct(parent, product, productId); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -154,9 +154,9 @@ public void listProductsTest() { .build(); mockProductSearch.addResponse(expectedResponse); - String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]"); + LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); - ListProductsPagedResponse pagedListResponse = client.listProducts(formattedParent); + ListProductsPagedResponse pagedListResponse = client.listProducts(parent); List resources = Lists.newArrayList(pagedListResponse.iterateAll()); Assert.assertEquals(1, resources.size()); @@ -166,7 +166,7 @@ public void listProductsTest() { Assert.assertEquals(1, actualRequests.size()); ListProductsRequest actualRequest = (ListProductsRequest) actualRequests.get(0); - Assert.assertEquals(formattedParent, actualRequest.getParent()); + Assert.assertEquals(parent, LocationName.parse(actualRequest.getParent())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -180,9 +180,9 @@ public void listProductsExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]"); + LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); - client.listProducts(formattedParent); + client.listProducts(parent); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -192,30 +192,29 @@ public void listProductsExceptionTest() throws Exception { @Test @SuppressWarnings("all") public void getProductTest() { - String name2 = "name2-1052831874"; + ProductName name2 = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]"); String displayName = "displayName1615086568"; String description = "description-1724546052"; String productCategory = "productCategory-1607451058"; Product expectedResponse = Product.newBuilder() - .setName(name2) + .setName(name2.toString()) .setDisplayName(displayName) .setDescription(description) .setProductCategory(productCategory) .build(); mockProductSearch.addResponse(expectedResponse); - String formattedName = - ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]"); + ProductName name = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]"); - Product actualResponse = client.getProduct(formattedName); + Product actualResponse = client.getProduct(name); Assert.assertEquals(expectedResponse, actualResponse); List actualRequests = mockProductSearch.getRequests(); Assert.assertEquals(1, actualRequests.size()); GetProductRequest actualRequest = (GetProductRequest) actualRequests.get(0); - Assert.assertEquals(formattedName, actualRequest.getName()); + Assert.assertEquals(name, ProductName.parse(actualRequest.getName())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -229,10 +228,9 @@ public void getProductExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedName = - ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]"); + ProductName name = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]"); - client.getProduct(formattedName); + client.getProduct(name); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -242,13 +240,13 @@ public void getProductExceptionTest() throws Exception { @Test @SuppressWarnings("all") public void updateProductTest() { - String name = "name3373707"; + ProductName name = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]"); String displayName = "displayName1615086568"; String description = "description-1724546052"; String productCategory = "productCategory-1607451058"; Product expectedResponse = Product.newBuilder() - .setName(name) + .setName(name.toString()) .setDisplayName(displayName) .setDescription(description) .setProductCategory(productCategory) @@ -296,16 +294,15 @@ public void deleteProductTest() { Empty expectedResponse = Empty.newBuilder().build(); mockProductSearch.addResponse(expectedResponse); - String formattedName = - ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]"); + ProductName name = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]"); - client.deleteProduct(formattedName); + client.deleteProduct(name); List actualRequests = mockProductSearch.getRequests(); Assert.assertEquals(1, actualRequests.size()); DeleteProductRequest actualRequest = (DeleteProductRequest) actualRequests.get(0); - Assert.assertEquals(formattedName, actualRequest.getName()); + Assert.assertEquals(name, ProductName.parse(actualRequest.getName())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -319,10 +316,9 @@ public void deleteProductExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedName = - ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]"); + ProductName name = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]"); - client.deleteProduct(formattedName); + client.deleteProduct(name); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -344,11 +340,9 @@ public void listReferenceImagesTest() { .build(); mockProductSearch.addResponse(expectedResponse); - String formattedParent = - ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]"); + ProductName parent = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]"); - ListReferenceImagesPagedResponse pagedListResponse = - client.listReferenceImages(formattedParent); + ListReferenceImagesPagedResponse pagedListResponse = client.listReferenceImages(parent); List resources = Lists.newArrayList(pagedListResponse.iterateAll()); Assert.assertEquals(1, resources.size()); @@ -358,7 +352,7 @@ public void listReferenceImagesTest() { Assert.assertEquals(1, actualRequests.size()); ListReferenceImagesRequest actualRequest = (ListReferenceImagesRequest) actualRequests.get(0); - Assert.assertEquals(formattedParent, actualRequest.getParent()); + Assert.assertEquals(parent, ProductName.parse(actualRequest.getParent())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -372,10 +366,9 @@ public void listReferenceImagesExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedParent = - ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]"); + ProductName parent = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]"); - client.listReferenceImages(formattedParent); + client.listReferenceImages(parent); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -385,23 +378,24 @@ public void listReferenceImagesExceptionTest() throws Exception { @Test @SuppressWarnings("all") public void getReferenceImageTest() { - String name2 = "name2-1052831874"; + ReferenceImageName name2 = + ReferenceImageName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[REFERENCE_IMAGE]"); String uri = "uri116076"; ReferenceImage expectedResponse = - ReferenceImage.newBuilder().setName(name2).setUri(uri).build(); + ReferenceImage.newBuilder().setName(name2.toString()).setUri(uri).build(); mockProductSearch.addResponse(expectedResponse); - String formattedName = - ProductSearchClient.formatImageName("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[IMAGE]"); + ReferenceImageName name = + ReferenceImageName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[REFERENCE_IMAGE]"); - ReferenceImage actualResponse = client.getReferenceImage(formattedName); + ReferenceImage actualResponse = client.getReferenceImage(name); Assert.assertEquals(expectedResponse, actualResponse); List actualRequests = mockProductSearch.getRequests(); Assert.assertEquals(1, actualRequests.size()); GetReferenceImageRequest actualRequest = (GetReferenceImageRequest) actualRequests.get(0); - Assert.assertEquals(formattedName, actualRequest.getName()); + Assert.assertEquals(name, ReferenceImageName.parse(actualRequest.getName())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -415,10 +409,10 @@ public void getReferenceImageExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedName = - ProductSearchClient.formatImageName("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[IMAGE]"); + ReferenceImageName name = + ReferenceImageName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[REFERENCE_IMAGE]"); - client.getReferenceImage(formattedName); + client.getReferenceImage(name); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -431,16 +425,16 @@ public void deleteReferenceImageTest() { Empty expectedResponse = Empty.newBuilder().build(); mockProductSearch.addResponse(expectedResponse); - String formattedName = - ProductSearchClient.formatImageName("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[IMAGE]"); + ReferenceImageName name = + ReferenceImageName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[REFERENCE_IMAGE]"); - client.deleteReferenceImage(formattedName); + client.deleteReferenceImage(name); List actualRequests = mockProductSearch.getRequests(); Assert.assertEquals(1, actualRequests.size()); DeleteReferenceImageRequest actualRequest = (DeleteReferenceImageRequest) actualRequests.get(0); - Assert.assertEquals(formattedName, actualRequest.getName()); + Assert.assertEquals(name, ReferenceImageName.parse(actualRequest.getName())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -454,10 +448,10 @@ public void deleteReferenceImageExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedName = - ProductSearchClient.formatImageName("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[IMAGE]"); + ReferenceImageName name = + ReferenceImageName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[REFERENCE_IMAGE]"); - client.deleteReferenceImage(formattedName); + client.deleteReferenceImage(name); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -467,25 +461,26 @@ public void deleteReferenceImageExceptionTest() throws Exception { @Test @SuppressWarnings("all") public void createReferenceImageTest() { - String name = "name3373707"; + ReferenceImageName name = + ReferenceImageName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]", "[REFERENCE_IMAGE]"); String uri = "uri116076"; - ReferenceImage expectedResponse = ReferenceImage.newBuilder().setName(name).setUri(uri).build(); + ReferenceImage expectedResponse = + ReferenceImage.newBuilder().setName(name.toString()).setUri(uri).build(); mockProductSearch.addResponse(expectedResponse); - String formattedParent = - ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]"); + ProductName parent = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]"); ReferenceImage referenceImage = ReferenceImage.newBuilder().build(); String referenceImageId = "referenceImageId1946713331"; ReferenceImage actualResponse = - client.createReferenceImage(formattedParent, referenceImage, referenceImageId); + client.createReferenceImage(parent, referenceImage, referenceImageId); Assert.assertEquals(expectedResponse, actualResponse); List actualRequests = mockProductSearch.getRequests(); Assert.assertEquals(1, actualRequests.size()); CreateReferenceImageRequest actualRequest = (CreateReferenceImageRequest) actualRequests.get(0); - Assert.assertEquals(formattedParent, actualRequest.getParent()); + Assert.assertEquals(parent, ProductName.parse(actualRequest.getParent())); Assert.assertEquals(referenceImage, actualRequest.getReferenceImage()); Assert.assertEquals(referenceImageId, actualRequest.getReferenceImageId()); Assert.assertTrue( @@ -501,12 +496,11 @@ public void createReferenceImageExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedParent = - ProductSearchClient.formatProductName("[PROJECT]", "[LOCATION]", "[PRODUCT]"); + ProductName parent = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]"); ReferenceImage referenceImage = ReferenceImage.newBuilder().build(); String referenceImageId = "referenceImageId1946713331"; - client.createReferenceImage(formattedParent, referenceImage, referenceImageId); + client.createReferenceImage(parent, referenceImage, referenceImageId); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -516,24 +510,24 @@ public void createReferenceImageExceptionTest() throws Exception { @Test @SuppressWarnings("all") public void createProductSetTest() { - String name = "name3373707"; + ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); String displayName = "displayName1615086568"; ProductSet expectedResponse = - ProductSet.newBuilder().setName(name).setDisplayName(displayName).build(); + ProductSet.newBuilder().setName(name.toString()).setDisplayName(displayName).build(); mockProductSearch.addResponse(expectedResponse); - String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]"); + LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); ProductSet productSet = ProductSet.newBuilder().build(); String productSetId = "productSetId4216680"; - ProductSet actualResponse = client.createProductSet(formattedParent, productSet, productSetId); + ProductSet actualResponse = client.createProductSet(parent, productSet, productSetId); Assert.assertEquals(expectedResponse, actualResponse); List actualRequests = mockProductSearch.getRequests(); Assert.assertEquals(1, actualRequests.size()); CreateProductSetRequest actualRequest = (CreateProductSetRequest) actualRequests.get(0); - Assert.assertEquals(formattedParent, actualRequest.getParent()); + Assert.assertEquals(parent, LocationName.parse(actualRequest.getParent())); Assert.assertEquals(productSet, actualRequest.getProductSet()); Assert.assertEquals(productSetId, actualRequest.getProductSetId()); Assert.assertTrue( @@ -549,11 +543,11 @@ public void createProductSetExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]"); + LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); ProductSet productSet = ProductSet.newBuilder().build(); String productSetId = "productSetId4216680"; - client.createProductSet(formattedParent, productSet, productSetId); + client.createProductSet(parent, productSet, productSetId); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -573,9 +567,9 @@ public void listProductSetsTest() { .build(); mockProductSearch.addResponse(expectedResponse); - String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]"); + LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); - ListProductSetsPagedResponse pagedListResponse = client.listProductSets(formattedParent); + ListProductSetsPagedResponse pagedListResponse = client.listProductSets(parent); List resources = Lists.newArrayList(pagedListResponse.iterateAll()); Assert.assertEquals(1, resources.size()); @@ -585,7 +579,7 @@ public void listProductSetsTest() { Assert.assertEquals(1, actualRequests.size()); ListProductSetsRequest actualRequest = (ListProductSetsRequest) actualRequests.get(0); - Assert.assertEquals(formattedParent, actualRequest.getParent()); + Assert.assertEquals(parent, LocationName.parse(actualRequest.getParent())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -599,9 +593,9 @@ public void listProductSetsExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]"); + LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); - client.listProductSets(formattedParent); + client.listProductSets(parent); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -611,23 +605,22 @@ public void listProductSetsExceptionTest() throws Exception { @Test @SuppressWarnings("all") public void getProductSetTest() { - String name2 = "name2-1052831874"; + ProductSetName name2 = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); String displayName = "displayName1615086568"; ProductSet expectedResponse = - ProductSet.newBuilder().setName(name2).setDisplayName(displayName).build(); + ProductSet.newBuilder().setName(name2.toString()).setDisplayName(displayName).build(); mockProductSearch.addResponse(expectedResponse); - String formattedName = - ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); + ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); - ProductSet actualResponse = client.getProductSet(formattedName); + ProductSet actualResponse = client.getProductSet(name); Assert.assertEquals(expectedResponse, actualResponse); List actualRequests = mockProductSearch.getRequests(); Assert.assertEquals(1, actualRequests.size()); GetProductSetRequest actualRequest = (GetProductSetRequest) actualRequests.get(0); - Assert.assertEquals(formattedName, actualRequest.getName()); + Assert.assertEquals(name, ProductSetName.parse(actualRequest.getName())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -641,10 +634,9 @@ public void getProductSetExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedName = - ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); + ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); - client.getProductSet(formattedName); + client.getProductSet(name); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -654,10 +646,10 @@ public void getProductSetExceptionTest() throws Exception { @Test @SuppressWarnings("all") public void updateProductSetTest() { - String name = "name3373707"; + ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); String displayName = "displayName1615086568"; ProductSet expectedResponse = - ProductSet.newBuilder().setName(name).setDisplayName(displayName).build(); + ProductSet.newBuilder().setName(name.toString()).setDisplayName(displayName).build(); mockProductSearch.addResponse(expectedResponse); ProductSet productSet = ProductSet.newBuilder().build(); @@ -701,16 +693,15 @@ public void deleteProductSetTest() { Empty expectedResponse = Empty.newBuilder().build(); mockProductSearch.addResponse(expectedResponse); - String formattedName = - ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); + ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); - client.deleteProductSet(formattedName); + client.deleteProductSet(name); List actualRequests = mockProductSearch.getRequests(); Assert.assertEquals(1, actualRequests.size()); DeleteProductSetRequest actualRequest = (DeleteProductSetRequest) actualRequests.get(0); - Assert.assertEquals(formattedName, actualRequest.getName()); + Assert.assertEquals(name, ProductSetName.parse(actualRequest.getName())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -724,10 +715,9 @@ public void deleteProductSetExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedName = - ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); + ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); - client.deleteProductSet(formattedName); + client.deleteProductSet(name); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -740,19 +730,18 @@ public void addProductToProductSetTest() { Empty expectedResponse = Empty.newBuilder().build(); mockProductSearch.addResponse(expectedResponse); - String formattedName = - ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); - String product = "product-309474065"; + ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); + ProductName product = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]"); - client.addProductToProductSet(formattedName, product); + client.addProductToProductSet(name, product); List actualRequests = mockProductSearch.getRequests(); Assert.assertEquals(1, actualRequests.size()); AddProductToProductSetRequest actualRequest = (AddProductToProductSetRequest) actualRequests.get(0); - Assert.assertEquals(formattedName, actualRequest.getName()); - Assert.assertEquals(product, actualRequest.getProduct()); + Assert.assertEquals(name, ProductSetName.parse(actualRequest.getName())); + Assert.assertEquals(product, ProductName.parse(actualRequest.getProduct())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -766,11 +755,10 @@ public void addProductToProductSetExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedName = - ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); - String product = "product-309474065"; + ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); + ProductName product = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]"); - client.addProductToProductSet(formattedName, product); + client.addProductToProductSet(name, product); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -783,19 +771,18 @@ public void removeProductFromProductSetTest() { Empty expectedResponse = Empty.newBuilder().build(); mockProductSearch.addResponse(expectedResponse); - String formattedName = - ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); - String product = "product-309474065"; + ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); + ProductName product = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]"); - client.removeProductFromProductSet(formattedName, product); + client.removeProductFromProductSet(name, product); List actualRequests = mockProductSearch.getRequests(); Assert.assertEquals(1, actualRequests.size()); RemoveProductFromProductSetRequest actualRequest = (RemoveProductFromProductSetRequest) actualRequests.get(0); - Assert.assertEquals(formattedName, actualRequest.getName()); - Assert.assertEquals(product, actualRequest.getProduct()); + Assert.assertEquals(name, ProductSetName.parse(actualRequest.getName())); + Assert.assertEquals(product, ProductName.parse(actualRequest.getProduct())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -809,11 +796,10 @@ public void removeProductFromProductSetExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedName = - ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); - String product = "product-309474065"; + ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); + ProductName product = ProductName.of("[PROJECT]", "[LOCATION]", "[PRODUCT]"); - client.removeProductFromProductSet(formattedName, product); + client.removeProductFromProductSet(name, product); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -833,11 +819,9 @@ public void listProductsInProductSetTest() { .build(); mockProductSearch.addResponse(expectedResponse); - String formattedName = - ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); + ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); - ListProductsInProductSetPagedResponse pagedListResponse = - client.listProductsInProductSet(formattedName); + ListProductsInProductSetPagedResponse pagedListResponse = client.listProductsInProductSet(name); List resources = Lists.newArrayList(pagedListResponse.iterateAll()); Assert.assertEquals(1, resources.size()); @@ -848,7 +832,7 @@ public void listProductsInProductSetTest() { ListProductsInProductSetRequest actualRequest = (ListProductsInProductSetRequest) actualRequests.get(0); - Assert.assertEquals(formattedName, actualRequest.getName()); + Assert.assertEquals(name, ProductSetName.parse(actualRequest.getName())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), @@ -862,10 +846,9 @@ public void listProductsInProductSetExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedName = - ProductSearchClient.formatProductSetName("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); + ProductSetName name = ProductSetName.of("[PROJECT]", "[LOCATION]", "[PRODUCT_SET]"); - client.listProductsInProductSet(formattedName); + client.listProductsInProductSet(name); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception @@ -884,18 +867,18 @@ public void importProductSetsTest() throws Exception { .build(); mockProductSearch.addResponse(resultOperation); - String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]"); + LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); ImportProductSetsInputConfig inputConfig = ImportProductSetsInputConfig.newBuilder().build(); ImportProductSetsResponse actualResponse = - client.importProductSetsAsync(formattedParent, inputConfig).get(); + client.importProductSetsAsync(parent, inputConfig).get(); Assert.assertEquals(expectedResponse, actualResponse); List actualRequests = mockProductSearch.getRequests(); Assert.assertEquals(1, actualRequests.size()); ImportProductSetsRequest actualRequest = (ImportProductSetsRequest) actualRequests.get(0); - Assert.assertEquals(formattedParent, actualRequest.getParent()); + Assert.assertEquals(parent, LocationName.parse(actualRequest.getParent())); Assert.assertEquals(inputConfig, actualRequest.getInputConfig()); Assert.assertTrue( channelProvider.isHeaderSent( @@ -910,10 +893,10 @@ public void importProductSetsExceptionTest() throws Exception { mockProductSearch.addException(exception); try { - String formattedParent = ProductSearchClient.formatLocationName("[PROJECT]", "[LOCATION]"); + LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); ImportProductSetsInputConfig inputConfig = ImportProductSetsInputConfig.newBuilder().build(); - client.importProductSetsAsync(formattedParent, inputConfig).get(); + client.importProductSetsAsync(parent, inputConfig).get(); Assert.fail("No exception raised"); } catch (ExecutionException e) { Assert.assertEquals(InvalidArgumentException.class, e.getCause().getClass()); diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorClientTest.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorClientTest.java index 3daf87cd8d3d..26c0978ca5a2 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorClientTest.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorClientTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorSmokeTest.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorSmokeTest.java index 5a0ad9c62b30..06fed5864d30 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorSmokeTest.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/ImageAnnotatorSmokeTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/MockImageAnnotator.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/MockImageAnnotator.java index 18590cf7a0e1..ac46cae82528 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/MockImageAnnotator.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/MockImageAnnotator.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/MockImageAnnotatorImpl.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/MockImageAnnotatorImpl.java index 39b198db764c..de6bda3f4275 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/MockImageAnnotatorImpl.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p1beta1/MockImageAnnotatorImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorClientTest.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorClientTest.java index 85c6c962d928..7f9ce9529838 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorClientTest.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorClientTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorSmokeTest.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorSmokeTest.java index aa9600ca7d0e..9239b3e3b582 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorSmokeTest.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/ImageAnnotatorSmokeTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/MockImageAnnotator.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/MockImageAnnotator.java index 59867209f4ea..a701d667546a 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/MockImageAnnotator.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/MockImageAnnotator.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/MockImageAnnotatorImpl.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/MockImageAnnotatorImpl.java index ce9916cc8cc5..1d34d56e8354 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/MockImageAnnotatorImpl.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p2beta1/MockImageAnnotatorImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorClientTest.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorClientTest.java index 77143de82703..8a5ac896823c 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorClientTest.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorClientTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorSmokeTest.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorSmokeTest.java index 1d8567983454..669bb0ae1a5f 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorSmokeTest.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/ImageAnnotatorSmokeTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockImageAnnotator.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockImageAnnotator.java index 37eff0c3b06c..c9b6636274dd 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockImageAnnotator.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockImageAnnotator.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockImageAnnotatorImpl.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockImageAnnotatorImpl.java index 3a678fc89052..e88f27fdac2d 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockImageAnnotatorImpl.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockImageAnnotatorImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockProductSearch.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockProductSearch.java index dcc8e9d46518..889aa57896fe 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockProductSearch.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockProductSearch.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockProductSearchImpl.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockProductSearchImpl.java index 6e08938872ff..7766818c674d 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockProductSearchImpl.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/MockProductSearchImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/ProductSearchClientTest.java b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/ProductSearchClientTest.java index e85499e681fe..db442500539f 100644 --- a/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/ProductSearchClientTest.java +++ b/google-cloud-clients/google-cloud-vision/src/test/java/com/google/cloud/vision/v1p3beta1/ProductSearchClientTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2018 Google LLC + * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/google-cloud-clients/google-cloud-vision/synth.metadata b/google-cloud-clients/google-cloud-vision/synth.metadata new file mode 100644 index 000000000000..af1052d449e5 --- /dev/null +++ b/google-cloud-clients/google-cloud-vision/synth.metadata @@ -0,0 +1,62 @@ +{ + "updateTime": "2019-02-15T08:56:29.419597Z", + "sources": [ + { + "generator": { + "name": "artman", + "version": "0.16.13", + "dockerImage": "googleapis/artman@sha256:5fd9aee1d82a00cebf425c8fa431f5457539562f5867ad9c54370f0ec9a7ccaa" + } + }, + { + "git": { + "name": "googleapis", + "remote": "https://github.com/googleapis/googleapis.git", + "sha": "0b81123e2e0e6a5097102a765c54d7c771781461", + "internalRef": "233777126" + } + } + ], + "destinations": [ + { + "client": { + "source": "googleapis", + "apiName": "vision", + "apiVersion": "v1", + "language": "java", + "generator": "gapic", + "config": "google/cloud/vision/artman_vision_v1.yaml" + } + }, + { + "client": { + "source": "googleapis", + "apiName": "vision", + "apiVersion": "v1p1beta1", + "language": "java", + "generator": "gapic", + "config": "google/cloud/vision/artman_vision_v1p1beta1.yaml" + } + }, + { + "client": { + "source": "googleapis", + "apiName": "vision", + "apiVersion": "v1p2beta1", + "language": "java", + "generator": "gapic", + "config": "google/cloud/vision/artman_vision_v1p2beta1.yaml" + } + }, + { + "client": { + "source": "googleapis", + "apiName": "vision", + "apiVersion": "v1p3beta1", + "language": "java", + "generator": "gapic", + "config": "google/cloud/vision/artman_vision_v1p3beta1.yaml" + } + } + ] +} \ No newline at end of file diff --git a/google-cloud-clients/google-cloud-websecurityscanner/README.md b/google-cloud-clients/google-cloud-websecurityscanner/README.md index 5a7ffbf3d297..322a31491c70 100644 --- a/google-cloud-clients/google-cloud-websecurityscanner/README.md +++ b/google-cloud-clients/google-cloud-websecurityscanner/README.md @@ -22,16 +22,16 @@ If you are using Maven, add this to your pom.xml file com.google.cloud google-cloud-websecurityscanner - 0.80.0-alpha + 0.81.0-alpha ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-websecurityscanner:0.80.0-alpha' +compile 'com.google.cloud:google-cloud-websecurityscanner:0.81.0-alpha' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-websecurityscanner" % "0.80.0-alpha" +libraryDependencies += "com.google.cloud" % "google-cloud-websecurityscanner" % "0.81.0-alpha" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-clients/google-cloud-websecurityscanner/pom.xml b/google-cloud-clients/google-cloud-websecurityscanner/pom.xml index c9ccdb0cd04d..fa990b4f554d 100644 --- a/google-cloud-clients/google-cloud-websecurityscanner/pom.xml +++ b/google-cloud-clients/google-cloud-websecurityscanner/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-websecurityscanner - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha jar Google Cloud Web Security Scanner https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients/google-cloud-websecurityscanner @@ -12,7 +12,7 @@ com.google.cloud google-cloud-clients - 0.80.1-alpha-SNAPSHOT + 0.81.0-alpha google-cloud-websecurityscanner diff --git a/google-cloud-clients/google-cloud-websecurityscanner/src/main/java/com/google/cloud/websecurityscanner/v1alpha/WebSecurityScannerClient.java b/google-cloud-clients/google-cloud-websecurityscanner/src/main/java/com/google/cloud/websecurityscanner/v1alpha/WebSecurityScannerClient.java index 813abbb5a225..1fb2de0943bd 100644 --- a/google-cloud-clients/google-cloud-websecurityscanner/src/main/java/com/google/cloud/websecurityscanner/v1alpha/WebSecurityScannerClient.java +++ b/google-cloud-clients/google-cloud-websecurityscanner/src/main/java/com/google/cloud/websecurityscanner/v1alpha/WebSecurityScannerClient.java @@ -25,6 +25,7 @@ import com.google.api.gax.paging.AbstractPagedListResponse; import com.google.api.gax.rpc.PageContext; import com.google.api.gax.rpc.UnaryCallable; +import com.google.api.pathtemplate.PathTemplate; import com.google.cloud.websecurityscanner.v1alpha.stub.WebSecurityScannerStub; import com.google.cloud.websecurityscanner.v1alpha.stub.WebSecurityScannerStubSettings; import com.google.protobuf.Empty; @@ -46,7 +47,7 @@ *
  * 
  * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
- *   String formattedParent = ProjectName.format("[PROJECT]");
+ *   String formattedParent = WebSecurityScannerClient.formatProjectName("[PROJECT]");
  *   ScanConfig scanConfig = ScanConfig.newBuilder().build();
  *   ScanConfig response = webSecurityScannerClient.createScanConfig(formattedParent, scanConfig);
  * }
@@ -110,6 +111,116 @@ public class WebSecurityScannerClient implements BackgroundResource {
   private final WebSecurityScannerSettings settings;
   private final WebSecurityScannerStub stub;
 
+  private static final PathTemplate PROJECT_PATH_TEMPLATE =
+      PathTemplate.createWithoutUrlEncoding("projects/{project}");
+
+  private static final PathTemplate SCAN_CONFIG_PATH_TEMPLATE =
+      PathTemplate.createWithoutUrlEncoding("projects/{project}/scanConfigs/{scan_config}");
+
+  private static final PathTemplate SCAN_RUN_PATH_TEMPLATE =
+      PathTemplate.createWithoutUrlEncoding(
+          "projects/{project}/scanConfigs/{scan_config}/scanRuns/{scan_run}");
+
+  private static final PathTemplate FINDING_PATH_TEMPLATE =
+      PathTemplate.createWithoutUrlEncoding(
+          "projects/{project}/scanConfigs/{scan_config}/scanRuns/{scan_run}/findings/{finding}");
+
+  /** Formats a string containing the fully-qualified path to represent a project resource. */
+  public static final String formatProjectName(String project) {
+    return PROJECT_PATH_TEMPLATE.instantiate("project", project);
+  }
+
+  /** Formats a string containing the fully-qualified path to represent a scan_config resource. */
+  public static final String formatScanConfigName(String project, String scanConfig) {
+    return SCAN_CONFIG_PATH_TEMPLATE.instantiate(
+        "project", project,
+        "scan_config", scanConfig);
+  }
+
+  /** Formats a string containing the fully-qualified path to represent a scan_run resource. */
+  public static final String formatScanRunName(String project, String scanConfig, String scanRun) {
+    return SCAN_RUN_PATH_TEMPLATE.instantiate(
+        "project", project,
+        "scan_config", scanConfig,
+        "scan_run", scanRun);
+  }
+
+  /** Formats a string containing the fully-qualified path to represent a finding resource. */
+  public static final String formatFindingName(
+      String project, String scanConfig, String scanRun, String finding) {
+    return FINDING_PATH_TEMPLATE.instantiate(
+        "project", project,
+        "scan_config", scanConfig,
+        "scan_run", scanRun,
+        "finding", finding);
+  }
+
+  /** Parses the project from the given fully-qualified path which represents a project resource. */
+  public static final String parseProjectFromProjectName(String projectName) {
+    return PROJECT_PATH_TEMPLATE.parse(projectName).get("project");
+  }
+
+  /**
+   * Parses the project from the given fully-qualified path which represents a scan_config resource.
+   */
+  public static final String parseProjectFromScanConfigName(String scanConfigName) {
+    return SCAN_CONFIG_PATH_TEMPLATE.parse(scanConfigName).get("project");
+  }
+
+  /**
+   * Parses the scan_config from the given fully-qualified path which represents a scan_config
+   * resource.
+   */
+  public static final String parseScanConfigFromScanConfigName(String scanConfigName) {
+    return SCAN_CONFIG_PATH_TEMPLATE.parse(scanConfigName).get("scan_config");
+  }
+
+  /**
+   * Parses the project from the given fully-qualified path which represents a scan_run resource.
+   */
+  public static final String parseProjectFromScanRunName(String scanRunName) {
+    return SCAN_RUN_PATH_TEMPLATE.parse(scanRunName).get("project");
+  }
+
+  /**
+   * Parses the scan_config from the given fully-qualified path which represents a scan_run
+   * resource.
+   */
+  public static final String parseScanConfigFromScanRunName(String scanRunName) {
+    return SCAN_RUN_PATH_TEMPLATE.parse(scanRunName).get("scan_config");
+  }
+
+  /**
+   * Parses the scan_run from the given fully-qualified path which represents a scan_run resource.
+   */
+  public static final String parseScanRunFromScanRunName(String scanRunName) {
+    return SCAN_RUN_PATH_TEMPLATE.parse(scanRunName).get("scan_run");
+  }
+
+  /** Parses the project from the given fully-qualified path which represents a finding resource. */
+  public static final String parseProjectFromFindingName(String findingName) {
+    return FINDING_PATH_TEMPLATE.parse(findingName).get("project");
+  }
+
+  /**
+   * Parses the scan_config from the given fully-qualified path which represents a finding resource.
+   */
+  public static final String parseScanConfigFromFindingName(String findingName) {
+    return FINDING_PATH_TEMPLATE.parse(findingName).get("scan_config");
+  }
+
+  /**
+   * Parses the scan_run from the given fully-qualified path which represents a finding resource.
+   */
+  public static final String parseScanRunFromFindingName(String findingName) {
+    return FINDING_PATH_TEMPLATE.parse(findingName).get("scan_run");
+  }
+
+  /** Parses the finding from the given fully-qualified path which represents a finding resource. */
+  public static final String parseFindingFromFindingName(String findingName) {
+    return FINDING_PATH_TEMPLATE.parse(findingName).get("finding");
+  }
+
   /** Constructs an instance of WebSecurityScannerClient with default settings. */
   public static final WebSecurityScannerClient create() throws IOException {
     return create(WebSecurityScannerSettings.newBuilder().build());
@@ -166,7 +277,7 @@ public WebSecurityScannerStub getStub() {
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ProjectName.format("[PROJECT]");
+   *   String formattedParent = WebSecurityScannerClient.formatProjectName("[PROJECT]");
    *   ScanConfig scanConfig = ScanConfig.newBuilder().build();
    *   ScanConfig response = webSecurityScannerClient.createScanConfig(formattedParent, scanConfig);
    * }
@@ -178,7 +289,7 @@ public WebSecurityScannerStub getStub() {
    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
    */
   public final ScanConfig createScanConfig(String parent, ScanConfig scanConfig) {
-
+    PROJECT_PATH_TEMPLATE.validate(parent, "createScanConfig");
     CreateScanConfigRequest request =
         CreateScanConfigRequest.newBuilder().setParent(parent).setScanConfig(scanConfig).build();
     return createScanConfig(request);
@@ -192,7 +303,7 @@ public final ScanConfig createScanConfig(String parent, ScanConfig scanConfig) {
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ProjectName.format("[PROJECT]");
+   *   String formattedParent = WebSecurityScannerClient.formatProjectName("[PROJECT]");
    *   ScanConfig scanConfig = ScanConfig.newBuilder().build();
    *   CreateScanConfigRequest request = CreateScanConfigRequest.newBuilder()
    *     .setParent(formattedParent)
@@ -217,7 +328,7 @@ public final ScanConfig createScanConfig(CreateScanConfigRequest request) {
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ProjectName.format("[PROJECT]");
+   *   String formattedParent = WebSecurityScannerClient.formatProjectName("[PROJECT]");
    *   ScanConfig scanConfig = ScanConfig.newBuilder().build();
    *   CreateScanConfigRequest request = CreateScanConfigRequest.newBuilder()
    *     .setParent(formattedParent)
@@ -241,7 +352,7 @@ public final UnaryCallable createScanConfig
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+   *   String formattedName = WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
    *   webSecurityScannerClient.deleteScanConfig(formattedName);
    * }
    * 
@@ -251,7 +362,7 @@ public final UnaryCallable createScanConfig * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final void deleteScanConfig(String name) { - + SCAN_CONFIG_PATH_TEMPLATE.validate(name, "deleteScanConfig"); DeleteScanConfigRequest request = DeleteScanConfigRequest.newBuilder().setName(name).build(); deleteScanConfig(request); } @@ -264,7 +375,7 @@ public final void deleteScanConfig(String name) { * *

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+   *   String formattedName = WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
    *   DeleteScanConfigRequest request = DeleteScanConfigRequest.newBuilder()
    *     .setName(formattedName)
    *     .build();
@@ -287,7 +398,7 @@ public final void deleteScanConfig(DeleteScanConfigRequest request) {
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+   *   String formattedName = WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
    *   DeleteScanConfigRequest request = DeleteScanConfigRequest.newBuilder()
    *     .setName(formattedName)
    *     .build();
@@ -309,7 +420,7 @@ public final UnaryCallable deleteScanConfigCalla
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+   *   String formattedName = WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
    *   ScanConfig response = webSecurityScannerClient.getScanConfig(formattedName);
    * }
    * 
@@ -319,7 +430,7 @@ public final UnaryCallable deleteScanConfigCalla * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final ScanConfig getScanConfig(String name) { - + SCAN_CONFIG_PATH_TEMPLATE.validate(name, "getScanConfig"); GetScanConfigRequest request = GetScanConfigRequest.newBuilder().setName(name).build(); return getScanConfig(request); } @@ -332,7 +443,7 @@ public final ScanConfig getScanConfig(String name) { * *

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+   *   String formattedName = WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
    *   GetScanConfigRequest request = GetScanConfigRequest.newBuilder()
    *     .setName(formattedName)
    *     .build();
@@ -355,7 +466,7 @@ public final ScanConfig getScanConfig(GetScanConfigRequest request) {
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+   *   String formattedName = WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
    *   GetScanConfigRequest request = GetScanConfigRequest.newBuilder()
    *     .setName(formattedName)
    *     .build();
@@ -377,7 +488,7 @@ public final UnaryCallable getScanConfigCallab
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ProjectName.format("[PROJECT]");
+   *   String formattedParent = WebSecurityScannerClient.formatProjectName("[PROJECT]");
    *   for (ScanConfig element : webSecurityScannerClient.listScanConfigs(formattedParent).iterateAll()) {
    *     // doThingsWith(element);
    *   }
@@ -389,6 +500,7 @@ public final UnaryCallable getScanConfigCallab
    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
    */
   public final ListScanConfigsPagedResponse listScanConfigs(String parent) {
+    PROJECT_PATH_TEMPLATE.validate(parent, "listScanConfigs");
     ListScanConfigsRequest request = ListScanConfigsRequest.newBuilder().setParent(parent).build();
     return listScanConfigs(request);
   }
@@ -401,7 +513,7 @@ public final ListScanConfigsPagedResponse listScanConfigs(String parent) {
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ProjectName.format("[PROJECT]");
+   *   String formattedParent = WebSecurityScannerClient.formatProjectName("[PROJECT]");
    *   ListScanConfigsRequest request = ListScanConfigsRequest.newBuilder()
    *     .setParent(formattedParent)
    *     .build();
@@ -426,7 +538,7 @@ public final ListScanConfigsPagedResponse listScanConfigs(ListScanConfigsRequest
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ProjectName.format("[PROJECT]");
+   *   String formattedParent = WebSecurityScannerClient.formatProjectName("[PROJECT]");
    *   ListScanConfigsRequest request = ListScanConfigsRequest.newBuilder()
    *     .setParent(formattedParent)
    *     .build();
@@ -451,7 +563,7 @@ public final ListScanConfigsPagedResponse listScanConfigs(ListScanConfigsRequest
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ProjectName.format("[PROJECT]");
+   *   String formattedParent = WebSecurityScannerClient.formatProjectName("[PROJECT]");
    *   ListScanConfigsRequest request = ListScanConfigsRequest.newBuilder()
    *     .setParent(formattedParent)
    *     .build();
@@ -564,7 +676,7 @@ public final UnaryCallable updateScanConfig
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+   *   String formattedName = WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
    *   ScanRun response = webSecurityScannerClient.startScanRun(formattedName);
    * }
    * 
@@ -574,7 +686,7 @@ public final UnaryCallable updateScanConfig * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final ScanRun startScanRun(String name) { - + SCAN_CONFIG_PATH_TEMPLATE.validate(name, "startScanRun"); StartScanRunRequest request = StartScanRunRequest.newBuilder().setName(name).build(); return startScanRun(request); } @@ -587,7 +699,7 @@ public final ScanRun startScanRun(String name) { * *

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+   *   String formattedName = WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
    *   StartScanRunRequest request = StartScanRunRequest.newBuilder()
    *     .setName(formattedName)
    *     .build();
@@ -610,7 +722,7 @@ public final ScanRun startScanRun(StartScanRunRequest request) {
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+   *   String formattedName = WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
    *   StartScanRunRequest request = StartScanRunRequest.newBuilder()
    *     .setName(formattedName)
    *     .build();
@@ -632,7 +744,7 @@ public final UnaryCallable startScanRunCallable()
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedName = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   ScanRun response = webSecurityScannerClient.getScanRun(formattedName);
    * }
    * 
@@ -642,7 +754,7 @@ public final UnaryCallable startScanRunCallable() * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final ScanRun getScanRun(String name) { - + SCAN_RUN_PATH_TEMPLATE.validate(name, "getScanRun"); GetScanRunRequest request = GetScanRunRequest.newBuilder().setName(name).build(); return getScanRun(request); } @@ -655,7 +767,7 @@ public final ScanRun getScanRun(String name) { * *

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedName = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   GetScanRunRequest request = GetScanRunRequest.newBuilder()
    *     .setName(formattedName)
    *     .build();
@@ -678,7 +790,7 @@ public final ScanRun getScanRun(GetScanRunRequest request) {
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedName = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   GetScanRunRequest request = GetScanRunRequest.newBuilder()
    *     .setName(formattedName)
    *     .build();
@@ -700,7 +812,7 @@ public final UnaryCallable getScanRunCallable() {
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+   *   String formattedParent = WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
    *   for (ScanRun element : webSecurityScannerClient.listScanRuns(formattedParent).iterateAll()) {
    *     // doThingsWith(element);
    *   }
@@ -712,6 +824,7 @@ public final UnaryCallable getScanRunCallable() {
    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
    */
   public final ListScanRunsPagedResponse listScanRuns(String parent) {
+    SCAN_CONFIG_PATH_TEMPLATE.validate(parent, "listScanRuns");
     ListScanRunsRequest request = ListScanRunsRequest.newBuilder().setParent(parent).build();
     return listScanRuns(request);
   }
@@ -724,7 +837,7 @@ public final ListScanRunsPagedResponse listScanRuns(String parent) {
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+   *   String formattedParent = WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
    *   ListScanRunsRequest request = ListScanRunsRequest.newBuilder()
    *     .setParent(formattedParent)
    *     .build();
@@ -749,7 +862,7 @@ public final ListScanRunsPagedResponse listScanRuns(ListScanRunsRequest request)
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+   *   String formattedParent = WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
    *   ListScanRunsRequest request = ListScanRunsRequest.newBuilder()
    *     .setParent(formattedParent)
    *     .build();
@@ -774,7 +887,7 @@ public final ListScanRunsPagedResponse listScanRuns(ListScanRunsRequest request)
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+   *   String formattedParent = WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
    *   ListScanRunsRequest request = ListScanRunsRequest.newBuilder()
    *     .setParent(formattedParent)
    *     .build();
@@ -805,7 +918,7 @@ public final UnaryCallable listScanRu
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedName = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   ScanRun response = webSecurityScannerClient.stopScanRun(formattedName);
    * }
    * 
@@ -815,7 +928,7 @@ public final UnaryCallable listScanRu * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final ScanRun stopScanRun(String name) { - + SCAN_RUN_PATH_TEMPLATE.validate(name, "stopScanRun"); StopScanRunRequest request = StopScanRunRequest.newBuilder().setName(name).build(); return stopScanRun(request); } @@ -828,7 +941,7 @@ public final ScanRun stopScanRun(String name) { * *

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedName = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   StopScanRunRequest request = StopScanRunRequest.newBuilder()
    *     .setName(formattedName)
    *     .build();
@@ -851,7 +964,7 @@ public final ScanRun stopScanRun(StopScanRunRequest request) {
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedName = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   StopScanRunRequest request = StopScanRunRequest.newBuilder()
    *     .setName(formattedName)
    *     .build();
@@ -873,7 +986,7 @@ public final UnaryCallable stopScanRunCallable() {
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedParent = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   for (CrawledUrl element : webSecurityScannerClient.listCrawledUrls(formattedParent).iterateAll()) {
    *     // doThingsWith(element);
    *   }
@@ -885,6 +998,7 @@ public final UnaryCallable stopScanRunCallable() {
    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
    */
   public final ListCrawledUrlsPagedResponse listCrawledUrls(String parent) {
+    SCAN_RUN_PATH_TEMPLATE.validate(parent, "listCrawledUrls");
     ListCrawledUrlsRequest request = ListCrawledUrlsRequest.newBuilder().setParent(parent).build();
     return listCrawledUrls(request);
   }
@@ -897,7 +1011,7 @@ public final ListCrawledUrlsPagedResponse listCrawledUrls(String parent) {
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedParent = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   ListCrawledUrlsRequest request = ListCrawledUrlsRequest.newBuilder()
    *     .setParent(formattedParent)
    *     .build();
@@ -922,7 +1036,7 @@ public final ListCrawledUrlsPagedResponse listCrawledUrls(ListCrawledUrlsRequest
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedParent = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   ListCrawledUrlsRequest request = ListCrawledUrlsRequest.newBuilder()
    *     .setParent(formattedParent)
    *     .build();
@@ -947,7 +1061,7 @@ public final ListCrawledUrlsPagedResponse listCrawledUrls(ListCrawledUrlsRequest
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedParent = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   ListCrawledUrlsRequest request = ListCrawledUrlsRequest.newBuilder()
    *     .setParent(formattedParent)
    *     .build();
@@ -979,7 +1093,7 @@ public final ListCrawledUrlsPagedResponse listCrawledUrls(ListCrawledUrlsRequest
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = FindingName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]", "[FINDING]");
+   *   String formattedName = WebSecurityScannerClient.formatFindingName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]", "[FINDING]");
    *   Finding response = webSecurityScannerClient.getFinding(formattedName);
    * }
    * 
@@ -990,7 +1104,7 @@ public final ListCrawledUrlsPagedResponse listCrawledUrls(ListCrawledUrlsRequest * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final Finding getFinding(String name) { - + FINDING_PATH_TEMPLATE.validate(name, "getFinding"); GetFindingRequest request = GetFindingRequest.newBuilder().setName(name).build(); return getFinding(request); } @@ -1003,7 +1117,7 @@ public final Finding getFinding(String name) { * *

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = FindingName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]", "[FINDING]");
+   *   String formattedName = WebSecurityScannerClient.formatFindingName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]", "[FINDING]");
    *   GetFindingRequest request = GetFindingRequest.newBuilder()
    *     .setName(formattedName)
    *     .build();
@@ -1026,7 +1140,7 @@ public final Finding getFinding(GetFindingRequest request) {
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedName = FindingName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]", "[FINDING]");
+   *   String formattedName = WebSecurityScannerClient.formatFindingName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]", "[FINDING]");
    *   GetFindingRequest request = GetFindingRequest.newBuilder()
    *     .setName(formattedName)
    *     .build();
@@ -1048,7 +1162,7 @@ public final UnaryCallable getFindingCallable() {
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedParent = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   String filter = "";
    *   for (Finding element : webSecurityScannerClient.listFindings(formattedParent, filter).iterateAll()) {
    *     // doThingsWith(element);
@@ -1063,6 +1177,7 @@ public final UnaryCallable getFindingCallable() {
    * @throws com.google.api.gax.rpc.ApiException if the remote call fails
    */
   public final ListFindingsPagedResponse listFindings(String parent, String filter) {
+    SCAN_RUN_PATH_TEMPLATE.validate(parent, "listFindings");
     ListFindingsRequest request =
         ListFindingsRequest.newBuilder().setParent(parent).setFilter(filter).build();
     return listFindings(request);
@@ -1076,7 +1191,7 @@ public final ListFindingsPagedResponse listFindings(String parent, String filter
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedParent = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   String filter = "";
    *   ListFindingsRequest request = ListFindingsRequest.newBuilder()
    *     .setParent(formattedParent)
@@ -1103,7 +1218,7 @@ public final ListFindingsPagedResponse listFindings(ListFindingsRequest request)
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedParent = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   String filter = "";
    *   ListFindingsRequest request = ListFindingsRequest.newBuilder()
    *     .setParent(formattedParent)
@@ -1130,7 +1245,7 @@ public final ListFindingsPagedResponse listFindings(ListFindingsRequest request)
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedParent = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   String filter = "";
    *   ListFindingsRequest request = ListFindingsRequest.newBuilder()
    *     .setParent(formattedParent)
@@ -1163,7 +1278,7 @@ public final UnaryCallable listFindin
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedParent = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   ListFindingTypeStatsResponse response = webSecurityScannerClient.listFindingTypeStats(formattedParent);
    * }
    * 
@@ -1173,7 +1288,7 @@ public final UnaryCallable listFindin * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final ListFindingTypeStatsResponse listFindingTypeStats(String parent) { - + SCAN_RUN_PATH_TEMPLATE.validate(parent, "listFindingTypeStats"); ListFindingTypeStatsRequest request = ListFindingTypeStatsRequest.newBuilder().setParent(parent).build(); return listFindingTypeStats(request); @@ -1187,7 +1302,7 @@ public final ListFindingTypeStatsResponse listFindingTypeStats(String parent) { * *

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedParent = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   ListFindingTypeStatsRequest request = ListFindingTypeStatsRequest.newBuilder()
    *     .setParent(formattedParent)
    *     .build();
@@ -1211,7 +1326,7 @@ public final ListFindingTypeStatsResponse listFindingTypeStats(
    *
    * 

    * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
-   *   String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+   *   String formattedParent = WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
    *   ListFindingTypeStatsRequest request = ListFindingTypeStatsRequest.newBuilder()
    *     .setParent(formattedParent)
    *     .build();
diff --git a/google-cloud-clients/google-cloud-websecurityscanner/src/main/java/com/google/cloud/websecurityscanner/v1alpha/package-info.java b/google-cloud-clients/google-cloud-websecurityscanner/src/main/java/com/google/cloud/websecurityscanner/v1alpha/package-info.java
index 7358bdda9e66..9498bdc4a92c 100644
--- a/google-cloud-clients/google-cloud-websecurityscanner/src/main/java/com/google/cloud/websecurityscanner/v1alpha/package-info.java
+++ b/google-cloud-clients/google-cloud-websecurityscanner/src/main/java/com/google/cloud/websecurityscanner/v1alpha/package-info.java
@@ -30,7 +30,7 @@
  * 
  * 
  * try (WebSecurityScannerClient webSecurityScannerClient = WebSecurityScannerClient.create()) {
- *   String formattedParent = ProjectName.format("[PROJECT]");
+ *   String formattedParent = WebSecurityScannerClient.formatProjectName("[PROJECT]");
  *   ScanConfig scanConfig = ScanConfig.newBuilder().build();
  *   ScanConfig response = webSecurityScannerClient.createScanConfig(formattedParent, scanConfig);
  * }
diff --git a/google-cloud-clients/google-cloud-websecurityscanner/src/test/java/com/google/cloud/websecurityscanner/v1alpha/WebSecurityScannerClientTest.java b/google-cloud-clients/google-cloud-websecurityscanner/src/test/java/com/google/cloud/websecurityscanner/v1alpha/WebSecurityScannerClientTest.java
index d4b568cc4d94..1adb90f7652a 100644
--- a/google-cloud-clients/google-cloud-websecurityscanner/src/test/java/com/google/cloud/websecurityscanner/v1alpha/WebSecurityScannerClientTest.java
+++ b/google-cloud-clients/google-cloud-websecurityscanner/src/test/java/com/google/cloud/websecurityscanner/v1alpha/WebSecurityScannerClientTest.java
@@ -91,7 +91,7 @@ public void createScanConfigTest() {
         ScanConfig.newBuilder().setName(name).setDisplayName(displayName).setMaxQps(maxQps).build();
     mockWebSecurityScanner.addResponse(expectedResponse);
 
-    String formattedParent = ProjectName.format("[PROJECT]");
+    String formattedParent = WebSecurityScannerClient.formatProjectName("[PROJECT]");
     ScanConfig scanConfig = ScanConfig.newBuilder().build();
 
     ScanConfig actualResponse = client.createScanConfig(formattedParent, scanConfig);
@@ -116,7 +116,7 @@ public void createScanConfigExceptionTest() throws Exception {
     mockWebSecurityScanner.addException(exception);
 
     try {
-      String formattedParent = ProjectName.format("[PROJECT]");
+      String formattedParent = WebSecurityScannerClient.formatProjectName("[PROJECT]");
       ScanConfig scanConfig = ScanConfig.newBuilder().build();
 
       client.createScanConfig(formattedParent, scanConfig);
@@ -132,7 +132,8 @@ public void deleteScanConfigTest() {
     Empty expectedResponse = Empty.newBuilder().build();
     mockWebSecurityScanner.addResponse(expectedResponse);
 
-    String formattedName = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+    String formattedName =
+        WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
 
     client.deleteScanConfig(formattedName);
 
@@ -154,7 +155,8 @@ public void deleteScanConfigExceptionTest() throws Exception {
     mockWebSecurityScanner.addException(exception);
 
     try {
-      String formattedName = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+      String formattedName =
+          WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
 
       client.deleteScanConfig(formattedName);
       Assert.fail("No exception raised");
@@ -177,7 +179,8 @@ public void getScanConfigTest() {
             .build();
     mockWebSecurityScanner.addResponse(expectedResponse);
 
-    String formattedName = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+    String formattedName =
+        WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
 
     ScanConfig actualResponse = client.getScanConfig(formattedName);
     Assert.assertEquals(expectedResponse, actualResponse);
@@ -200,7 +203,8 @@ public void getScanConfigExceptionTest() throws Exception {
     mockWebSecurityScanner.addException(exception);
 
     try {
-      String formattedName = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+      String formattedName =
+          WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
 
       client.getScanConfig(formattedName);
       Assert.fail("No exception raised");
@@ -222,7 +226,7 @@ public void listScanConfigsTest() {
             .build();
     mockWebSecurityScanner.addResponse(expectedResponse);
 
-    String formattedParent = ProjectName.format("[PROJECT]");
+    String formattedParent = WebSecurityScannerClient.formatProjectName("[PROJECT]");
 
     ListScanConfigsPagedResponse pagedListResponse = client.listScanConfigs(formattedParent);
 
@@ -248,7 +252,7 @@ public void listScanConfigsExceptionTest() throws Exception {
     mockWebSecurityScanner.addException(exception);
 
     try {
-      String formattedParent = ProjectName.format("[PROJECT]");
+      String formattedParent = WebSecurityScannerClient.formatProjectName("[PROJECT]");
 
       client.listScanConfigs(formattedParent);
       Assert.fail("No exception raised");
@@ -320,7 +324,8 @@ public void startScanRunTest() {
             .build();
     mockWebSecurityScanner.addResponse(expectedResponse);
 
-    String formattedName = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+    String formattedName =
+        WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
 
     ScanRun actualResponse = client.startScanRun(formattedName);
     Assert.assertEquals(expectedResponse, actualResponse);
@@ -343,7 +348,8 @@ public void startScanRunExceptionTest() throws Exception {
     mockWebSecurityScanner.addException(exception);
 
     try {
-      String formattedName = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+      String formattedName =
+          WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
 
       client.startScanRun(formattedName);
       Assert.fail("No exception raised");
@@ -370,7 +376,8 @@ public void getScanRunTest() {
             .build();
     mockWebSecurityScanner.addResponse(expectedResponse);
 
-    String formattedName = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+    String formattedName =
+        WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
 
     ScanRun actualResponse = client.getScanRun(formattedName);
     Assert.assertEquals(expectedResponse, actualResponse);
@@ -393,7 +400,8 @@ public void getScanRunExceptionTest() throws Exception {
     mockWebSecurityScanner.addException(exception);
 
     try {
-      String formattedName = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+      String formattedName =
+          WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
 
       client.getScanRun(formattedName);
       Assert.fail("No exception raised");
@@ -415,7 +423,8 @@ public void listScanRunsTest() {
             .build();
     mockWebSecurityScanner.addResponse(expectedResponse);
 
-    String formattedParent = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+    String formattedParent =
+        WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
 
     ListScanRunsPagedResponse pagedListResponse = client.listScanRuns(formattedParent);
 
@@ -441,7 +450,8 @@ public void listScanRunsExceptionTest() throws Exception {
     mockWebSecurityScanner.addException(exception);
 
     try {
-      String formattedParent = ScanConfigName.format("[PROJECT]", "[SCAN_CONFIG]");
+      String formattedParent =
+          WebSecurityScannerClient.formatScanConfigName("[PROJECT]", "[SCAN_CONFIG]");
 
       client.listScanRuns(formattedParent);
       Assert.fail("No exception raised");
@@ -468,7 +478,8 @@ public void stopScanRunTest() {
             .build();
     mockWebSecurityScanner.addResponse(expectedResponse);
 
-    String formattedName = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+    String formattedName =
+        WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
 
     ScanRun actualResponse = client.stopScanRun(formattedName);
     Assert.assertEquals(expectedResponse, actualResponse);
@@ -491,7 +502,8 @@ public void stopScanRunExceptionTest() throws Exception {
     mockWebSecurityScanner.addException(exception);
 
     try {
-      String formattedName = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+      String formattedName =
+          WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
 
       client.stopScanRun(formattedName);
       Assert.fail("No exception raised");
@@ -513,7 +525,8 @@ public void listCrawledUrlsTest() {
             .build();
     mockWebSecurityScanner.addResponse(expectedResponse);
 
-    String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+    String formattedParent =
+        WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
 
     ListCrawledUrlsPagedResponse pagedListResponse = client.listCrawledUrls(formattedParent);
 
@@ -539,7 +552,8 @@ public void listCrawledUrlsExceptionTest() throws Exception {
     mockWebSecurityScanner.addException(exception);
 
     try {
-      String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+      String formattedParent =
+          WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
 
       client.listCrawledUrls(formattedParent);
       Assert.fail("No exception raised");
@@ -575,7 +589,8 @@ public void getFindingTest() {
     mockWebSecurityScanner.addResponse(expectedResponse);
 
     String formattedName =
-        FindingName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]", "[FINDING]");
+        WebSecurityScannerClient.formatFindingName(
+            "[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]", "[FINDING]");
 
     Finding actualResponse = client.getFinding(formattedName);
     Assert.assertEquals(expectedResponse, actualResponse);
@@ -599,7 +614,8 @@ public void getFindingExceptionTest() throws Exception {
 
     try {
       String formattedName =
-          FindingName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]", "[FINDING]");
+          WebSecurityScannerClient.formatFindingName(
+              "[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]", "[FINDING]");
 
       client.getFinding(formattedName);
       Assert.fail("No exception raised");
@@ -621,7 +637,8 @@ public void listFindingsTest() {
             .build();
     mockWebSecurityScanner.addResponse(expectedResponse);
 
-    String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+    String formattedParent =
+        WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
     String filter = "filter-1274492040";
 
     ListFindingsPagedResponse pagedListResponse = client.listFindings(formattedParent, filter);
@@ -649,7 +666,8 @@ public void listFindingsExceptionTest() throws Exception {
     mockWebSecurityScanner.addException(exception);
 
     try {
-      String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+      String formattedParent =
+          WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
       String filter = "filter-1274492040";
 
       client.listFindings(formattedParent, filter);
@@ -666,7 +684,8 @@ public void listFindingTypeStatsTest() {
         ListFindingTypeStatsResponse.newBuilder().build();
     mockWebSecurityScanner.addResponse(expectedResponse);
 
-    String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+    String formattedParent =
+        WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
 
     ListFindingTypeStatsResponse actualResponse = client.listFindingTypeStats(formattedParent);
     Assert.assertEquals(expectedResponse, actualResponse);
@@ -689,7 +708,8 @@ public void listFindingTypeStatsExceptionTest() throws Exception {
     mockWebSecurityScanner.addException(exception);
 
     try {
-      String formattedParent = ScanRunName.format("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
+      String formattedParent =
+          WebSecurityScannerClient.formatScanRunName("[PROJECT]", "[SCAN_CONFIG]", "[SCAN_RUN]");
 
       client.listFindingTypeStats(formattedParent);
       Assert.fail("No exception raised");
diff --git a/google-cloud-clients/google-cloud-websecurityscanner/synth.metadata b/google-cloud-clients/google-cloud-websecurityscanner/synth.metadata
index abcd59074bda..126b5ef2de24 100644
--- a/google-cloud-clients/google-cloud-websecurityscanner/synth.metadata
+++ b/google-cloud-clients/google-cloud-websecurityscanner/synth.metadata
@@ -1,19 +1,19 @@
 {
-  "updateTime": "2019-02-02T08:50:48.157044Z",
+  "updateTime": "2019-02-13T08:54:32.908972Z",
   "sources": [
     {
       "generator": {
         "name": "artman",
-        "version": "0.16.8",
-        "dockerImage": "googleapis/artman@sha256:75bc07ef34a1de9895c18af54dc503ed3b3f3b52e85062e3360a979d2a0741e7"
+        "version": "0.16.13",
+        "dockerImage": "googleapis/artman@sha256:5fd9aee1d82a00cebf425c8fa431f5457539562f5867ad9c54370f0ec9a7ccaa"
       }
     },
     {
       "git": {
         "name": "googleapis",
         "remote": "https://github.com/googleapis/googleapis.git",
-        "sha": "bce093dab3e65c40eb9a37efbdc960f34df6037a",
-        "internalRef": "231974277"
+        "sha": "ca61898878f0926dd9dcc68ba90764f17133efe4",
+        "internalRef": "233680013"
       }
     }
   ],
diff --git a/google-cloud-clients/pom.xml b/google-cloud-clients/pom.xml
index 0bf1f0e6b1e9..8a3298c9f468 100644
--- a/google-cloud-clients/pom.xml
+++ b/google-cloud-clients/pom.xml
@@ -4,7 +4,7 @@
   com.google.cloud
   google-cloud-clients
   pom
-  0.80.1-alpha-SNAPSHOT
+  0.81.0-alpha
   Google Cloud
   https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-clients
   
@@ -152,20 +152,20 @@
     UTF-8
     github
     google-cloud-clients
-    0.80.1-alpha-SNAPSHOT
+    0.81.0-alpha
     1.27.0
     
-    1.38.0
+    1.40.0
     1.7.0
-    0.12.0
-    1.17.1
+    0.13.0
+    1.18.0
     
     26.0-android
-    1.27.0
-    1.27.0
+    1.28.0
+    1.28.0
     3.6.1
     
-    0.17.0
+    0.18.0
     
     3.4
     2.6
@@ -240,7 +240,7 @@
       
         com.google.cloud
         google-cloud-core
-        1.62.1-SNAPSHOT
+        1.63.0
         test-jar
       
       
diff --git a/google-cloud-examples/README.md b/google-cloud-examples/README.md
index f4280b83fcc0..438fba1f7bf3 100644
--- a/google-cloud-examples/README.md
+++ b/google-cloud-examples/README.md
@@ -21,16 +21,16 @@ If you are using Maven, add this to your pom.xml file
 
   com.google.cloud
   google-cloud-examples
-  0.80.0-alpha
+  0.81.0-alpha
 
 ```
 If you are using Gradle, add this to your dependencies
 ```Groovy
-compile 'com.google.cloud:google-cloud-examples:0.80.0-alpha'
+compile 'com.google.cloud:google-cloud-examples:0.81.0-alpha'
 ```
 If you are using SBT, add this to your dependencies
 ```Scala
-libraryDependencies += "com.google.cloud" % "google-cloud-examples" % "0.80.0-alpha"
+libraryDependencies += "com.google.cloud" % "google-cloud-examples" % "0.81.0-alpha"
 ```
 [//]: # ({x-version-update-end})
 
diff --git a/google-cloud-examples/pom.xml b/google-cloud-examples/pom.xml
index fdb77ee277cb..1202ea365d3d 100644
--- a/google-cloud-examples/pom.xml
+++ b/google-cloud-examples/pom.xml
@@ -3,7 +3,7 @@
   4.0.0
   com.google.cloud
   google-cloud-examples
-  0.80.1-alpha-SNAPSHOT
+  0.81.0-alpha
   jar
   Google Cloud Examples
   https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-examples
@@ -18,7 +18,7 @@
       
         com.google.cloud
         google-cloud-bom
-        0.80.1-alpha-SNAPSHOT
+        0.81.0-alpha
         pom
         import
       
diff --git a/google-cloud-testing/google-cloud-appengineflexcompat/pom.xml b/google-cloud-testing/google-cloud-appengineflexcompat/pom.xml
index 09c90dbb5658..85db318c461d 100644
--- a/google-cloud-testing/google-cloud-appengineflexcompat/pom.xml
+++ b/google-cloud-testing/google-cloud-appengineflexcompat/pom.xml
@@ -4,13 +4,13 @@
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   google-cloud-appengineflexcompat
-  0.80.1-alpha-SNAPSHOT
+  0.81.0-alpha
   war
 
   
     google-cloud-testing
     com.google.cloud
-    0.80.1-alpha-SNAPSHOT
+    0.81.0-alpha
   
 
   
diff --git a/google-cloud-testing/google-cloud-appengineflexcustom/pom.xml b/google-cloud-testing/google-cloud-appengineflexcustom/pom.xml
index 044a422c400f..9ea953fe6e54 100644
--- a/google-cloud-testing/google-cloud-appengineflexcustom/pom.xml
+++ b/google-cloud-testing/google-cloud-appengineflexcustom/pom.xml
@@ -4,13 +4,13 @@
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   google-cloud-appengineflexcustom
-  0.80.1-alpha-SNAPSHOT
+  0.81.0-alpha
   war
 
   
     google-cloud-testing
     com.google.cloud
-    0.80.1-alpha-SNAPSHOT
+    0.81.0-alpha
   
 
   
diff --git a/google-cloud-testing/google-cloud-appengineflexjava/pom.xml b/google-cloud-testing/google-cloud-appengineflexjava/pom.xml
index 429e09ff96be..6aac9220c5c0 100644
--- a/google-cloud-testing/google-cloud-appengineflexjava/pom.xml
+++ b/google-cloud-testing/google-cloud-appengineflexjava/pom.xml
@@ -4,13 +4,13 @@
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   google-cloud-appengineflexjava
-  0.80.1-alpha-SNAPSHOT
+  0.81.0-alpha
   war
 
   
     google-cloud-testing
     com.google.cloud
-    0.80.1-alpha-SNAPSHOT
+    0.81.0-alpha
   
 
   
diff --git a/google-cloud-testing/google-cloud-appenginejava8/pom.xml b/google-cloud-testing/google-cloud-appenginejava8/pom.xml
index 4fcba4e2e40a..0c364bc41093 100644
--- a/google-cloud-testing/google-cloud-appenginejava8/pom.xml
+++ b/google-cloud-testing/google-cloud-appenginejava8/pom.xml
@@ -4,13 +4,13 @@
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   google-cloud-appenginejava8
-  0.80.1-alpha-SNAPSHOT
+  0.81.0-alpha
   war
 
   
     google-cloud-testing
     com.google.cloud
-    0.80.1-alpha-SNAPSHOT
+    0.81.0-alpha
   
 
   
diff --git a/google-cloud-testing/google-cloud-bigtable-emulator/README.md b/google-cloud-testing/google-cloud-bigtable-emulator/README.md
index be4378ef4829..13dcd2152c5f 100644
--- a/google-cloud-testing/google-cloud-bigtable-emulator/README.md
+++ b/google-cloud-testing/google-cloud-bigtable-emulator/README.md
@@ -19,7 +19,7 @@ If you are using Maven, add this to your pom.xml file
     
       com.google.cloud
       google-cloud-bom
-      0.80.0-alpha
+      0.81.0-alpha
       pom
       import
     
@@ -53,16 +53,16 @@ If you are using Maven, add this to your pom.xml file
 
 If you are using Gradle, add this to your dependencies
 ```Groovy
-compile 'com.google.cloud:google-cloud-bigtable:0.80.0-alpha'
-compile 'com.google.cloud:google-cloud-bigtable-admin:0.80.0-alpha'
-testCompile 'com.google.cloud:google-cloud-bigtable-emulator:0.80.0-alpha'
+compile 'com.google.cloud:google-cloud-bigtable:0.81.0-alpha'
+compile 'com.google.cloud:google-cloud-bigtable-admin:0.81.0-alpha'
+testCompile 'com.google.cloud:google-cloud-bigtable-emulator:0.81.0-alpha'
 testCompile 'junit:junit:4.12'
 ```
 If you are using SBT, add this to your dependencies
 ```Scala
-libraryDependencies += "com.google.cloud" % "google-cloud-bigtable" % "0.80.0-alpha"
-libraryDependencies += "com.google.cloud" % "google-cloud-bigtable-admin" % "0.80.0-alpha"
-libraryDependencies += "com.google.cloud" % "google-cloud-bigtable-emulator" % "0.80.0-alpha" % Test
+libraryDependencies += "com.google.cloud" % "google-cloud-bigtable" % "0.81.0-alpha"
+libraryDependencies += "com.google.cloud" % "google-cloud-bigtable-admin" % "0.81.0-alpha"
+libraryDependencies += "com.google.cloud" % "google-cloud-bigtable-emulator" % "0.81.0-alpha" % Test
 libraryDependencies += "junit" % "junit" % "4.12" % Test
 ```
 [//]: # ({x-version-update-end})
@@ -110,25 +110,10 @@ public class ExampleTest {
   @Before
   public void setUp() throws IOException {
     // Initialize the clients to connect to the emulator
-    BigtableTableAdminSettings.Builder tableAdminSettings = BigtableTableAdminSettings.newBuilder()
-        .setInstanceName(com.google.bigtable.admin.v2.InstanceName.of("fake-project", "fake-instance"));
-    tableAdminSettings.stubSettings()
-        .setCredentialsProvider(NoCredentialsProvider.create())
-        .setTransportChannelProvider(
-            FixedTransportChannelProvider.create(
-                GrpcTransportChannel.create(bigtableEmulator.getAdminChannel())
-            )
-        );
+    BigtableTableAdminSettings.Builder tableAdminSettings = BigtableTableAdminSettings.newBuilderForEmulator(bigtableEmulator.getPort());
     tableAdminClient = BigtableTableAdminClient.create(tableAdminSettings.build());
 
-    BigtableDataSettings.Builder dataSettings = BigtableDataSettings.newBuilder()
-        .setInstanceName(com.google.cloud.bigtable.data.v2.models.InstanceName.of("fake-project", "fake-instance"))
-        .setCredentialsProvider(NoCredentialsProvider.create())
-        .setTransportChannelProvider(
-            FixedTransportChannelProvider.create(
-                GrpcTransportChannel.create(bigtableEmulator.getDataChannel())
-            )
-        );
+    BigtableDataSettings.Builder dataSettings = BigtableDataSettings.newBuilderForEmulator(bigtableEmulator.getPort());
     dataClient = BigtableDataClient.create(dataSettings.build());
 
     // Create a test table that can be used in tests
diff --git a/google-cloud-testing/google-cloud-bigtable-emulator/pom.xml b/google-cloud-testing/google-cloud-bigtable-emulator/pom.xml
index 0f87cb477a4a..60f79e6c9cf3 100644
--- a/google-cloud-testing/google-cloud-bigtable-emulator/pom.xml
+++ b/google-cloud-testing/google-cloud-bigtable-emulator/pom.xml
@@ -6,7 +6,7 @@
 
   com.google.cloud
   google-cloud-bigtable-emulator
-  0.80.1-alpha-SNAPSHOT
+  0.81.0-alpha
   Google Cloud Java - Bigtable Emulator
   https://github.com/googleapis/google-cloud-java
   
@@ -69,7 +69,7 @@
       
         com.google.cloud
         google-cloud-gcloud-maven-plugin
-        0.80.1-alpha-SNAPSHOT
+        0.81.0-alpha
 
         
           
@@ -126,7 +126,7 @@
       
         com.google.cloud
         google-cloud-bom
-        0.80.1-alpha-SNAPSHOT
+        0.81.0-alpha
         pom
         import
       
diff --git a/google-cloud-testing/google-cloud-gcloud-maven-plugin/pom.xml b/google-cloud-testing/google-cloud-gcloud-maven-plugin/pom.xml
index 5a8b7300d9ff..5a9860f2fe75 100644
--- a/google-cloud-testing/google-cloud-gcloud-maven-plugin/pom.xml
+++ b/google-cloud-testing/google-cloud-gcloud-maven-plugin/pom.xml
@@ -7,11 +7,11 @@
   
     google-cloud-testing
     com.google.cloud
-    0.80.1-alpha-SNAPSHOT
+    0.81.0-alpha
   
 
   google-cloud-gcloud-maven-plugin
-  0.80.1-alpha-SNAPSHOT
+  0.81.0-alpha
   maven-plugin
   Experimental Maven plugin to interact with the Google Cloud SDK
     (https://cloud.google.com/sdk/). Currently this plugin is meant to be an internal implementation
diff --git a/google-cloud-testing/google-cloud-managedtest/pom.xml b/google-cloud-testing/google-cloud-managedtest/pom.xml
index 1ddcdf893c80..a8f2c249a659 100644
--- a/google-cloud-testing/google-cloud-managedtest/pom.xml
+++ b/google-cloud-testing/google-cloud-managedtest/pom.xml
@@ -4,13 +4,13 @@
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4.0.0
   google-cloud-managedtest
-  0.80.1-alpha-SNAPSHOT
+  0.81.0-alpha
   jar
 
   
     google-cloud-testing
     com.google.cloud
-    0.80.1-alpha-SNAPSHOT
+    0.81.0-alpha
   
 
   
diff --git a/google-cloud-testing/pom.xml b/google-cloud-testing/pom.xml
index ef023087328c..587bccbe3cf3 100644
--- a/google-cloud-testing/pom.xml
+++ b/google-cloud-testing/pom.xml
@@ -5,7 +5,7 @@
   4.0.0
   com.google.cloud
   google-cloud-testing
-  0.80.1-alpha-SNAPSHOT
+  0.81.0-alpha
   pom
 
   Google Cloud Testing
@@ -32,14 +32,14 @@
       
         com.google.cloud
         google-cloud-bom
-        0.80.1-alpha-SNAPSHOT
+        0.81.0-alpha
         pom
         import
       
       
         com.google.cloud
         google-cloud-core
-        1.62.1-SNAPSHOT
+        1.63.0
         test-jar
       
       
diff --git a/google-cloud-util/google-cloud-compat-checker/pom.xml b/google-cloud-util/google-cloud-compat-checker/pom.xml
index fa1480ef2aa8..d4d241212dc7 100644
--- a/google-cloud-util/google-cloud-compat-checker/pom.xml
+++ b/google-cloud-util/google-cloud-compat-checker/pom.xml
@@ -2,7 +2,7 @@
 
   4.0.0
   google-cloud-compat-checker
-  0.80.1-alpha-SNAPSHOT
+  0.81.0-alpha
   jar
   Google Cloud Java Compatibility Checker
   https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-util/google-cloud-compat-checker
@@ -12,7 +12,7 @@
   
     com.google.cloud
     google-cloud-util
-    0.80.1-alpha-SNAPSHOT
+    0.81.0-alpha
   
   
     google-cloud-compat-checker
diff --git a/google-cloud-util/pom.xml b/google-cloud-util/pom.xml
index 11e802042d0e..8b630a55e353 100644
--- a/google-cloud-util/pom.xml
+++ b/google-cloud-util/pom.xml
@@ -3,7 +3,7 @@
   4.0.0
   com.google.cloud
   google-cloud-util
-  0.80.1-alpha-SNAPSHOT
+  0.81.0-alpha
   pom
   Google Cloud Util
   https://github.com/googleapis/google-cloud-java/tree/master/google-cloud-util
diff --git a/versions.txt b/versions.txt
index 10b57d24376b..04d939567295 100644
--- a/versions.txt
+++ b/versions.txt
@@ -1,168 +1,168 @@
 # Format:
 # module:released-version:current-version
 
-google-api-grpc:0.45.0:0.45.1-SNAPSHOT
-google-cloud:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-appengineflexcompat:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-appengineflexcustom:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-appengineflexjava:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-appenginejava8:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-asset:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-automl:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-bigquery:1.62.0:1.62.1-SNAPSHOT
-google-cloud-bigquerydatatransfer:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-bigquerystorage:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-bigtable:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-bigtable-admin:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-bigtable-emulator:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-bom:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-clients:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-compat-checker:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-compute:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-container:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-containeranalysis:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-contrib:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-core:1.62.0:1.62.1-SNAPSHOT
-google-cloud-core-grpc:1.62.0:1.62.1-SNAPSHOT
-google-cloud-core-http:1.62.0:1.62.1-SNAPSHOT
-google-cloud-dataproc:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-datastore:1.62.0:1.62.1-SNAPSHOT
-google-cloud-dialogflow:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-dlp:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-dns:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-errorreporting:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-examples:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-firestore:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-gcloud-maven-plugin:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-iamcredentials:0.7.0-alpha:0.7.1-alpha-SNAPSHOT
-google-cloud-iot:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-kms:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-language:1.62.0:1.62.1-SNAPSHOT
-google-cloud-logging:1.62.0:1.62.1-SNAPSHOT
-google-cloud-logging-logback:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-managedtest:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-monitoring:1.62.0:1.62.1-SNAPSHOT
-google-cloud-nio:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-nio-examples:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-notification:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-os-login:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-pubsub:1.62.0:1.62.1-SNAPSHOT
-google-cloud-redis:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-resourcemanager:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-scheduler:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-securitycenter:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-spanner:1.7.0:1.7.1-SNAPSHOT
-google-cloud-speech:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-storage:1.62.0:1.62.1-SNAPSHOT
-google-cloud-tasks:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-testing:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-texttospeech:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-trace:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-translate:1.62.0:1.62.1-SNAPSHOT
-google-cloud-util:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-google-cloud-video-intelligence:0.80.0-beta:0.80.1-beta-SNAPSHOT
-google-cloud-vision:1.62.0:1.62.1-SNAPSHOT
-google-cloud-websecurityscanner:0.80.0-alpha:0.80.1-alpha-SNAPSHOT
-grpc-google-cloud-asset-v1beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-automl-v1beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-bigquerydatatransfer-v1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-bigquerystorage-v1beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-bigtable-admin-v2:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-bigtable-v2:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-container-v1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-containeranalysis-v1beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-dataproc-v1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-dataproc-v1beta2:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-dialogflow-v2:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-dialogflow-v2beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-dlp-v2:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-error-reporting-v1beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-firestore-v1beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-firestore-v1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-iamcredentials-v1:0.7.0-alpha:0.7.1-alpha-SNAPSHOT
-grpc-google-cloud-iot-v1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-kms-v1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-language-v1:1.44.0:1.44.1-SNAPSHOT
-grpc-google-cloud-language-v1beta2:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-logging-v2:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-monitoring-v3:1.44.0:1.44.1-SNAPSHOT
-grpc-google-cloud-os-login-v1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-pubsub-v1:1.44.0:1.44.1-SNAPSHOT
-grpc-google-cloud-redis-v1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-redis-v1beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-scheduler-v1beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-securitycenter-v1beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-spanner-admin-database-v1:1.7.0:1.7.1-SNAPSHOT
-grpc-google-cloud-spanner-admin-instance-v1:1.7.0:1.7.1-SNAPSHOT
-grpc-google-cloud-spanner-v1:1.7.0:1.7.1-SNAPSHOT
-grpc-google-cloud-speech-v1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-speech-v1beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-speech-v1p1beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-tasks-v2beta2:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-tasks-v2beta3:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-texttospeech-v1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-texttospeech-v1beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-trace-v1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-trace-v2:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-video-intelligence-v1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-video-intelligence-v1beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-video-intelligence-v1beta2:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-video-intelligence-v1p1beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-video-intelligence-v1p2beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-vision-v1:1.44.0:1.44.1-SNAPSHOT
-grpc-google-cloud-vision-v1p1beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-vision-v1p2beta1:1.44.0:1.44.1-SNAPSHOT
-grpc-google-cloud-vision-v1p3beta1:0.45.0:0.45.1-SNAPSHOT
-grpc-google-cloud-websecurityscanner-v1alpha:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-asset-v1beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-automl-v1beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-bigquerydatatransfer-v1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-bigquerystorage-v1beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-bigtable-admin-v2:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-bigtable-v2:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-container-v1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-containeranalysis-v1beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-dataproc-v1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-dataproc-v1beta2:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-datastore-v1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-dialogflow-v2:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-dialogflow-v2beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-dlp-v2:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-error-reporting-v1beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-firestore-v1beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-firestore-v1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-iamcredentials-v1:0.7.0-alpha:0.7.1-alpha-SNAPSHOT
-proto-google-cloud-iot-v1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-kms-v1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-language-v1:1.44.0:1.44.1-SNAPSHOT
-proto-google-cloud-language-v1beta2:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-logging-v2:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-monitoring-v3:1.44.0:1.44.1-SNAPSHOT
-proto-google-cloud-os-login-v1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-pubsub-v1:1.44.0:1.44.1-SNAPSHOT
-proto-google-cloud-redis-v1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-redis-v1beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-scheduler-v1beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-securitycenter-v1beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-spanner-admin-database-v1:1.7.0:1.7.1-SNAPSHOT
-proto-google-cloud-spanner-admin-instance-v1:1.7.0:1.7.1-SNAPSHOT
-proto-google-cloud-spanner-v1:1.7.0:1.7.1-SNAPSHOT
-proto-google-cloud-speech-v1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-speech-v1beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-speech-v1p1beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-tasks-v2beta2:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-tasks-v2beta3:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-texttospeech-v1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-texttospeech-v1beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-trace-v1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-trace-v2:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-video-intelligence-v1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-video-intelligence-v1beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-video-intelligence-v1beta2:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-video-intelligence-v1p1beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-video-intelligence-v1p2beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-vision-v1:1.44.0:1.44.1-SNAPSHOT
-proto-google-cloud-vision-v1p1beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-vision-v1p2beta1:1.44.0:1.44.1-SNAPSHOT
-proto-google-cloud-vision-v1p3beta1:0.45.0:0.45.1-SNAPSHOT
-proto-google-cloud-websecurityscanner-v1alpha:0.45.0:0.45.1-SNAPSHOT
+google-api-grpc:0.46.0:0.46.0
+google-cloud:0.81.0-alpha:0.81.0-alpha
+google-cloud-appengineflexcompat:0.81.0-alpha:0.81.0-alpha
+google-cloud-appengineflexcustom:0.81.0-alpha:0.81.0-alpha
+google-cloud-appengineflexjava:0.81.0-alpha:0.81.0-alpha
+google-cloud-appenginejava8:0.81.0-alpha:0.81.0-alpha
+google-cloud-asset:0.81.0-beta:0.81.0-beta
+google-cloud-automl:0.81.0-beta:0.81.0-beta
+google-cloud-bigquery:1.63.0:1.63.0
+google-cloud-bigquerydatatransfer:0.81.0-beta:0.81.0-beta
+google-cloud-bigquerystorage:0.81.0-beta:0.81.0-beta
+google-cloud-bigtable:0.81.0-alpha:0.81.0-alpha
+google-cloud-bigtable-admin:0.81.0-alpha:0.81.0-alpha
+google-cloud-bigtable-emulator:0.81.0-alpha:0.81.0-alpha
+google-cloud-bom:0.81.0-alpha:0.81.0-alpha
+google-cloud-clients:0.81.0-alpha:0.81.0-alpha
+google-cloud-compat-checker:0.81.0-alpha:0.81.0-alpha
+google-cloud-compute:0.81.0-alpha:0.81.0-alpha
+google-cloud-container:0.81.0-beta:0.81.0-beta
+google-cloud-containeranalysis:0.81.0-beta:0.81.0-beta
+google-cloud-contrib:0.81.0-alpha:0.81.0-alpha
+google-cloud-core:1.63.0:1.63.0
+google-cloud-core-grpc:1.63.0:1.63.0
+google-cloud-core-http:1.63.0:1.63.0
+google-cloud-dataproc:0.81.0-alpha:0.81.0-alpha
+google-cloud-datastore:1.63.0:1.63.0
+google-cloud-dialogflow:0.81.0-alpha:0.81.0-alpha
+google-cloud-dlp:0.81.0-beta:0.81.0-beta
+google-cloud-dns:0.81.0-alpha:0.81.0-alpha
+google-cloud-errorreporting:0.81.0-beta:0.81.0-beta
+google-cloud-examples:0.81.0-alpha:0.81.0-alpha
+google-cloud-firestore:0.81.0-beta:0.81.0-beta
+google-cloud-gcloud-maven-plugin:0.81.0-alpha:0.81.0-alpha
+google-cloud-iamcredentials:0.8.0-alpha:0.8.0-alpha
+google-cloud-iot:0.81.0-beta:0.81.0-beta
+google-cloud-kms:0.81.0-beta:0.81.0-beta
+google-cloud-language:1.63.0:1.63.0
+google-cloud-logging:1.63.0:1.63.0
+google-cloud-logging-logback:0.81.0-alpha:0.81.0-alpha
+google-cloud-managedtest:0.81.0-alpha:0.81.0-alpha
+google-cloud-monitoring:1.63.0:1.63.0
+google-cloud-nio:0.81.0-alpha:0.81.0-alpha
+google-cloud-nio-examples:0.81.0-alpha:0.81.0-alpha
+google-cloud-notification:0.81.0-beta:0.81.0-beta
+google-cloud-os-login:0.81.0-alpha:0.81.0-alpha
+google-cloud-pubsub:1.63.0:1.63.0
+google-cloud-redis:0.81.0-alpha:0.81.0-alpha
+google-cloud-resourcemanager:0.81.0-alpha:0.81.0-alpha
+google-cloud-scheduler:0.81.0-alpha:0.81.0-alpha
+google-cloud-securitycenter:0.81.0-alpha:0.81.0-alpha
+google-cloud-spanner:1.8.0:1.8.0
+google-cloud-speech:0.81.0-beta:0.81.0-beta
+google-cloud-storage:1.63.0:1.63.0
+google-cloud-tasks:0.81.0-beta:0.81.0-beta
+google-cloud-testing:0.81.0-alpha:0.81.0-alpha
+google-cloud-texttospeech:0.81.0-beta:0.81.0-beta
+google-cloud-trace:0.81.0-beta:0.81.0-beta
+google-cloud-translate:1.63.0:1.63.0
+google-cloud-util:0.81.0-alpha:0.81.0-alpha
+google-cloud-video-intelligence:0.81.0-beta:0.81.0-beta
+google-cloud-vision:1.63.0:1.63.0
+google-cloud-websecurityscanner:0.81.0-alpha:0.81.0-alpha
+grpc-google-cloud-asset-v1beta1:0.46.0:0.46.0
+grpc-google-cloud-automl-v1beta1:0.46.0:0.46.0
+grpc-google-cloud-bigquerydatatransfer-v1:0.46.0:0.46.0
+grpc-google-cloud-bigquerystorage-v1beta1:0.46.0:0.46.0
+grpc-google-cloud-bigtable-admin-v2:0.46.0:0.46.0
+grpc-google-cloud-bigtable-v2:0.46.0:0.46.0
+grpc-google-cloud-container-v1:0.46.0:0.46.0
+grpc-google-cloud-containeranalysis-v1beta1:0.46.0:0.46.0
+grpc-google-cloud-dataproc-v1:0.46.0:0.46.0
+grpc-google-cloud-dataproc-v1beta2:0.46.0:0.46.0
+grpc-google-cloud-dialogflow-v2:0.46.0:0.46.0
+grpc-google-cloud-dialogflow-v2beta1:0.46.0:0.46.0
+grpc-google-cloud-dlp-v2:0.46.0:0.46.0
+grpc-google-cloud-error-reporting-v1beta1:0.46.0:0.46.0
+grpc-google-cloud-firestore-v1beta1:0.46.0:0.46.0
+grpc-google-cloud-firestore-v1:0.46.0:0.46.0
+grpc-google-cloud-iamcredentials-v1:0.8.0-alpha:0.8.0-alpha
+grpc-google-cloud-iot-v1:0.46.0:0.46.0
+grpc-google-cloud-kms-v1:0.46.0:0.46.0
+grpc-google-cloud-language-v1:1.45.0:1.45.0
+grpc-google-cloud-language-v1beta2:0.46.0:0.46.0
+grpc-google-cloud-logging-v2:0.46.0:0.46.0
+grpc-google-cloud-monitoring-v3:1.45.0:1.45.0
+grpc-google-cloud-os-login-v1:0.46.0:0.46.0
+grpc-google-cloud-pubsub-v1:1.45.0:1.45.0
+grpc-google-cloud-redis-v1:0.46.0:0.46.0
+grpc-google-cloud-redis-v1beta1:0.46.0:0.46.0
+grpc-google-cloud-scheduler-v1beta1:0.46.0:0.46.0
+grpc-google-cloud-securitycenter-v1beta1:0.46.0:0.46.0
+grpc-google-cloud-spanner-admin-database-v1:1.8.0:1.8.0
+grpc-google-cloud-spanner-admin-instance-v1:1.8.0:1.8.0
+grpc-google-cloud-spanner-v1:1.8.0:1.8.0
+grpc-google-cloud-speech-v1:0.46.0:0.46.0
+grpc-google-cloud-speech-v1beta1:0.46.0:0.46.0
+grpc-google-cloud-speech-v1p1beta1:0.46.0:0.46.0
+grpc-google-cloud-tasks-v2beta2:0.46.0:0.46.0
+grpc-google-cloud-tasks-v2beta3:0.46.0:0.46.0
+grpc-google-cloud-texttospeech-v1:0.46.0:0.46.0
+grpc-google-cloud-texttospeech-v1beta1:0.46.0:0.46.0
+grpc-google-cloud-trace-v1:0.46.0:0.46.0
+grpc-google-cloud-trace-v2:0.46.0:0.46.0
+grpc-google-cloud-video-intelligence-v1:0.46.0:0.46.0
+grpc-google-cloud-video-intelligence-v1beta1:0.46.0:0.46.0
+grpc-google-cloud-video-intelligence-v1beta2:0.46.0:0.46.0
+grpc-google-cloud-video-intelligence-v1p1beta1:0.46.0:0.46.0
+grpc-google-cloud-video-intelligence-v1p2beta1:0.46.0:0.46.0
+grpc-google-cloud-vision-v1:1.45.0:1.45.0
+grpc-google-cloud-vision-v1p1beta1:0.46.0:0.46.0
+grpc-google-cloud-vision-v1p2beta1:1.45.0:1.45.0
+grpc-google-cloud-vision-v1p3beta1:0.46.0:0.46.0
+grpc-google-cloud-websecurityscanner-v1alpha:0.46.0:0.46.0
+proto-google-cloud-asset-v1beta1:0.46.0:0.46.0
+proto-google-cloud-automl-v1beta1:0.46.0:0.46.0
+proto-google-cloud-bigquerydatatransfer-v1:0.46.0:0.46.0
+proto-google-cloud-bigquerystorage-v1beta1:0.46.0:0.46.0
+proto-google-cloud-bigtable-admin-v2:0.46.0:0.46.0
+proto-google-cloud-bigtable-v2:0.46.0:0.46.0
+proto-google-cloud-container-v1:0.46.0:0.46.0
+proto-google-cloud-containeranalysis-v1beta1:0.46.0:0.46.0
+proto-google-cloud-dataproc-v1:0.46.0:0.46.0
+proto-google-cloud-dataproc-v1beta2:0.46.0:0.46.0
+proto-google-cloud-datastore-v1:0.46.0:0.46.0
+proto-google-cloud-dialogflow-v2:0.46.0:0.46.0
+proto-google-cloud-dialogflow-v2beta1:0.46.0:0.46.0
+proto-google-cloud-dlp-v2:0.46.0:0.46.0
+proto-google-cloud-error-reporting-v1beta1:0.46.0:0.46.0
+proto-google-cloud-firestore-v1beta1:0.46.0:0.46.0
+proto-google-cloud-firestore-v1:0.46.0:0.46.0
+proto-google-cloud-iamcredentials-v1:0.8.0-alpha:0.8.0-alpha
+proto-google-cloud-iot-v1:0.46.0:0.46.0
+proto-google-cloud-kms-v1:0.46.0:0.46.0
+proto-google-cloud-language-v1:1.45.0:1.45.0
+proto-google-cloud-language-v1beta2:0.46.0:0.46.0
+proto-google-cloud-logging-v2:0.46.0:0.46.0
+proto-google-cloud-monitoring-v3:1.45.0:1.45.0
+proto-google-cloud-os-login-v1:0.46.0:0.46.0
+proto-google-cloud-pubsub-v1:1.45.0:1.45.0
+proto-google-cloud-redis-v1:0.46.0:0.46.0
+proto-google-cloud-redis-v1beta1:0.46.0:0.46.0
+proto-google-cloud-scheduler-v1beta1:0.46.0:0.46.0
+proto-google-cloud-securitycenter-v1beta1:0.46.0:0.46.0
+proto-google-cloud-spanner-admin-database-v1:1.8.0:1.8.0
+proto-google-cloud-spanner-admin-instance-v1:1.8.0:1.8.0
+proto-google-cloud-spanner-v1:1.8.0:1.8.0
+proto-google-cloud-speech-v1:0.46.0:0.46.0
+proto-google-cloud-speech-v1beta1:0.46.0:0.46.0
+proto-google-cloud-speech-v1p1beta1:0.46.0:0.46.0
+proto-google-cloud-tasks-v2beta2:0.46.0:0.46.0
+proto-google-cloud-tasks-v2beta3:0.46.0:0.46.0
+proto-google-cloud-texttospeech-v1:0.46.0:0.46.0
+proto-google-cloud-texttospeech-v1beta1:0.46.0:0.46.0
+proto-google-cloud-trace-v1:0.46.0:0.46.0
+proto-google-cloud-trace-v2:0.46.0:0.46.0
+proto-google-cloud-video-intelligence-v1:0.46.0:0.46.0
+proto-google-cloud-video-intelligence-v1beta1:0.46.0:0.46.0
+proto-google-cloud-video-intelligence-v1beta2:0.46.0:0.46.0
+proto-google-cloud-video-intelligence-v1p1beta1:0.46.0:0.46.0
+proto-google-cloud-video-intelligence-v1p2beta1:0.46.0:0.46.0
+proto-google-cloud-vision-v1:1.45.0:1.45.0
+proto-google-cloud-vision-v1p1beta1:0.46.0:0.46.0
+proto-google-cloud-vision-v1p2beta1:1.45.0:1.45.0
+proto-google-cloud-vision-v1p3beta1:0.46.0:0.46.0
+proto-google-cloud-websecurityscanner-v1alpha:0.46.0:0.46.0