diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index a79f0627..a454a61e 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,5 +13,5 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-java:latest - digest: sha256:2567a120ce90fadb6201999b87d649d9f67459de28815ad239bce9ebfaa18a74 -# created: 2022-05-19T15:12:45.278246753Z + digest: sha256:6d4e3a15c62cfdcb823d60e16da7521e7c6fc00eba07c8ff12e4de9924a57d28 +# created: 2022-06-29T23:17:33.110417661Z diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index 6f09d695..dd5626f3 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -11,7 +11,6 @@ branchProtectionRules: - dependencies (8) - dependencies (11) - lint - - clirr - units (8) - units (11) - 'Kokoro - Test: Integration' @@ -26,7 +25,6 @@ branchProtectionRules: - dependencies (8) - dependencies (11) - lint - - clirr - units (7) - units (8) - units (11) diff --git a/.kokoro/common.sh b/.kokoro/common.sh index ace89f45..f8f957af 100644 --- a/.kokoro/common.sh +++ b/.kokoro/common.sh @@ -55,4 +55,6 @@ function retry_with_backoff { ## Helper functionss function now() { date +"%Y-%m-%d %H:%M:%S" | tr -d '\n'; } function msg() { println "$*" >&2; } -function println() { printf '%s\n' "$(now) $*"; } \ No newline at end of file +function println() { printf '%s\n' "$(now) $*"; } + +## Helper comment to trigger updated repo dependency release \ No newline at end of file diff --git a/.kokoro/release/stage.sh b/.kokoro/release/stage.sh index 77dc4e8f..1dba8de1 100755 --- a/.kokoro/release/stage.sh +++ b/.kokoro/release/stage.sh @@ -32,6 +32,7 @@ retry_with_backoff 3 10 \ mvn clean deploy -B \ --settings ${MAVEN_SETTINGS_FILE} \ -DskipTests=true \ + -Dclirr.skip=true \ -DperformRelease=true \ -Dgpg.executable=gpg \ -Dgpg.passphrase=${GPG_PASSPHRASE} \ @@ -42,4 +43,4 @@ then mvn nexus-staging:release -B \ -DperformRelease=true \ --settings=settings.xml -fi \ No newline at end of file +fi diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d617a25..65257371 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [0.7.0](https://github.com/googleapis/java-dataflow/compare/v0.6.1...v0.7.0) (2022-07-01) + + +### Features + +* Enable REST transport for most of Java and Go clients ([#182](https://github.com/googleapis/java-dataflow/issues/182)) ([5a7f987](https://github.com/googleapis/java-dataflow/commit/5a7f9877dac7d00bd096d5601fdcfbeea75e41fc)) + + +### Documentation + +* corrected the Dataflow job name regex ([#190](https://github.com/googleapis/java-dataflow/issues/190)) ([8fbc2f0](https://github.com/googleapis/java-dataflow/commit/8fbc2f0160dfaa95ad2b4244fab8d20e1a819eaa)) + ## [0.6.1](https://github.com/googleapis/java-dataflow/compare/v0.6.0...v0.6.1) (2022-06-23) diff --git a/README.md b/README.md index 4b63515f..98877f39 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ If you are using Maven, add this to your pom.xml file: com.google.cloud google-cloud-dataflow - 0.6.0 + 0.6.1 ``` @@ -30,13 +30,13 @@ If you are using Maven, add this to your pom.xml file: If you are using Gradle without BOM, add this to your dependencies ```Groovy -implementation 'com.google.cloud:google-cloud-dataflow:0.6.0' +implementation 'com.google.cloud:google-cloud-dataflow:0.6.1' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-dataflow" % "0.6.0" +libraryDependencies += "com.google.cloud" % "google-cloud-dataflow" % "0.6.1" ``` ## Authentication diff --git a/google-cloud-dataflow-bom/pom.xml b/google-cloud-dataflow-bom/pom.xml index 53868b42..5250084e 100644 --- a/google-cloud-dataflow-bom/pom.xml +++ b/google-cloud-dataflow-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-dataflow-bom - 0.6.1 + 0.7.0 pom com.google.cloud @@ -56,17 +56,17 @@ com.google.cloud google-cloud-dataflow - 0.6.1 + 0.7.0 com.google.api.grpc grpc-google-cloud-dataflow-v1beta3 - 0.6.1 + 0.7.0 com.google.api.grpc proto-google-cloud-dataflow-v1beta3 - 0.6.1 + 0.7.0 diff --git a/google-cloud-dataflow/pom.xml b/google-cloud-dataflow/pom.xml index 5da6d473..cfe1c6da 100644 --- a/google-cloud-dataflow/pom.xml +++ b/google-cloud-dataflow/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-dataflow - 0.6.1 + 0.7.0 jar Google Dataflow https://github.com/googleapis/java-dataflow @@ -11,7 +11,7 @@ com.google.cloud google-cloud-dataflow-parent - 0.6.1 + 0.7.0 google-cloud-dataflow @@ -58,6 +58,10 @@ com.google.api gax-grpc + + com.google.api + gax-httpjson + org.threeten threetenbp @@ -77,12 +81,24 @@ test + + com.google.api + gax + testlib + test + com.google.api gax-grpc testlib test + + com.google.api + gax-httpjson + testlib + test + diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/FlexTemplatesServiceClient.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/FlexTemplatesServiceClient.java index 1ca69b86..f72b18f0 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/FlexTemplatesServiceClient.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/FlexTemplatesServiceClient.java @@ -99,6 +99,21 @@ * FlexTemplatesServiceClient.create(flexTemplatesServiceSettings); * } * + *

To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over + * the wire: + * + *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
+ * FlexTemplatesServiceSettings flexTemplatesServiceSettings =
+ *     FlexTemplatesServiceSettings.newBuilder()
+ *         .setTransportChannelProvider(
+ *             FlexTemplatesServiceSettings.defaultHttpJsonTransportProviderBuilder().build())
+ *         .build();
+ * FlexTemplatesServiceClient flexTemplatesServiceClient =
+ *     FlexTemplatesServiceClient.create(flexTemplatesServiceSettings);
+ * }
+ * *

Please refer to the GitHub repository's samples for more quickstart code snippets. */ @BetaApi diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/FlexTemplatesServiceSettings.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/FlexTemplatesServiceSettings.java index c45e34c9..b2ca423f 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/FlexTemplatesServiceSettings.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/FlexTemplatesServiceSettings.java @@ -21,6 +21,7 @@ import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; @@ -101,11 +102,18 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde return FlexTemplatesServiceStubSettings.defaultCredentialsProviderBuilder(); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return FlexTemplatesServiceStubSettings.defaultGrpcTransportProviderBuilder(); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return FlexTemplatesServiceStubSettings.defaultHttpJsonTransportProviderBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return FlexTemplatesServiceStubSettings.defaultTransportChannelProvider(); } @@ -115,11 +123,17 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil return FlexTemplatesServiceStubSettings.defaultApiClientHeaderProviderBuilder(); } - /** Returns a new builder for this class. */ + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + @BetaApi + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -158,6 +172,11 @@ private static Builder createDefault() { return new Builder(FlexTemplatesServiceStubSettings.newBuilder()); } + @BetaApi + private static Builder createHttpJsonDefault() { + return new Builder(FlexTemplatesServiceStubSettings.newHttpJsonBuilder()); + } + public FlexTemplatesServiceStubSettings.Builder getStubSettingsBuilder() { return ((FlexTemplatesServiceStubSettings.Builder) getStubSettings()); } diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/JobsV1Beta3Client.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/JobsV1Beta3Client.java index adfafef0..9f68f185 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/JobsV1Beta3Client.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/JobsV1Beta3Client.java @@ -105,6 +105,20 @@ * JobsV1Beta3Client jobsV1Beta3Client = JobsV1Beta3Client.create(jobsV1Beta3Settings); * } * + *

To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over + * the wire: + * + *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
+ * JobsV1Beta3Settings jobsV1Beta3Settings =
+ *     JobsV1Beta3Settings.newBuilder()
+ *         .setTransportChannelProvider(
+ *             JobsV1Beta3Settings.defaultHttpJsonTransportProviderBuilder().build())
+ *         .build();
+ * JobsV1Beta3Client jobsV1Beta3Client = JobsV1Beta3Client.create(jobsV1Beta3Settings);
+ * }
+ * *

Please refer to the GitHub repository's samples for more quickstart code snippets. */ @BetaApi diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/JobsV1Beta3Settings.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/JobsV1Beta3Settings.java index 7a059bfa..446021d6 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/JobsV1Beta3Settings.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/JobsV1Beta3Settings.java @@ -24,6 +24,7 @@ import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; @@ -134,11 +135,18 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde return JobsV1Beta3StubSettings.defaultCredentialsProviderBuilder(); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return JobsV1Beta3StubSettings.defaultGrpcTransportProviderBuilder(); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return JobsV1Beta3StubSettings.defaultHttpJsonTransportProviderBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return JobsV1Beta3StubSettings.defaultTransportChannelProvider(); } @@ -148,11 +156,17 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil return JobsV1Beta3StubSettings.defaultApiClientHeaderProviderBuilder(); } - /** Returns a new builder for this class. */ + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + @BetaApi + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -190,6 +204,11 @@ private static Builder createDefault() { return new Builder(JobsV1Beta3StubSettings.newBuilder()); } + @BetaApi + private static Builder createHttpJsonDefault() { + return new Builder(JobsV1Beta3StubSettings.newHttpJsonBuilder()); + } + public JobsV1Beta3StubSettings.Builder getStubSettingsBuilder() { return ((JobsV1Beta3StubSettings.Builder) getStubSettings()); } diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MessagesV1Beta3Client.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MessagesV1Beta3Client.java index 4ef9d1de..b5731c90 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MessagesV1Beta3Client.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MessagesV1Beta3Client.java @@ -113,6 +113,21 @@ * MessagesV1Beta3Client.create(messagesV1Beta3Settings); * } * + *

To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over + * the wire: + * + *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
+ * MessagesV1Beta3Settings messagesV1Beta3Settings =
+ *     MessagesV1Beta3Settings.newBuilder()
+ *         .setTransportChannelProvider(
+ *             MessagesV1Beta3Settings.defaultHttpJsonTransportProviderBuilder().build())
+ *         .build();
+ * MessagesV1Beta3Client messagesV1Beta3Client =
+ *     MessagesV1Beta3Client.create(messagesV1Beta3Settings);
+ * }
+ * *

Please refer to the GitHub repository's samples for more quickstart code snippets. */ @BetaApi diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MessagesV1Beta3Settings.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MessagesV1Beta3Settings.java index c6ae01d6..12e0c779 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MessagesV1Beta3Settings.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MessagesV1Beta3Settings.java @@ -23,6 +23,7 @@ import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; @@ -104,11 +105,18 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde return MessagesV1Beta3StubSettings.defaultCredentialsProviderBuilder(); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return MessagesV1Beta3StubSettings.defaultGrpcTransportProviderBuilder(); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return MessagesV1Beta3StubSettings.defaultHttpJsonTransportProviderBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return MessagesV1Beta3StubSettings.defaultTransportChannelProvider(); } @@ -118,11 +126,17 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil return MessagesV1Beta3StubSettings.defaultApiClientHeaderProviderBuilder(); } - /** Returns a new builder for this class. */ + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + @BetaApi + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -160,6 +174,11 @@ private static Builder createDefault() { return new Builder(MessagesV1Beta3StubSettings.newBuilder()); } + @BetaApi + private static Builder createHttpJsonDefault() { + return new Builder(MessagesV1Beta3StubSettings.newHttpJsonBuilder()); + } + public MessagesV1Beta3StubSettings.Builder getStubSettingsBuilder() { return ((MessagesV1Beta3StubSettings.Builder) getStubSettings()); } diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MetricsV1Beta3Client.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MetricsV1Beta3Client.java index 6fa09498..dd56120e 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MetricsV1Beta3Client.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MetricsV1Beta3Client.java @@ -103,6 +103,20 @@ * MetricsV1Beta3Client metricsV1Beta3Client = MetricsV1Beta3Client.create(metricsV1Beta3Settings); * } * + *

To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over + * the wire: + * + *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
+ * MetricsV1Beta3Settings metricsV1Beta3Settings =
+ *     MetricsV1Beta3Settings.newBuilder()
+ *         .setTransportChannelProvider(
+ *             MetricsV1Beta3Settings.defaultHttpJsonTransportProviderBuilder().build())
+ *         .build();
+ * MetricsV1Beta3Client metricsV1Beta3Client = MetricsV1Beta3Client.create(metricsV1Beta3Settings);
+ * }
+ * *

Please refer to the GitHub repository's samples for more quickstart code snippets. */ @BetaApi diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MetricsV1Beta3Settings.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MetricsV1Beta3Settings.java index 056da1ac..b77b2e12 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MetricsV1Beta3Settings.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/MetricsV1Beta3Settings.java @@ -24,6 +24,7 @@ import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; @@ -119,11 +120,18 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde return MetricsV1Beta3StubSettings.defaultCredentialsProviderBuilder(); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return MetricsV1Beta3StubSettings.defaultGrpcTransportProviderBuilder(); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return MetricsV1Beta3StubSettings.defaultHttpJsonTransportProviderBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return MetricsV1Beta3StubSettings.defaultTransportChannelProvider(); } @@ -133,11 +141,17 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil return MetricsV1Beta3StubSettings.defaultApiClientHeaderProviderBuilder(); } - /** Returns a new builder for this class. */ + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + @BetaApi + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -175,6 +189,11 @@ private static Builder createDefault() { return new Builder(MetricsV1Beta3StubSettings.newBuilder()); } + @BetaApi + private static Builder createHttpJsonDefault() { + return new Builder(MetricsV1Beta3StubSettings.newHttpJsonBuilder()); + } + public MetricsV1Beta3StubSettings.Builder getStubSettingsBuilder() { return ((MetricsV1Beta3StubSettings.Builder) getStubSettings()); } diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/SnapshotsV1Beta3Client.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/SnapshotsV1Beta3Client.java index e9ce4586..a53a4375 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/SnapshotsV1Beta3Client.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/SnapshotsV1Beta3Client.java @@ -97,6 +97,21 @@ * SnapshotsV1Beta3Client.create(snapshotsV1Beta3Settings); * } * + *

To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over + * the wire: + * + *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
+ * SnapshotsV1Beta3Settings snapshotsV1Beta3Settings =
+ *     SnapshotsV1Beta3Settings.newBuilder()
+ *         .setTransportChannelProvider(
+ *             SnapshotsV1Beta3Settings.defaultHttpJsonTransportProviderBuilder().build())
+ *         .build();
+ * SnapshotsV1Beta3Client snapshotsV1Beta3Client =
+ *     SnapshotsV1Beta3Client.create(snapshotsV1Beta3Settings);
+ * }
+ * *

Please refer to the GitHub repository's samples for more quickstart code snippets. */ @BetaApi diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/SnapshotsV1Beta3Settings.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/SnapshotsV1Beta3Settings.java index 7f2f9e1c..c9227927 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/SnapshotsV1Beta3Settings.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/SnapshotsV1Beta3Settings.java @@ -21,6 +21,7 @@ import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; @@ -109,11 +110,18 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde return SnapshotsV1Beta3StubSettings.defaultCredentialsProviderBuilder(); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return SnapshotsV1Beta3StubSettings.defaultGrpcTransportProviderBuilder(); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return SnapshotsV1Beta3StubSettings.defaultHttpJsonTransportProviderBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return SnapshotsV1Beta3StubSettings.defaultTransportChannelProvider(); } @@ -123,11 +131,17 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil return SnapshotsV1Beta3StubSettings.defaultApiClientHeaderProviderBuilder(); } - /** Returns a new builder for this class. */ + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + @BetaApi + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -165,6 +179,11 @@ private static Builder createDefault() { return new Builder(SnapshotsV1Beta3StubSettings.newBuilder()); } + @BetaApi + private static Builder createHttpJsonDefault() { + return new Builder(SnapshotsV1Beta3StubSettings.newHttpJsonBuilder()); + } + public SnapshotsV1Beta3StubSettings.Builder getStubSettingsBuilder() { return ((SnapshotsV1Beta3StubSettings.Builder) getStubSettings()); } diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/TemplatesServiceClient.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/TemplatesServiceClient.java index 6e0efab8..f2cc11ae 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/TemplatesServiceClient.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/TemplatesServiceClient.java @@ -99,6 +99,21 @@ * TemplatesServiceClient.create(templatesServiceSettings); * } * + *

To use REST (HTTP1.1/JSON) transport (instead of gRPC) for sending and receiving requests over + * the wire: + * + *

{@code
+ * // This snippet has been automatically generated for illustrative purposes only.
+ * // It may require modifications to work in your environment.
+ * TemplatesServiceSettings templatesServiceSettings =
+ *     TemplatesServiceSettings.newBuilder()
+ *         .setTransportChannelProvider(
+ *             TemplatesServiceSettings.defaultHttpJsonTransportProviderBuilder().build())
+ *         .build();
+ * TemplatesServiceClient templatesServiceClient =
+ *     TemplatesServiceClient.create(templatesServiceSettings);
+ * }
+ * *

Please refer to the GitHub repository's samples for more quickstart code snippets. */ @BetaApi diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/TemplatesServiceSettings.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/TemplatesServiceSettings.java index 275675f7..709d3a8a 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/TemplatesServiceSettings.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/TemplatesServiceSettings.java @@ -21,6 +21,7 @@ import com.google.api.gax.core.GoogleCredentialsProvider; import com.google.api.gax.core.InstantiatingExecutorProvider; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientSettings; @@ -109,11 +110,18 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde return TemplatesServiceStubSettings.defaultCredentialsProviderBuilder(); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return TemplatesServiceStubSettings.defaultGrpcTransportProviderBuilder(); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return TemplatesServiceStubSettings.defaultHttpJsonTransportProviderBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return TemplatesServiceStubSettings.defaultTransportChannelProvider(); } @@ -123,11 +131,17 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil return TemplatesServiceStubSettings.defaultApiClientHeaderProviderBuilder(); } - /** Returns a new builder for this class. */ + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + @BetaApi + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -165,6 +179,11 @@ private static Builder createDefault() { return new Builder(TemplatesServiceStubSettings.newBuilder()); } + @BetaApi + private static Builder createHttpJsonDefault() { + return new Builder(TemplatesServiceStubSettings.newHttpJsonBuilder()); + } + public TemplatesServiceStubSettings.Builder getStubSettingsBuilder() { return ((TemplatesServiceStubSettings.Builder) getStubSettings()); } diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/FlexTemplatesServiceStubSettings.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/FlexTemplatesServiceStubSettings.java index 3981151c..97e06d91 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/FlexTemplatesServiceStubSettings.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/FlexTemplatesServiceStubSettings.java @@ -24,6 +24,9 @@ import com.google.api.gax.grpc.GaxGrpcProperties; import com.google.api.gax.grpc.GrpcTransportChannel; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.HttpJsonTransportChannel; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.retrying.RetrySettings; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; @@ -104,6 +107,11 @@ public FlexTemplatesServiceStub createStub() throws IOException { .equals(GrpcTransportChannel.getGrpcTransportName())) { return GrpcFlexTemplatesServiceStub.create(this); } + if (getTransportChannelProvider() + .getTransportName() + .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { + return HttpJsonFlexTemplatesServiceStub.create(this); + } throw new UnsupportedOperationException( String.format( "Transport not supported: %s", getTransportChannelProvider().getTransportName())); @@ -136,18 +144,25 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde .setUseJwtAccessWithScope(true); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return InstantiatingGrpcChannelProvider.newBuilder() .setMaxInboundMessageSize(Integer.MAX_VALUE); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return InstantiatingHttpJsonChannelProvider.newBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return defaultGrpcTransportProviderBuilder().build(); } @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") - public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() { return ApiClientHeaderProvider.newBuilder() .setGeneratedLibToken( "gapic", GaxProperties.getLibraryVersion(FlexTemplatesServiceStubSettings.class)) @@ -155,11 +170,30 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); } - /** Returns a new builder for this class. */ + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken( + "gapic", GaxProperties.getLibraryVersion(FlexTemplatesServiceStubSettings.class)) + .setTransportToken( + GaxHttpJsonProperties.getHttpJsonTokenName(), + GaxHttpJsonProperties.getHttpJsonVersion()); + } + + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return FlexTemplatesServiceStubSettings.defaultGrpcApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -238,6 +272,19 @@ private static Builder createDefault() { return initDefaults(builder); } + private static Builder createHttpJsonDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + private static Builder initDefaults(Builder builder) { builder .launchFlexTemplateSettings() diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonFlexTemplatesServiceCallableFactory.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonFlexTemplatesServiceCallableFactory.java new file mode 100644 index 00000000..11d0d27b --- /dev/null +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonFlexTemplatesServiceCallableFactory.java @@ -0,0 +1,105 @@ +/* + * Copyright 2022 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.dataflow.v1beta3.stub; + +import com.google.api.core.BetaApi; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonCallableFactory; +import com.google.api.gax.httpjson.HttpJsonOperationSnapshotCallable; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.longrunning.stub.OperationsStub; +import com.google.api.gax.rpc.BatchingCallSettings; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.OperationCallSettings; +import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.PagedCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.longrunning.Operation; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST callable factory implementation for the FlexTemplatesService service API. + * + *

This class is for advanced usage. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonFlexTemplatesServiceCallableFactory + implements HttpJsonStubCallableFactory { + + @Override + public UnaryCallable createUnaryCallable( + HttpJsonCallSettings httpJsonCallSettings, + UnaryCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createUnaryCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public + UnaryCallable createPagedCallable( + HttpJsonCallSettings httpJsonCallSettings, + PagedCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createPagedCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public UnaryCallable createBatchingCallable( + HttpJsonCallSettings httpJsonCallSettings, + BatchingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createBatchingCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + @Override + public + OperationCallable createOperationCallable( + HttpJsonCallSettings httpJsonCallSettings, + OperationCallSettings callSettings, + ClientContext clientContext, + OperationsStub operationsStub) { + UnaryCallable innerCallable = + HttpJsonCallableFactory.createBaseUnaryCallable( + httpJsonCallSettings, callSettings.getInitialCallSettings(), clientContext); + HttpJsonOperationSnapshotCallable initialCallable = + new HttpJsonOperationSnapshotCallable( + innerCallable, + httpJsonCallSettings.getMethodDescriptor().getOperationSnapshotFactory()); + return HttpJsonCallableFactory.createOperationCallable( + callSettings, clientContext, operationsStub.longRunningClient(), initialCallable); + } + + @Override + public + ServerStreamingCallable createServerStreamingCallable( + HttpJsonCallSettings httpJsonCallSettings, + ServerStreamingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createServerStreamingCallable( + httpJsonCallSettings, callSettings, clientContext); + } +} diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonFlexTemplatesServiceStub.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonFlexTemplatesServiceStub.java new file mode 100644 index 00000000..9ee342c5 --- /dev/null +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonFlexTemplatesServiceStub.java @@ -0,0 +1,204 @@ +/* + * Copyright 2022 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.dataflow.v1beta3.stub; + +import com.google.api.core.BetaApi; +import com.google.api.core.InternalApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.core.BackgroundResourceAggregation; +import com.google.api.gax.httpjson.ApiMethodDescriptor; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.ProtoMessageRequestFormatter; +import com.google.api.gax.httpjson.ProtoMessageResponseParser; +import com.google.api.gax.httpjson.ProtoRestSerializer; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.dataflow.v1beta3.LaunchFlexTemplateRequest; +import com.google.dataflow.v1beta3.LaunchFlexTemplateResponse; +import com.google.protobuf.TypeRegistry; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST stub implementation for the FlexTemplatesService service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonFlexTemplatesServiceStub extends FlexTemplatesServiceStub { + private static final TypeRegistry typeRegistry = TypeRegistry.newBuilder().build(); + + private static final ApiMethodDescriptor + launchFlexTemplateMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.FlexTemplatesService/LaunchFlexTemplate") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/flexTemplates:launch", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody( + "*", + request.toBuilder().clearLocation().clearProjectId().build())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(LaunchFlexTemplateResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private final UnaryCallable + launchFlexTemplateCallable; + + private final BackgroundResource backgroundResources; + private final HttpJsonStubCallableFactory callableFactory; + + public static final HttpJsonFlexTemplatesServiceStub create( + FlexTemplatesServiceStubSettings settings) throws IOException { + return new HttpJsonFlexTemplatesServiceStub(settings, ClientContext.create(settings)); + } + + public static final HttpJsonFlexTemplatesServiceStub create(ClientContext clientContext) + throws IOException { + return new HttpJsonFlexTemplatesServiceStub( + FlexTemplatesServiceStubSettings.newHttpJsonBuilder().build(), clientContext); + } + + public static final HttpJsonFlexTemplatesServiceStub create( + ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { + return new HttpJsonFlexTemplatesServiceStub( + FlexTemplatesServiceStubSettings.newHttpJsonBuilder().build(), + clientContext, + callableFactory); + } + + /** + * Constructs an instance of HttpJsonFlexTemplatesServiceStub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonFlexTemplatesServiceStub( + FlexTemplatesServiceStubSettings settings, ClientContext clientContext) throws IOException { + this(settings, clientContext, new HttpJsonFlexTemplatesServiceCallableFactory()); + } + + /** + * Constructs an instance of HttpJsonFlexTemplatesServiceStub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonFlexTemplatesServiceStub( + FlexTemplatesServiceStubSettings settings, + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + + HttpJsonCallSettings + launchFlexTemplateTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(launchFlexTemplateMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + + this.launchFlexTemplateCallable = + callableFactory.createUnaryCallable( + launchFlexTemplateTransportSettings, + settings.launchFlexTemplateSettings(), + clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + @InternalApi + public static List getMethodDescriptors() { + List methodDescriptors = new ArrayList<>(); + methodDescriptors.add(launchFlexTemplateMethodDescriptor); + return methodDescriptors; + } + + @Override + public UnaryCallable + launchFlexTemplateCallable() { + return launchFlexTemplateCallable; + } + + @Override + public final void close() { + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } + } + + @Override + public void shutdown() { + backgroundResources.shutdown(); + } + + @Override + public boolean isShutdown() { + return backgroundResources.isShutdown(); + } + + @Override + public boolean isTerminated() { + return backgroundResources.isTerminated(); + } + + @Override + public void shutdownNow() { + backgroundResources.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return backgroundResources.awaitTermination(duration, unit); + } +} diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonJobsV1Beta3CallableFactory.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonJobsV1Beta3CallableFactory.java new file mode 100644 index 00000000..6395f23b --- /dev/null +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonJobsV1Beta3CallableFactory.java @@ -0,0 +1,105 @@ +/* + * Copyright 2022 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.dataflow.v1beta3.stub; + +import com.google.api.core.BetaApi; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonCallableFactory; +import com.google.api.gax.httpjson.HttpJsonOperationSnapshotCallable; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.longrunning.stub.OperationsStub; +import com.google.api.gax.rpc.BatchingCallSettings; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.OperationCallSettings; +import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.PagedCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.longrunning.Operation; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST callable factory implementation for the JobsV1Beta3 service API. + * + *

This class is for advanced usage. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonJobsV1Beta3CallableFactory + implements HttpJsonStubCallableFactory { + + @Override + public UnaryCallable createUnaryCallable( + HttpJsonCallSettings httpJsonCallSettings, + UnaryCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createUnaryCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public + UnaryCallable createPagedCallable( + HttpJsonCallSettings httpJsonCallSettings, + PagedCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createPagedCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public UnaryCallable createBatchingCallable( + HttpJsonCallSettings httpJsonCallSettings, + BatchingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createBatchingCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + @Override + public + OperationCallable createOperationCallable( + HttpJsonCallSettings httpJsonCallSettings, + OperationCallSettings callSettings, + ClientContext clientContext, + OperationsStub operationsStub) { + UnaryCallable innerCallable = + HttpJsonCallableFactory.createBaseUnaryCallable( + httpJsonCallSettings, callSettings.getInitialCallSettings(), clientContext); + HttpJsonOperationSnapshotCallable initialCallable = + new HttpJsonOperationSnapshotCallable( + innerCallable, + httpJsonCallSettings.getMethodDescriptor().getOperationSnapshotFactory()); + return HttpJsonCallableFactory.createOperationCallable( + callSettings, clientContext, operationsStub.longRunningClient(), initialCallable); + } + + @Override + public + ServerStreamingCallable createServerStreamingCallable( + HttpJsonCallSettings httpJsonCallSettings, + ServerStreamingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createServerStreamingCallable( + httpJsonCallSettings, callSettings, clientContext); + } +} diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonJobsV1Beta3Stub.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonJobsV1Beta3Stub.java new file mode 100644 index 00000000..639622ee --- /dev/null +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonJobsV1Beta3Stub.java @@ -0,0 +1,498 @@ +/* + * Copyright 2022 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.dataflow.v1beta3.stub; + +import static com.google.dataflow.v1beta3.JobsV1Beta3Client.AggregatedListJobsPagedResponse; +import static com.google.dataflow.v1beta3.JobsV1Beta3Client.ListJobsPagedResponse; + +import com.google.api.core.BetaApi; +import com.google.api.core.InternalApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.core.BackgroundResourceAggregation; +import com.google.api.gax.httpjson.ApiMethodDescriptor; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.ProtoMessageRequestFormatter; +import com.google.api.gax.httpjson.ProtoMessageResponseParser; +import com.google.api.gax.httpjson.ProtoRestSerializer; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.dataflow.v1beta3.CreateJobRequest; +import com.google.dataflow.v1beta3.GetJobRequest; +import com.google.dataflow.v1beta3.Job; +import com.google.dataflow.v1beta3.ListJobsRequest; +import com.google.dataflow.v1beta3.ListJobsResponse; +import com.google.dataflow.v1beta3.Snapshot; +import com.google.dataflow.v1beta3.SnapshotJobRequest; +import com.google.dataflow.v1beta3.UpdateJobRequest; +import com.google.protobuf.TypeRegistry; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST stub implementation for the JobsV1Beta3 service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonJobsV1Beta3Stub extends JobsV1Beta3Stub { + private static final TypeRegistry typeRegistry = TypeRegistry.newBuilder().build(); + + private static final ApiMethodDescriptor createJobMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.JobsV1Beta3/CreateJob") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/jobs", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setAdditionalPaths("/v1b3/projects/{projectId}/jobs") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "replaceJobId", request.getReplaceJobId()); + serializer.putQueryParam(fields, "view", request.getView()); + return fields; + }) + .setRequestBodyExtractor( + request -> ProtoRestSerializer.create().toBody("job", request.getJob())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Job.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor getJobMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.JobsV1Beta3/GetJob") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "jobId", request.getJobId()); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setAdditionalPaths("/v1b3/projects/{projectId}/jobs/{jobId}") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "view", request.getView()); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Job.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor updateJobMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.JobsV1Beta3/UpdateJob") + .setHttpMethod("PUT") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "jobId", request.getJobId()); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setAdditionalPaths("/v1b3/projects/{projectId}/jobs/{jobId}") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> ProtoRestSerializer.create().toBody("job", request.getJob())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Job.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + listJobsMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.JobsV1Beta3/ListJobs") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/jobs", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setAdditionalPaths("/v1b3/projects/{projectId}/jobs") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "filter", request.getFilter()); + serializer.putQueryParam(fields, "pageSize", request.getPageSize()); + serializer.putQueryParam(fields, "pageToken", request.getPageToken()); + serializer.putQueryParam(fields, "view", request.getView()); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(ListJobsResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + aggregatedListJobsMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.JobsV1Beta3/AggregatedListJobs") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/jobs:aggregated", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "filter", request.getFilter()); + serializer.putQueryParam(fields, "location", request.getLocation()); + serializer.putQueryParam(fields, "pageSize", request.getPageSize()); + serializer.putQueryParam(fields, "pageToken", request.getPageToken()); + serializer.putQueryParam(fields, "view", request.getView()); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(ListJobsResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + snapshotJobMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.JobsV1Beta3/SnapshotJob") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}:snapshot", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "jobId", request.getJobId()); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setAdditionalPaths("/v1b3/projects/{projectId}/jobs/{jobId}:snapshot") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody( + "*", + request + .toBuilder() + .clearJobId() + .clearLocation() + .clearProjectId() + .build())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Snapshot.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private final UnaryCallable createJobCallable; + private final UnaryCallable getJobCallable; + private final UnaryCallable updateJobCallable; + private final UnaryCallable listJobsCallable; + private final UnaryCallable listJobsPagedCallable; + private final UnaryCallable aggregatedListJobsCallable; + private final UnaryCallable + aggregatedListJobsPagedCallable; + private final UnaryCallable snapshotJobCallable; + + private final BackgroundResource backgroundResources; + private final HttpJsonStubCallableFactory callableFactory; + + public static final HttpJsonJobsV1Beta3Stub create(JobsV1Beta3StubSettings settings) + throws IOException { + return new HttpJsonJobsV1Beta3Stub(settings, ClientContext.create(settings)); + } + + public static final HttpJsonJobsV1Beta3Stub create(ClientContext clientContext) + throws IOException { + return new HttpJsonJobsV1Beta3Stub( + JobsV1Beta3StubSettings.newHttpJsonBuilder().build(), clientContext); + } + + public static final HttpJsonJobsV1Beta3Stub create( + ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { + return new HttpJsonJobsV1Beta3Stub( + JobsV1Beta3StubSettings.newHttpJsonBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of HttpJsonJobsV1Beta3Stub, using the given settings. This is protected + * so that it is easy to make a subclass, but otherwise, the static factory methods should be + * preferred. + */ + protected HttpJsonJobsV1Beta3Stub(JobsV1Beta3StubSettings settings, ClientContext clientContext) + throws IOException { + this(settings, clientContext, new HttpJsonJobsV1Beta3CallableFactory()); + } + + /** + * Constructs an instance of HttpJsonJobsV1Beta3Stub, using the given settings. This is protected + * so that it is easy to make a subclass, but otherwise, the static factory methods should be + * preferred. + */ + protected HttpJsonJobsV1Beta3Stub( + JobsV1Beta3StubSettings settings, + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + + HttpJsonCallSettings createJobTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(createJobMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings getJobTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(getJobMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings updateJobTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(updateJobMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings listJobsTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(listJobsMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings aggregatedListJobsTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(aggregatedListJobsMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings snapshotJobTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(snapshotJobMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + + this.createJobCallable = + callableFactory.createUnaryCallable( + createJobTransportSettings, settings.createJobSettings(), clientContext); + this.getJobCallable = + callableFactory.createUnaryCallable( + getJobTransportSettings, settings.getJobSettings(), clientContext); + this.updateJobCallable = + callableFactory.createUnaryCallable( + updateJobTransportSettings, settings.updateJobSettings(), clientContext); + this.listJobsCallable = + callableFactory.createUnaryCallable( + listJobsTransportSettings, settings.listJobsSettings(), clientContext); + this.listJobsPagedCallable = + callableFactory.createPagedCallable( + listJobsTransportSettings, settings.listJobsSettings(), clientContext); + this.aggregatedListJobsCallable = + callableFactory.createUnaryCallable( + aggregatedListJobsTransportSettings, + settings.aggregatedListJobsSettings(), + clientContext); + this.aggregatedListJobsPagedCallable = + callableFactory.createPagedCallable( + aggregatedListJobsTransportSettings, + settings.aggregatedListJobsSettings(), + clientContext); + this.snapshotJobCallable = + callableFactory.createUnaryCallable( + snapshotJobTransportSettings, settings.snapshotJobSettings(), clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + @InternalApi + public static List getMethodDescriptors() { + List methodDescriptors = new ArrayList<>(); + methodDescriptors.add(createJobMethodDescriptor); + methodDescriptors.add(getJobMethodDescriptor); + methodDescriptors.add(updateJobMethodDescriptor); + methodDescriptors.add(listJobsMethodDescriptor); + methodDescriptors.add(aggregatedListJobsMethodDescriptor); + methodDescriptors.add(snapshotJobMethodDescriptor); + return methodDescriptors; + } + + @Override + public UnaryCallable createJobCallable() { + return createJobCallable; + } + + @Override + public UnaryCallable getJobCallable() { + return getJobCallable; + } + + @Override + public UnaryCallable updateJobCallable() { + return updateJobCallable; + } + + @Override + public UnaryCallable listJobsCallable() { + return listJobsCallable; + } + + @Override + public UnaryCallable listJobsPagedCallable() { + return listJobsPagedCallable; + } + + @Override + public UnaryCallable aggregatedListJobsCallable() { + return aggregatedListJobsCallable; + } + + @Override + public UnaryCallable + aggregatedListJobsPagedCallable() { + return aggregatedListJobsPagedCallable; + } + + @Override + public UnaryCallable snapshotJobCallable() { + return snapshotJobCallable; + } + + @Override + public final void close() { + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } + } + + @Override + public void shutdown() { + backgroundResources.shutdown(); + } + + @Override + public boolean isShutdown() { + return backgroundResources.isShutdown(); + } + + @Override + public boolean isTerminated() { + return backgroundResources.isTerminated(); + } + + @Override + public void shutdownNow() { + backgroundResources.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return backgroundResources.awaitTermination(duration, unit); + } +} diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonMessagesV1Beta3CallableFactory.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonMessagesV1Beta3CallableFactory.java new file mode 100644 index 00000000..3c2e80c1 --- /dev/null +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonMessagesV1Beta3CallableFactory.java @@ -0,0 +1,105 @@ +/* + * Copyright 2022 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.dataflow.v1beta3.stub; + +import com.google.api.core.BetaApi; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonCallableFactory; +import com.google.api.gax.httpjson.HttpJsonOperationSnapshotCallable; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.longrunning.stub.OperationsStub; +import com.google.api.gax.rpc.BatchingCallSettings; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.OperationCallSettings; +import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.PagedCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.longrunning.Operation; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST callable factory implementation for the MessagesV1Beta3 service API. + * + *

This class is for advanced usage. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonMessagesV1Beta3CallableFactory + implements HttpJsonStubCallableFactory { + + @Override + public UnaryCallable createUnaryCallable( + HttpJsonCallSettings httpJsonCallSettings, + UnaryCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createUnaryCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public + UnaryCallable createPagedCallable( + HttpJsonCallSettings httpJsonCallSettings, + PagedCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createPagedCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public UnaryCallable createBatchingCallable( + HttpJsonCallSettings httpJsonCallSettings, + BatchingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createBatchingCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + @Override + public + OperationCallable createOperationCallable( + HttpJsonCallSettings httpJsonCallSettings, + OperationCallSettings callSettings, + ClientContext clientContext, + OperationsStub operationsStub) { + UnaryCallable innerCallable = + HttpJsonCallableFactory.createBaseUnaryCallable( + httpJsonCallSettings, callSettings.getInitialCallSettings(), clientContext); + HttpJsonOperationSnapshotCallable initialCallable = + new HttpJsonOperationSnapshotCallable( + innerCallable, + httpJsonCallSettings.getMethodDescriptor().getOperationSnapshotFactory()); + return HttpJsonCallableFactory.createOperationCallable( + callSettings, clientContext, operationsStub.longRunningClient(), initialCallable); + } + + @Override + public + ServerStreamingCallable createServerStreamingCallable( + HttpJsonCallSettings httpJsonCallSettings, + ServerStreamingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createServerStreamingCallable( + httpJsonCallSettings, callSettings, clientContext); + } +} diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonMessagesV1Beta3Stub.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonMessagesV1Beta3Stub.java new file mode 100644 index 00000000..6eea1989 --- /dev/null +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonMessagesV1Beta3Stub.java @@ -0,0 +1,215 @@ +/* + * Copyright 2022 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.dataflow.v1beta3.stub; + +import static com.google.dataflow.v1beta3.MessagesV1Beta3Client.ListJobMessagesPagedResponse; + +import com.google.api.core.BetaApi; +import com.google.api.core.InternalApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.core.BackgroundResourceAggregation; +import com.google.api.gax.httpjson.ApiMethodDescriptor; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.ProtoMessageRequestFormatter; +import com.google.api.gax.httpjson.ProtoMessageResponseParser; +import com.google.api.gax.httpjson.ProtoRestSerializer; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.dataflow.v1beta3.ListJobMessagesRequest; +import com.google.dataflow.v1beta3.ListJobMessagesResponse; +import com.google.protobuf.TypeRegistry; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST stub implementation for the MessagesV1Beta3 service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonMessagesV1Beta3Stub extends MessagesV1Beta3Stub { + private static final TypeRegistry typeRegistry = TypeRegistry.newBuilder().build(); + + private static final ApiMethodDescriptor + listJobMessagesMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.MessagesV1Beta3/ListJobMessages") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/messages", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "jobId", request.getJobId()); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setAdditionalPaths("/v1b3/projects/{projectId}/jobs/{jobId}/messages") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "endTime", request.getEndTime()); + serializer.putQueryParam( + fields, "minimumImportance", request.getMinimumImportance()); + serializer.putQueryParam(fields, "pageSize", request.getPageSize()); + serializer.putQueryParam(fields, "pageToken", request.getPageToken()); + serializer.putQueryParam(fields, "startTime", request.getStartTime()); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(ListJobMessagesResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private final UnaryCallable + listJobMessagesCallable; + private final UnaryCallable + listJobMessagesPagedCallable; + + private final BackgroundResource backgroundResources; + private final HttpJsonStubCallableFactory callableFactory; + + public static final HttpJsonMessagesV1Beta3Stub create(MessagesV1Beta3StubSettings settings) + throws IOException { + return new HttpJsonMessagesV1Beta3Stub(settings, ClientContext.create(settings)); + } + + public static final HttpJsonMessagesV1Beta3Stub create(ClientContext clientContext) + throws IOException { + return new HttpJsonMessagesV1Beta3Stub( + MessagesV1Beta3StubSettings.newHttpJsonBuilder().build(), clientContext); + } + + public static final HttpJsonMessagesV1Beta3Stub create( + ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { + return new HttpJsonMessagesV1Beta3Stub( + MessagesV1Beta3StubSettings.newHttpJsonBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of HttpJsonMessagesV1Beta3Stub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonMessagesV1Beta3Stub( + MessagesV1Beta3StubSettings settings, ClientContext clientContext) throws IOException { + this(settings, clientContext, new HttpJsonMessagesV1Beta3CallableFactory()); + } + + /** + * Constructs an instance of HttpJsonMessagesV1Beta3Stub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonMessagesV1Beta3Stub( + MessagesV1Beta3StubSettings settings, + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + + HttpJsonCallSettings + listJobMessagesTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(listJobMessagesMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + + this.listJobMessagesCallable = + callableFactory.createUnaryCallable( + listJobMessagesTransportSettings, settings.listJobMessagesSettings(), clientContext); + this.listJobMessagesPagedCallable = + callableFactory.createPagedCallable( + listJobMessagesTransportSettings, settings.listJobMessagesSettings(), clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + @InternalApi + public static List getMethodDescriptors() { + List methodDescriptors = new ArrayList<>(); + methodDescriptors.add(listJobMessagesMethodDescriptor); + return methodDescriptors; + } + + @Override + public UnaryCallable listJobMessagesCallable() { + return listJobMessagesCallable; + } + + @Override + public UnaryCallable + listJobMessagesPagedCallable() { + return listJobMessagesPagedCallable; + } + + @Override + public final void close() { + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } + } + + @Override + public void shutdown() { + backgroundResources.shutdown(); + } + + @Override + public boolean isShutdown() { + return backgroundResources.isShutdown(); + } + + @Override + public boolean isTerminated() { + return backgroundResources.isTerminated(); + } + + @Override + public void shutdownNow() { + backgroundResources.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return backgroundResources.awaitTermination(duration, unit); + } +} diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonMetricsV1Beta3CallableFactory.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonMetricsV1Beta3CallableFactory.java new file mode 100644 index 00000000..577eb62b --- /dev/null +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonMetricsV1Beta3CallableFactory.java @@ -0,0 +1,105 @@ +/* + * Copyright 2022 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.dataflow.v1beta3.stub; + +import com.google.api.core.BetaApi; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonCallableFactory; +import com.google.api.gax.httpjson.HttpJsonOperationSnapshotCallable; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.longrunning.stub.OperationsStub; +import com.google.api.gax.rpc.BatchingCallSettings; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.OperationCallSettings; +import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.PagedCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.longrunning.Operation; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST callable factory implementation for the MetricsV1Beta3 service API. + * + *

This class is for advanced usage. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonMetricsV1Beta3CallableFactory + implements HttpJsonStubCallableFactory { + + @Override + public UnaryCallable createUnaryCallable( + HttpJsonCallSettings httpJsonCallSettings, + UnaryCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createUnaryCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public + UnaryCallable createPagedCallable( + HttpJsonCallSettings httpJsonCallSettings, + PagedCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createPagedCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public UnaryCallable createBatchingCallable( + HttpJsonCallSettings httpJsonCallSettings, + BatchingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createBatchingCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + @Override + public + OperationCallable createOperationCallable( + HttpJsonCallSettings httpJsonCallSettings, + OperationCallSettings callSettings, + ClientContext clientContext, + OperationsStub operationsStub) { + UnaryCallable innerCallable = + HttpJsonCallableFactory.createBaseUnaryCallable( + httpJsonCallSettings, callSettings.getInitialCallSettings(), clientContext); + HttpJsonOperationSnapshotCallable initialCallable = + new HttpJsonOperationSnapshotCallable( + innerCallable, + httpJsonCallSettings.getMethodDescriptor().getOperationSnapshotFactory()); + return HttpJsonCallableFactory.createOperationCallable( + callSettings, clientContext, operationsStub.longRunningClient(), initialCallable); + } + + @Override + public + ServerStreamingCallable createServerStreamingCallable( + HttpJsonCallSettings httpJsonCallSettings, + ServerStreamingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createServerStreamingCallable( + httpJsonCallSettings, callSettings, clientContext); + } +} diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonMetricsV1Beta3Stub.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonMetricsV1Beta3Stub.java new file mode 100644 index 00000000..56ccd933 --- /dev/null +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonMetricsV1Beta3Stub.java @@ -0,0 +1,347 @@ +/* + * Copyright 2022 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.dataflow.v1beta3.stub; + +import static com.google.dataflow.v1beta3.MetricsV1Beta3Client.GetJobExecutionDetailsPagedResponse; +import static com.google.dataflow.v1beta3.MetricsV1Beta3Client.GetStageExecutionDetailsPagedResponse; + +import com.google.api.core.BetaApi; +import com.google.api.core.InternalApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.core.BackgroundResourceAggregation; +import com.google.api.gax.httpjson.ApiMethodDescriptor; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.ProtoMessageRequestFormatter; +import com.google.api.gax.httpjson.ProtoMessageResponseParser; +import com.google.api.gax.httpjson.ProtoRestSerializer; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.dataflow.v1beta3.GetJobExecutionDetailsRequest; +import com.google.dataflow.v1beta3.GetJobMetricsRequest; +import com.google.dataflow.v1beta3.GetStageExecutionDetailsRequest; +import com.google.dataflow.v1beta3.JobExecutionDetails; +import com.google.dataflow.v1beta3.JobMetrics; +import com.google.dataflow.v1beta3.StageExecutionDetails; +import com.google.protobuf.TypeRegistry; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST stub implementation for the MetricsV1Beta3 service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonMetricsV1Beta3Stub extends MetricsV1Beta3Stub { + private static final TypeRegistry typeRegistry = TypeRegistry.newBuilder().build(); + + private static final ApiMethodDescriptor + getJobMetricsMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.MetricsV1Beta3/GetJobMetrics") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/metrics", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "jobId", request.getJobId()); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setAdditionalPaths("/v1b3/projects/{projectId}/jobs/{jobId}/metrics") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "startTime", request.getStartTime()); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(JobMetrics.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + getJobExecutionDetailsMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.MetricsV1Beta3/GetJobExecutionDetails") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/executionDetails", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "jobId", request.getJobId()); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "pageSize", request.getPageSize()); + serializer.putQueryParam(fields, "pageToken", request.getPageToken()); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(JobExecutionDetails.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + getStageExecutionDetailsMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.MetricsV1Beta3/GetStageExecutionDetails") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/stages/{stageId}/executionDetails", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "jobId", request.getJobId()); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + serializer.putPathParam(fields, "stageId", request.getStageId()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "endTime", request.getEndTime()); + serializer.putQueryParam(fields, "pageSize", request.getPageSize()); + serializer.putQueryParam(fields, "pageToken", request.getPageToken()); + serializer.putQueryParam(fields, "startTime", request.getStartTime()); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(StageExecutionDetails.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private final UnaryCallable getJobMetricsCallable; + private final UnaryCallable + getJobExecutionDetailsCallable; + private final UnaryCallable + getJobExecutionDetailsPagedCallable; + private final UnaryCallable + getStageExecutionDetailsCallable; + private final UnaryCallable< + GetStageExecutionDetailsRequest, GetStageExecutionDetailsPagedResponse> + getStageExecutionDetailsPagedCallable; + + private final BackgroundResource backgroundResources; + private final HttpJsonStubCallableFactory callableFactory; + + public static final HttpJsonMetricsV1Beta3Stub create(MetricsV1Beta3StubSettings settings) + throws IOException { + return new HttpJsonMetricsV1Beta3Stub(settings, ClientContext.create(settings)); + } + + public static final HttpJsonMetricsV1Beta3Stub create(ClientContext clientContext) + throws IOException { + return new HttpJsonMetricsV1Beta3Stub( + MetricsV1Beta3StubSettings.newHttpJsonBuilder().build(), clientContext); + } + + public static final HttpJsonMetricsV1Beta3Stub create( + ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { + return new HttpJsonMetricsV1Beta3Stub( + MetricsV1Beta3StubSettings.newHttpJsonBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of HttpJsonMetricsV1Beta3Stub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonMetricsV1Beta3Stub( + MetricsV1Beta3StubSettings settings, ClientContext clientContext) throws IOException { + this(settings, clientContext, new HttpJsonMetricsV1Beta3CallableFactory()); + } + + /** + * Constructs an instance of HttpJsonMetricsV1Beta3Stub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonMetricsV1Beta3Stub( + MetricsV1Beta3StubSettings settings, + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + + HttpJsonCallSettings getJobMetricsTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(getJobMetricsMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + getJobExecutionDetailsTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(getJobExecutionDetailsMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + getStageExecutionDetailsTransportSettings = + HttpJsonCallSettings + .newBuilder() + .setMethodDescriptor(getStageExecutionDetailsMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + + this.getJobMetricsCallable = + callableFactory.createUnaryCallable( + getJobMetricsTransportSettings, settings.getJobMetricsSettings(), clientContext); + this.getJobExecutionDetailsCallable = + callableFactory.createUnaryCallable( + getJobExecutionDetailsTransportSettings, + settings.getJobExecutionDetailsSettings(), + clientContext); + this.getJobExecutionDetailsPagedCallable = + callableFactory.createPagedCallable( + getJobExecutionDetailsTransportSettings, + settings.getJobExecutionDetailsSettings(), + clientContext); + this.getStageExecutionDetailsCallable = + callableFactory.createUnaryCallable( + getStageExecutionDetailsTransportSettings, + settings.getStageExecutionDetailsSettings(), + clientContext); + this.getStageExecutionDetailsPagedCallable = + callableFactory.createPagedCallable( + getStageExecutionDetailsTransportSettings, + settings.getStageExecutionDetailsSettings(), + clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + @InternalApi + public static List getMethodDescriptors() { + List methodDescriptors = new ArrayList<>(); + methodDescriptors.add(getJobMetricsMethodDescriptor); + methodDescriptors.add(getJobExecutionDetailsMethodDescriptor); + methodDescriptors.add(getStageExecutionDetailsMethodDescriptor); + return methodDescriptors; + } + + @Override + public UnaryCallable getJobMetricsCallable() { + return getJobMetricsCallable; + } + + @Override + public UnaryCallable + getJobExecutionDetailsCallable() { + return getJobExecutionDetailsCallable; + } + + @Override + public UnaryCallable + getJobExecutionDetailsPagedCallable() { + return getJobExecutionDetailsPagedCallable; + } + + @Override + public UnaryCallable + getStageExecutionDetailsCallable() { + return getStageExecutionDetailsCallable; + } + + @Override + public UnaryCallable + getStageExecutionDetailsPagedCallable() { + return getStageExecutionDetailsPagedCallable; + } + + @Override + public final void close() { + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } + } + + @Override + public void shutdown() { + backgroundResources.shutdown(); + } + + @Override + public boolean isShutdown() { + return backgroundResources.isShutdown(); + } + + @Override + public boolean isTerminated() { + return backgroundResources.isTerminated(); + } + + @Override + public void shutdownNow() { + backgroundResources.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return backgroundResources.awaitTermination(duration, unit); + } +} diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonSnapshotsV1Beta3CallableFactory.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonSnapshotsV1Beta3CallableFactory.java new file mode 100644 index 00000000..388d9226 --- /dev/null +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonSnapshotsV1Beta3CallableFactory.java @@ -0,0 +1,105 @@ +/* + * Copyright 2022 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.dataflow.v1beta3.stub; + +import com.google.api.core.BetaApi; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonCallableFactory; +import com.google.api.gax.httpjson.HttpJsonOperationSnapshotCallable; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.longrunning.stub.OperationsStub; +import com.google.api.gax.rpc.BatchingCallSettings; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.OperationCallSettings; +import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.PagedCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.longrunning.Operation; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST callable factory implementation for the SnapshotsV1Beta3 service API. + * + *

This class is for advanced usage. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonSnapshotsV1Beta3CallableFactory + implements HttpJsonStubCallableFactory { + + @Override + public UnaryCallable createUnaryCallable( + HttpJsonCallSettings httpJsonCallSettings, + UnaryCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createUnaryCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public + UnaryCallable createPagedCallable( + HttpJsonCallSettings httpJsonCallSettings, + PagedCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createPagedCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public UnaryCallable createBatchingCallable( + HttpJsonCallSettings httpJsonCallSettings, + BatchingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createBatchingCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + @Override + public + OperationCallable createOperationCallable( + HttpJsonCallSettings httpJsonCallSettings, + OperationCallSettings callSettings, + ClientContext clientContext, + OperationsStub operationsStub) { + UnaryCallable innerCallable = + HttpJsonCallableFactory.createBaseUnaryCallable( + httpJsonCallSettings, callSettings.getInitialCallSettings(), clientContext); + HttpJsonOperationSnapshotCallable initialCallable = + new HttpJsonOperationSnapshotCallable( + innerCallable, + httpJsonCallSettings.getMethodDescriptor().getOperationSnapshotFactory()); + return HttpJsonCallableFactory.createOperationCallable( + callSettings, clientContext, operationsStub.longRunningClient(), initialCallable); + } + + @Override + public + ServerStreamingCallable createServerStreamingCallable( + HttpJsonCallSettings httpJsonCallSettings, + ServerStreamingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createServerStreamingCallable( + httpJsonCallSettings, callSettings, clientContext); + } +} diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonSnapshotsV1Beta3Stub.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonSnapshotsV1Beta3Stub.java new file mode 100644 index 00000000..ce7e65b4 --- /dev/null +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonSnapshotsV1Beta3Stub.java @@ -0,0 +1,304 @@ +/* + * Copyright 2022 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.dataflow.v1beta3.stub; + +import com.google.api.core.BetaApi; +import com.google.api.core.InternalApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.core.BackgroundResourceAggregation; +import com.google.api.gax.httpjson.ApiMethodDescriptor; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.ProtoMessageRequestFormatter; +import com.google.api.gax.httpjson.ProtoMessageResponseParser; +import com.google.api.gax.httpjson.ProtoRestSerializer; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.dataflow.v1beta3.DeleteSnapshotRequest; +import com.google.dataflow.v1beta3.DeleteSnapshotResponse; +import com.google.dataflow.v1beta3.GetSnapshotRequest; +import com.google.dataflow.v1beta3.ListSnapshotsRequest; +import com.google.dataflow.v1beta3.ListSnapshotsResponse; +import com.google.dataflow.v1beta3.Snapshot; +import com.google.protobuf.TypeRegistry; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST stub implementation for the SnapshotsV1Beta3 service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonSnapshotsV1Beta3Stub extends SnapshotsV1Beta3Stub { + private static final TypeRegistry typeRegistry = TypeRegistry.newBuilder().build(); + + private static final ApiMethodDescriptor + getSnapshotMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.SnapshotsV1Beta3/GetSnapshot") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/snapshots/{snapshotId}", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + serializer.putPathParam(fields, "snapshotId", request.getSnapshotId()); + return fields; + }) + .setAdditionalPaths("/v1b3/projects/{projectId}/snapshots/{snapshotId}") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Snapshot.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + deleteSnapshotMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.SnapshotsV1Beta3/DeleteSnapshot") + .setHttpMethod("DELETE") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/snapshots/{snapshotId}", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + serializer.putPathParam(fields, "snapshotId", request.getSnapshotId()); + return fields; + }) + .setAdditionalPaths("/v1b3/projects/{projectId}/snapshots") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(DeleteSnapshotResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + listSnapshotsMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.SnapshotsV1Beta3/ListSnapshots") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/snapshots", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "jobId", request.getJobId()); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setAdditionalPaths( + "/v1b3/projects/{projectId}/locations/{location}/snapshots", + "/v1b3/projects/{projectId}/snapshots") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(ListSnapshotsResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private final UnaryCallable getSnapshotCallable; + private final UnaryCallable deleteSnapshotCallable; + private final UnaryCallable listSnapshotsCallable; + + private final BackgroundResource backgroundResources; + private final HttpJsonStubCallableFactory callableFactory; + + public static final HttpJsonSnapshotsV1Beta3Stub create(SnapshotsV1Beta3StubSettings settings) + throws IOException { + return new HttpJsonSnapshotsV1Beta3Stub(settings, ClientContext.create(settings)); + } + + public static final HttpJsonSnapshotsV1Beta3Stub create(ClientContext clientContext) + throws IOException { + return new HttpJsonSnapshotsV1Beta3Stub( + SnapshotsV1Beta3StubSettings.newHttpJsonBuilder().build(), clientContext); + } + + public static final HttpJsonSnapshotsV1Beta3Stub create( + ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { + return new HttpJsonSnapshotsV1Beta3Stub( + SnapshotsV1Beta3StubSettings.newHttpJsonBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of HttpJsonSnapshotsV1Beta3Stub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonSnapshotsV1Beta3Stub( + SnapshotsV1Beta3StubSettings settings, ClientContext clientContext) throws IOException { + this(settings, clientContext, new HttpJsonSnapshotsV1Beta3CallableFactory()); + } + + /** + * Constructs an instance of HttpJsonSnapshotsV1Beta3Stub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonSnapshotsV1Beta3Stub( + SnapshotsV1Beta3StubSettings settings, + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + + HttpJsonCallSettings getSnapshotTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(getSnapshotMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + deleteSnapshotTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(deleteSnapshotMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + listSnapshotsTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(listSnapshotsMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + + this.getSnapshotCallable = + callableFactory.createUnaryCallable( + getSnapshotTransportSettings, settings.getSnapshotSettings(), clientContext); + this.deleteSnapshotCallable = + callableFactory.createUnaryCallable( + deleteSnapshotTransportSettings, settings.deleteSnapshotSettings(), clientContext); + this.listSnapshotsCallable = + callableFactory.createUnaryCallable( + listSnapshotsTransportSettings, settings.listSnapshotsSettings(), clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + @InternalApi + public static List getMethodDescriptors() { + List methodDescriptors = new ArrayList<>(); + methodDescriptors.add(getSnapshotMethodDescriptor); + methodDescriptors.add(deleteSnapshotMethodDescriptor); + methodDescriptors.add(listSnapshotsMethodDescriptor); + return methodDescriptors; + } + + @Override + public UnaryCallable getSnapshotCallable() { + return getSnapshotCallable; + } + + @Override + public UnaryCallable deleteSnapshotCallable() { + return deleteSnapshotCallable; + } + + @Override + public UnaryCallable listSnapshotsCallable() { + return listSnapshotsCallable; + } + + @Override + public final void close() { + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } + } + + @Override + public void shutdown() { + backgroundResources.shutdown(); + } + + @Override + public boolean isShutdown() { + return backgroundResources.isShutdown(); + } + + @Override + public boolean isTerminated() { + return backgroundResources.isTerminated(); + } + + @Override + public void shutdownNow() { + backgroundResources.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return backgroundResources.awaitTermination(duration, unit); + } +} diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonTemplatesServiceCallableFactory.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonTemplatesServiceCallableFactory.java new file mode 100644 index 00000000..161a8b36 --- /dev/null +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonTemplatesServiceCallableFactory.java @@ -0,0 +1,105 @@ +/* + * Copyright 2022 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.dataflow.v1beta3.stub; + +import com.google.api.core.BetaApi; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonCallableFactory; +import com.google.api.gax.httpjson.HttpJsonOperationSnapshotCallable; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.longrunning.stub.OperationsStub; +import com.google.api.gax.rpc.BatchingCallSettings; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.OperationCallSettings; +import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.PagedCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.longrunning.Operation; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST callable factory implementation for the TemplatesService service API. + * + *

This class is for advanced usage. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonTemplatesServiceCallableFactory + implements HttpJsonStubCallableFactory { + + @Override + public UnaryCallable createUnaryCallable( + HttpJsonCallSettings httpJsonCallSettings, + UnaryCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createUnaryCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public + UnaryCallable createPagedCallable( + HttpJsonCallSettings httpJsonCallSettings, + PagedCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createPagedCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public UnaryCallable createBatchingCallable( + HttpJsonCallSettings httpJsonCallSettings, + BatchingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createBatchingCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + @Override + public + OperationCallable createOperationCallable( + HttpJsonCallSettings httpJsonCallSettings, + OperationCallSettings callSettings, + ClientContext clientContext, + OperationsStub operationsStub) { + UnaryCallable innerCallable = + HttpJsonCallableFactory.createBaseUnaryCallable( + httpJsonCallSettings, callSettings.getInitialCallSettings(), clientContext); + HttpJsonOperationSnapshotCallable initialCallable = + new HttpJsonOperationSnapshotCallable( + innerCallable, + httpJsonCallSettings.getMethodDescriptor().getOperationSnapshotFactory()); + return HttpJsonCallableFactory.createOperationCallable( + callSettings, clientContext, operationsStub.longRunningClient(), initialCallable); + } + + @Override + public + ServerStreamingCallable createServerStreamingCallable( + HttpJsonCallSettings httpJsonCallSettings, + ServerStreamingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createServerStreamingCallable( + httpJsonCallSettings, callSettings, clientContext); + } +} diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonTemplatesServiceStub.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonTemplatesServiceStub.java new file mode 100644 index 00000000..c76e9217 --- /dev/null +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/HttpJsonTemplatesServiceStub.java @@ -0,0 +1,315 @@ +/* + * Copyright 2022 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.dataflow.v1beta3.stub; + +import com.google.api.core.BetaApi; +import com.google.api.core.InternalApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.core.BackgroundResourceAggregation; +import com.google.api.gax.httpjson.ApiMethodDescriptor; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.ProtoMessageRequestFormatter; +import com.google.api.gax.httpjson.ProtoMessageResponseParser; +import com.google.api.gax.httpjson.ProtoRestSerializer; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.dataflow.v1beta3.CreateJobFromTemplateRequest; +import com.google.dataflow.v1beta3.GetTemplateRequest; +import com.google.dataflow.v1beta3.GetTemplateResponse; +import com.google.dataflow.v1beta3.Job; +import com.google.dataflow.v1beta3.LaunchTemplateRequest; +import com.google.dataflow.v1beta3.LaunchTemplateResponse; +import com.google.protobuf.TypeRegistry; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST stub implementation for the TemplatesService service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonTemplatesServiceStub extends TemplatesServiceStub { + private static final TypeRegistry typeRegistry = TypeRegistry.newBuilder().build(); + + private static final ApiMethodDescriptor + createJobFromTemplateMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.TemplatesService/CreateJobFromTemplate") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/templates", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setAdditionalPaths("/v1b3/projects/{projectId}/templates") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody( + "*", + request.toBuilder().clearLocation().clearProjectId().build())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Job.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + launchTemplateMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.TemplatesService/LaunchTemplate") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/templates:launch", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setAdditionalPaths("/v1b3/projects/{projectId}/templates:launch") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam( + fields, "dynamicTemplate", request.getDynamicTemplate()); + serializer.putQueryParam(fields, "gcsPath", request.getGcsPath()); + serializer.putQueryParam( + fields, "validateOnly", request.getValidateOnly()); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("launchParameters", request.getLaunchParameters())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(LaunchTemplateResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + getTemplateMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.dataflow.v1beta3.TemplatesService/GetTemplate") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1b3/projects/{projectId}/locations/{location}/templates:get", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "location", request.getLocation()); + serializer.putPathParam(fields, "projectId", request.getProjectId()); + return fields; + }) + .setAdditionalPaths("/v1b3/projects/{projectId}/templates:get") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "gcsPath", request.getGcsPath()); + serializer.putQueryParam(fields, "view", request.getView()); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(GetTemplateResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private final UnaryCallable createJobFromTemplateCallable; + private final UnaryCallable launchTemplateCallable; + private final UnaryCallable getTemplateCallable; + + private final BackgroundResource backgroundResources; + private final HttpJsonStubCallableFactory callableFactory; + + public static final HttpJsonTemplatesServiceStub create(TemplatesServiceStubSettings settings) + throws IOException { + return new HttpJsonTemplatesServiceStub(settings, ClientContext.create(settings)); + } + + public static final HttpJsonTemplatesServiceStub create(ClientContext clientContext) + throws IOException { + return new HttpJsonTemplatesServiceStub( + TemplatesServiceStubSettings.newHttpJsonBuilder().build(), clientContext); + } + + public static final HttpJsonTemplatesServiceStub create( + ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { + return new HttpJsonTemplatesServiceStub( + TemplatesServiceStubSettings.newHttpJsonBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of HttpJsonTemplatesServiceStub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonTemplatesServiceStub( + TemplatesServiceStubSettings settings, ClientContext clientContext) throws IOException { + this(settings, clientContext, new HttpJsonTemplatesServiceCallableFactory()); + } + + /** + * Constructs an instance of HttpJsonTemplatesServiceStub, using the given settings. This is + * protected so that it is easy to make a subclass, but otherwise, the static factory methods + * should be preferred. + */ + protected HttpJsonTemplatesServiceStub( + TemplatesServiceStubSettings settings, + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + + HttpJsonCallSettings createJobFromTemplateTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(createJobFromTemplateMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + launchTemplateTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(launchTemplateMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings getTemplateTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(getTemplateMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + + this.createJobFromTemplateCallable = + callableFactory.createUnaryCallable( + createJobFromTemplateTransportSettings, + settings.createJobFromTemplateSettings(), + clientContext); + this.launchTemplateCallable = + callableFactory.createUnaryCallable( + launchTemplateTransportSettings, settings.launchTemplateSettings(), clientContext); + this.getTemplateCallable = + callableFactory.createUnaryCallable( + getTemplateTransportSettings, settings.getTemplateSettings(), clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + @InternalApi + public static List getMethodDescriptors() { + List methodDescriptors = new ArrayList<>(); + methodDescriptors.add(createJobFromTemplateMethodDescriptor); + methodDescriptors.add(launchTemplateMethodDescriptor); + methodDescriptors.add(getTemplateMethodDescriptor); + return methodDescriptors; + } + + @Override + public UnaryCallable createJobFromTemplateCallable() { + return createJobFromTemplateCallable; + } + + @Override + public UnaryCallable launchTemplateCallable() { + return launchTemplateCallable; + } + + @Override + public UnaryCallable getTemplateCallable() { + return getTemplateCallable; + } + + @Override + public final void close() { + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } + } + + @Override + public void shutdown() { + backgroundResources.shutdown(); + } + + @Override + public boolean isShutdown() { + return backgroundResources.isShutdown(); + } + + @Override + public boolean isTerminated() { + return backgroundResources.isTerminated(); + } + + @Override + public void shutdownNow() { + backgroundResources.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return backgroundResources.awaitTermination(duration, unit); + } +} diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/JobsV1Beta3StubSettings.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/JobsV1Beta3StubSettings.java index 5f7502b6..298a2e1a 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/JobsV1Beta3StubSettings.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/JobsV1Beta3StubSettings.java @@ -28,6 +28,9 @@ import com.google.api.gax.grpc.GaxGrpcProperties; import com.google.api.gax.grpc.GrpcTransportChannel; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.HttpJsonTransportChannel; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.retrying.RetrySettings; import com.google.api.gax.rpc.ApiCallContext; import com.google.api.gax.rpc.ApiClientHeaderProvider; @@ -268,6 +271,11 @@ public JobsV1Beta3Stub createStub() throws IOException { .equals(GrpcTransportChannel.getGrpcTransportName())) { return GrpcJobsV1Beta3Stub.create(this); } + if (getTransportChannelProvider() + .getTransportName() + .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { + return HttpJsonJobsV1Beta3Stub.create(this); + } throw new UnsupportedOperationException( String.format( "Transport not supported: %s", getTransportChannelProvider().getTransportName())); @@ -300,18 +308,25 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde .setUseJwtAccessWithScope(true); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return InstantiatingGrpcChannelProvider.newBuilder() .setMaxInboundMessageSize(Integer.MAX_VALUE); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return InstantiatingHttpJsonChannelProvider.newBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return defaultGrpcTransportProviderBuilder().build(); } @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") - public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() { return ApiClientHeaderProvider.newBuilder() .setGeneratedLibToken( "gapic", GaxProperties.getLibraryVersion(JobsV1Beta3StubSettings.class)) @@ -319,11 +334,30 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); } - /** Returns a new builder for this class. */ + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken( + "gapic", GaxProperties.getLibraryVersion(JobsV1Beta3StubSettings.class)) + .setTransportToken( + GaxHttpJsonProperties.getHttpJsonTokenName(), + GaxHttpJsonProperties.getHttpJsonVersion()); + } + + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return JobsV1Beta3StubSettings.defaultGrpcApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -450,6 +484,19 @@ private static Builder createDefault() { return initDefaults(builder); } + private static Builder createHttpJsonDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + private static Builder initDefaults(Builder builder) { builder .createJobSettings() diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/MessagesV1Beta3StubSettings.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/MessagesV1Beta3StubSettings.java index e90aeedc..e9b535d9 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/MessagesV1Beta3StubSettings.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/MessagesV1Beta3StubSettings.java @@ -27,6 +27,9 @@ import com.google.api.gax.grpc.GaxGrpcProperties; import com.google.api.gax.grpc.GrpcTransportChannel; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.HttpJsonTransportChannel; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.retrying.RetrySettings; import com.google.api.gax.rpc.ApiCallContext; import com.google.api.gax.rpc.ApiClientHeaderProvider; @@ -171,6 +174,11 @@ public MessagesV1Beta3Stub createStub() throws IOException { .equals(GrpcTransportChannel.getGrpcTransportName())) { return GrpcMessagesV1Beta3Stub.create(this); } + if (getTransportChannelProvider() + .getTransportName() + .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { + return HttpJsonMessagesV1Beta3Stub.create(this); + } throw new UnsupportedOperationException( String.format( "Transport not supported: %s", getTransportChannelProvider().getTransportName())); @@ -203,18 +211,25 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde .setUseJwtAccessWithScope(true); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return InstantiatingGrpcChannelProvider.newBuilder() .setMaxInboundMessageSize(Integer.MAX_VALUE); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return InstantiatingHttpJsonChannelProvider.newBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return defaultGrpcTransportProviderBuilder().build(); } @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") - public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() { return ApiClientHeaderProvider.newBuilder() .setGeneratedLibToken( "gapic", GaxProperties.getLibraryVersion(MessagesV1Beta3StubSettings.class)) @@ -222,11 +237,30 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); } - /** Returns a new builder for this class. */ + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken( + "gapic", GaxProperties.getLibraryVersion(MessagesV1Beta3StubSettings.class)) + .setTransportToken( + GaxHttpJsonProperties.getHttpJsonTokenName(), + GaxHttpJsonProperties.getHttpJsonVersion()); + } + + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return MessagesV1Beta3StubSettings.defaultGrpcApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -312,6 +346,19 @@ private static Builder createDefault() { return initDefaults(builder); } + private static Builder createHttpJsonDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + private static Builder initDefaults(Builder builder) { builder .listJobMessagesSettings() diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/MetricsV1Beta3StubSettings.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/MetricsV1Beta3StubSettings.java index 14318c8c..8692fbb1 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/MetricsV1Beta3StubSettings.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/MetricsV1Beta3StubSettings.java @@ -28,6 +28,9 @@ import com.google.api.gax.grpc.GaxGrpcProperties; import com.google.api.gax.grpc.GrpcTransportChannel; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.HttpJsonTransportChannel; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.retrying.RetrySettings; import com.google.api.gax.rpc.ApiCallContext; import com.google.api.gax.rpc.ApiClientHeaderProvider; @@ -271,6 +274,11 @@ public MetricsV1Beta3Stub createStub() throws IOException { .equals(GrpcTransportChannel.getGrpcTransportName())) { return GrpcMetricsV1Beta3Stub.create(this); } + if (getTransportChannelProvider() + .getTransportName() + .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { + return HttpJsonMetricsV1Beta3Stub.create(this); + } throw new UnsupportedOperationException( String.format( "Transport not supported: %s", getTransportChannelProvider().getTransportName())); @@ -303,18 +311,25 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde .setUseJwtAccessWithScope(true); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return InstantiatingGrpcChannelProvider.newBuilder() .setMaxInboundMessageSize(Integer.MAX_VALUE); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return InstantiatingHttpJsonChannelProvider.newBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return defaultGrpcTransportProviderBuilder().build(); } @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") - public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() { return ApiClientHeaderProvider.newBuilder() .setGeneratedLibToken( "gapic", GaxProperties.getLibraryVersion(MetricsV1Beta3StubSettings.class)) @@ -322,11 +337,30 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); } - /** Returns a new builder for this class. */ + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken( + "gapic", GaxProperties.getLibraryVersion(MetricsV1Beta3StubSettings.class)) + .setTransportToken( + GaxHttpJsonProperties.getHttpJsonTokenName(), + GaxHttpJsonProperties.getHttpJsonVersion()); + } + + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return MetricsV1Beta3StubSettings.defaultGrpcApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -432,6 +466,19 @@ private static Builder createDefault() { return initDefaults(builder); } + private static Builder createHttpJsonDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + private static Builder initDefaults(Builder builder) { builder .getJobMetricsSettings() diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/SnapshotsV1Beta3StubSettings.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/SnapshotsV1Beta3StubSettings.java index 94cf39fb..17bed099 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/SnapshotsV1Beta3StubSettings.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/SnapshotsV1Beta3StubSettings.java @@ -24,6 +24,9 @@ import com.google.api.gax.grpc.GaxGrpcProperties; import com.google.api.gax.grpc.GrpcTransportChannel; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.HttpJsonTransportChannel; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.retrying.RetrySettings; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; @@ -119,6 +122,11 @@ public SnapshotsV1Beta3Stub createStub() throws IOException { .equals(GrpcTransportChannel.getGrpcTransportName())) { return GrpcSnapshotsV1Beta3Stub.create(this); } + if (getTransportChannelProvider() + .getTransportName() + .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { + return HttpJsonSnapshotsV1Beta3Stub.create(this); + } throw new UnsupportedOperationException( String.format( "Transport not supported: %s", getTransportChannelProvider().getTransportName())); @@ -151,18 +159,25 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde .setUseJwtAccessWithScope(true); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return InstantiatingGrpcChannelProvider.newBuilder() .setMaxInboundMessageSize(Integer.MAX_VALUE); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return InstantiatingHttpJsonChannelProvider.newBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return defaultGrpcTransportProviderBuilder().build(); } @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") - public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() { return ApiClientHeaderProvider.newBuilder() .setGeneratedLibToken( "gapic", GaxProperties.getLibraryVersion(SnapshotsV1Beta3StubSettings.class)) @@ -170,11 +185,30 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); } - /** Returns a new builder for this class. */ + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken( + "gapic", GaxProperties.getLibraryVersion(SnapshotsV1Beta3StubSettings.class)) + .setTransportToken( + GaxHttpJsonProperties.getHttpJsonTokenName(), + GaxHttpJsonProperties.getHttpJsonVersion()); + } + + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return SnapshotsV1Beta3StubSettings.defaultGrpcApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -270,6 +304,19 @@ private static Builder createDefault() { return initDefaults(builder); } + private static Builder createHttpJsonDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + private static Builder initDefaults(Builder builder) { builder .getSnapshotSettings() diff --git a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/TemplatesServiceStubSettings.java b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/TemplatesServiceStubSettings.java index 85bfc341..d4fbc4a7 100644 --- a/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/TemplatesServiceStubSettings.java +++ b/google-cloud-dataflow/src/main/java/com/google/dataflow/v1beta3/stub/TemplatesServiceStubSettings.java @@ -24,6 +24,9 @@ import com.google.api.gax.grpc.GaxGrpcProperties; import com.google.api.gax.grpc.GrpcTransportChannel; import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.HttpJsonTransportChannel; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; import com.google.api.gax.retrying.RetrySettings; import com.google.api.gax.rpc.ApiClientHeaderProvider; import com.google.api.gax.rpc.ClientContext; @@ -118,6 +121,11 @@ public TemplatesServiceStub createStub() throws IOException { .equals(GrpcTransportChannel.getGrpcTransportName())) { return GrpcTemplatesServiceStub.create(this); } + if (getTransportChannelProvider() + .getTransportName() + .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { + return HttpJsonTemplatesServiceStub.create(this); + } throw new UnsupportedOperationException( String.format( "Transport not supported: %s", getTransportChannelProvider().getTransportName())); @@ -150,18 +158,25 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde .setUseJwtAccessWithScope(true); } - /** Returns a builder for the default ChannelProvider for this service. */ + /** Returns a builder for the default gRPC ChannelProvider for this service. */ public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { return InstantiatingGrpcChannelProvider.newBuilder() .setMaxInboundMessageSize(Integer.MAX_VALUE); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return InstantiatingHttpJsonChannelProvider.newBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return defaultGrpcTransportProviderBuilder().build(); } @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") - public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() { return ApiClientHeaderProvider.newBuilder() .setGeneratedLibToken( "gapic", GaxProperties.getLibraryVersion(TemplatesServiceStubSettings.class)) @@ -169,11 +184,30 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); } - /** Returns a new builder for this class. */ + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken( + "gapic", GaxProperties.getLibraryVersion(TemplatesServiceStubSettings.class)) + .setTransportToken( + GaxHttpJsonProperties.getHttpJsonTokenName(), + GaxHttpJsonProperties.getHttpJsonVersion()); + } + + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return TemplatesServiceStubSettings.defaultGrpcApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC builder for this class. */ public static Builder newBuilder() { return Builder.createDefault(); } + /** Returns a new REST builder for this class. */ + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + /** Returns a new builder for this class. */ public static Builder newBuilder(ClientContext clientContext) { return new Builder(clientContext); @@ -270,6 +304,19 @@ private static Builder createDefault() { return initDefaults(builder); } + private static Builder createHttpJsonDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + private static Builder initDefaults(Builder builder) { builder .createJobFromTemplateSettings() diff --git a/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/FlexTemplatesServiceClientHttpJsonTest.java b/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/FlexTemplatesServiceClientHttpJsonTest.java new file mode 100644 index 00000000..2a7ed18a --- /dev/null +++ b/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/FlexTemplatesServiceClientHttpJsonTest.java @@ -0,0 +1,127 @@ +/* + * Copyright 2022 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.dataflow.v1beta3; + +import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.testing.MockHttpService; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ApiException; +import com.google.api.gax.rpc.ApiExceptionFactory; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.testing.FakeStatusCode; +import com.google.dataflow.v1beta3.stub.HttpJsonFlexTemplatesServiceStub; +import java.io.IOException; +import java.util.List; +import javax.annotation.Generated; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +@Generated("by gapic-generator-java") +public class FlexTemplatesServiceClientHttpJsonTest { + private static MockHttpService mockService; + private static FlexTemplatesServiceClient client; + + @BeforeClass + public static void startStaticServer() throws IOException { + mockService = + new MockHttpService( + HttpJsonFlexTemplatesServiceStub.getMethodDescriptors(), + FlexTemplatesServiceSettings.getDefaultEndpoint()); + FlexTemplatesServiceSettings settings = + FlexTemplatesServiceSettings.newHttpJsonBuilder() + .setTransportChannelProvider( + FlexTemplatesServiceSettings.defaultHttpJsonTransportProviderBuilder() + .setHttpTransport(mockService) + .build()) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = FlexTemplatesServiceClient.create(settings); + } + + @AfterClass + public static void stopServer() { + client.close(); + } + + @Before + public void setUp() {} + + @After + public void tearDown() throws Exception { + mockService.reset(); + } + + @Test + public void launchFlexTemplateTest() throws Exception { + LaunchFlexTemplateResponse expectedResponse = + LaunchFlexTemplateResponse.newBuilder().setJob(Job.newBuilder().build()).build(); + mockService.addResponse(expectedResponse); + + LaunchFlexTemplateRequest request = + LaunchFlexTemplateRequest.newBuilder() + .setProjectId("projectId-1530") + .setLaunchParameter(LaunchFlexTemplateParameter.newBuilder().build()) + .setLocation("location-9355") + .setValidateOnly(true) + .build(); + + LaunchFlexTemplateResponse actualResponse = client.launchFlexTemplate(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void launchFlexTemplateExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + LaunchFlexTemplateRequest request = + LaunchFlexTemplateRequest.newBuilder() + .setProjectId("projectId-1530") + .setLaunchParameter(LaunchFlexTemplateParameter.newBuilder().build()) + .setLocation("location-9355") + .setValidateOnly(true) + .build(); + client.launchFlexTemplate(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } +} diff --git a/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/JobsV1Beta3ClientHttpJsonTest.java b/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/JobsV1Beta3ClientHttpJsonTest.java new file mode 100644 index 00000000..c3d8e2e8 --- /dev/null +++ b/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/JobsV1Beta3ClientHttpJsonTest.java @@ -0,0 +1,527 @@ +/* + * Copyright 2022 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.dataflow.v1beta3; + +import static com.google.dataflow.v1beta3.JobsV1Beta3Client.AggregatedListJobsPagedResponse; +import static com.google.dataflow.v1beta3.JobsV1Beta3Client.ListJobsPagedResponse; + +import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.testing.MockHttpService; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ApiException; +import com.google.api.gax.rpc.ApiExceptionFactory; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.testing.FakeStatusCode; +import com.google.common.collect.Lists; +import com.google.dataflow.v1beta3.stub.HttpJsonJobsV1Beta3Stub; +import com.google.protobuf.Duration; +import com.google.protobuf.Timestamp; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import javax.annotation.Generated; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +@Generated("by gapic-generator-java") +public class JobsV1Beta3ClientHttpJsonTest { + private static MockHttpService mockService; + private static JobsV1Beta3Client client; + + @BeforeClass + public static void startStaticServer() throws IOException { + mockService = + new MockHttpService( + HttpJsonJobsV1Beta3Stub.getMethodDescriptors(), + JobsV1Beta3Settings.getDefaultEndpoint()); + JobsV1Beta3Settings settings = + JobsV1Beta3Settings.newHttpJsonBuilder() + .setTransportChannelProvider( + JobsV1Beta3Settings.defaultHttpJsonTransportProviderBuilder() + .setHttpTransport(mockService) + .build()) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = JobsV1Beta3Client.create(settings); + } + + @AfterClass + public static void stopServer() { + client.close(); + } + + @Before + public void setUp() {} + + @After + public void tearDown() throws Exception { + mockService.reset(); + } + + @Test + public void createJobTest() throws Exception { + Job expectedResponse = + Job.newBuilder() + .setId("id3355") + .setProjectId("projectId-894832108") + .setName("name3373707") + .setType(JobType.forNumber(0)) + .setEnvironment(Environment.newBuilder().build()) + .addAllSteps(new ArrayList()) + .setStepsLocation("stepsLocation1335803900") + .setCurrentState(JobState.forNumber(0)) + .setCurrentStateTime(Timestamp.newBuilder().build()) + .setRequestedState(JobState.forNumber(0)) + .setExecutionInfo(JobExecutionInfo.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setReplaceJobId("replaceJobId441554788") + .putAllTransformNameMapping(new HashMap()) + .setClientRequestId("clientRequestId848942207") + .setReplacedByJobId("replacedByJobId614115665") + .addAllTempFiles(new ArrayList()) + .putAllLabels(new HashMap()) + .setLocation("location1901043637") + .setPipelineDescription(PipelineDescription.newBuilder().build()) + .addAllStageStates(new ArrayList()) + .setJobMetadata(JobMetadata.newBuilder().build()) + .setStartTime(Timestamp.newBuilder().build()) + .setCreatedFromSnapshotId("createdFromSnapshotId851802705") + .setSatisfiesPzs(true) + .build(); + mockService.addResponse(expectedResponse); + + CreateJobRequest request = + CreateJobRequest.newBuilder() + .setProjectId("projectId-1530") + .setJob(Job.newBuilder().build()) + .setView(JobView.forNumber(0)) + .setReplaceJobId("replaceJobId441554788") + .setLocation("location-9355") + .build(); + + Job actualResponse = client.createJob(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void createJobExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + CreateJobRequest request = + CreateJobRequest.newBuilder() + .setProjectId("projectId-1530") + .setJob(Job.newBuilder().build()) + .setView(JobView.forNumber(0)) + .setReplaceJobId("replaceJobId441554788") + .setLocation("location-9355") + .build(); + client.createJob(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getJobTest() throws Exception { + Job expectedResponse = + Job.newBuilder() + .setId("id3355") + .setProjectId("projectId-894832108") + .setName("name3373707") + .setType(JobType.forNumber(0)) + .setEnvironment(Environment.newBuilder().build()) + .addAllSteps(new ArrayList()) + .setStepsLocation("stepsLocation1335803900") + .setCurrentState(JobState.forNumber(0)) + .setCurrentStateTime(Timestamp.newBuilder().build()) + .setRequestedState(JobState.forNumber(0)) + .setExecutionInfo(JobExecutionInfo.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setReplaceJobId("replaceJobId441554788") + .putAllTransformNameMapping(new HashMap()) + .setClientRequestId("clientRequestId848942207") + .setReplacedByJobId("replacedByJobId614115665") + .addAllTempFiles(new ArrayList()) + .putAllLabels(new HashMap()) + .setLocation("location1901043637") + .setPipelineDescription(PipelineDescription.newBuilder().build()) + .addAllStageStates(new ArrayList()) + .setJobMetadata(JobMetadata.newBuilder().build()) + .setStartTime(Timestamp.newBuilder().build()) + .setCreatedFromSnapshotId("createdFromSnapshotId851802705") + .setSatisfiesPzs(true) + .build(); + mockService.addResponse(expectedResponse); + + GetJobRequest request = + GetJobRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setView(JobView.forNumber(0)) + .setLocation("location-9355") + .build(); + + Job actualResponse = client.getJob(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void getJobExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + GetJobRequest request = + GetJobRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setView(JobView.forNumber(0)) + .setLocation("location-9355") + .build(); + client.getJob(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void updateJobTest() throws Exception { + Job expectedResponse = + Job.newBuilder() + .setId("id3355") + .setProjectId("projectId-894832108") + .setName("name3373707") + .setType(JobType.forNumber(0)) + .setEnvironment(Environment.newBuilder().build()) + .addAllSteps(new ArrayList()) + .setStepsLocation("stepsLocation1335803900") + .setCurrentState(JobState.forNumber(0)) + .setCurrentStateTime(Timestamp.newBuilder().build()) + .setRequestedState(JobState.forNumber(0)) + .setExecutionInfo(JobExecutionInfo.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setReplaceJobId("replaceJobId441554788") + .putAllTransformNameMapping(new HashMap()) + .setClientRequestId("clientRequestId848942207") + .setReplacedByJobId("replacedByJobId614115665") + .addAllTempFiles(new ArrayList()) + .putAllLabels(new HashMap()) + .setLocation("location1901043637") + .setPipelineDescription(PipelineDescription.newBuilder().build()) + .addAllStageStates(new ArrayList()) + .setJobMetadata(JobMetadata.newBuilder().build()) + .setStartTime(Timestamp.newBuilder().build()) + .setCreatedFromSnapshotId("createdFromSnapshotId851802705") + .setSatisfiesPzs(true) + .build(); + mockService.addResponse(expectedResponse); + + UpdateJobRequest request = + UpdateJobRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setJob(Job.newBuilder().build()) + .setLocation("location-9355") + .build(); + + Job actualResponse = client.updateJob(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void updateJobExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + UpdateJobRequest request = + UpdateJobRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setJob(Job.newBuilder().build()) + .setLocation("location-9355") + .build(); + client.updateJob(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listJobsTest() throws Exception { + Job responsesElement = Job.newBuilder().build(); + ListJobsResponse expectedResponse = + ListJobsResponse.newBuilder() + .setNextPageToken("") + .addAllJobs(Arrays.asList(responsesElement)) + .build(); + mockService.addResponse(expectedResponse); + + ListJobsRequest request = + ListJobsRequest.newBuilder() + .setProjectId("projectId-1530") + .setView(JobView.forNumber(0)) + .setPageSize(883849137) + .setPageToken("pageToken873572522") + .setLocation("location-9355") + .build(); + + ListJobsPagedResponse pagedListResponse = client.listJobs(request); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getJobsList().get(0), resources.get(0)); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void listJobsExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + ListJobsRequest request = + ListJobsRequest.newBuilder() + .setProjectId("projectId-1530") + .setView(JobView.forNumber(0)) + .setPageSize(883849137) + .setPageToken("pageToken873572522") + .setLocation("location-9355") + .build(); + client.listJobs(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void aggregatedListJobsTest() throws Exception { + Job responsesElement = Job.newBuilder().build(); + ListJobsResponse expectedResponse = + ListJobsResponse.newBuilder() + .setNextPageToken("") + .addAllJobs(Arrays.asList(responsesElement)) + .build(); + mockService.addResponse(expectedResponse); + + ListJobsRequest request = + ListJobsRequest.newBuilder() + .setProjectId("projectId-1530") + .setView(JobView.forNumber(0)) + .setPageSize(883849137) + .setPageToken("pageToken873572522") + .setLocation("location1901043637") + .build(); + + AggregatedListJobsPagedResponse pagedListResponse = client.aggregatedListJobs(request); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getJobsList().get(0), resources.get(0)); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void aggregatedListJobsExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + ListJobsRequest request = + ListJobsRequest.newBuilder() + .setProjectId("projectId-1530") + .setView(JobView.forNumber(0)) + .setPageSize(883849137) + .setPageToken("pageToken873572522") + .setLocation("location1901043637") + .build(); + client.aggregatedListJobs(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void checkActiveJobsUnsupportedMethodTest() throws Exception { + // The checkActiveJobs() method is not supported in REST transport. + // This empty test is generated for technical reasons. + } + + @Test + public void snapshotJobTest() throws Exception { + Snapshot expectedResponse = + Snapshot.newBuilder() + .setId("id3355") + .setProjectId("projectId-894832108") + .setSourceJobId("sourceJobId-104191395") + .setCreationTime(Timestamp.newBuilder().build()) + .setTtl(Duration.newBuilder().build()) + .setState(SnapshotState.forNumber(0)) + .addAllPubsubMetadata(new ArrayList()) + .setDescription("description-1724546052") + .setDiskSizeBytes(-275393905) + .setRegion("region-934795532") + .build(); + mockService.addResponse(expectedResponse); + + SnapshotJobRequest request = + SnapshotJobRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setTtl(Duration.newBuilder().build()) + .setLocation("location-9355") + .setSnapshotSources(true) + .setDescription("description-1724546052") + .build(); + + Snapshot actualResponse = client.snapshotJob(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void snapshotJobExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + SnapshotJobRequest request = + SnapshotJobRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setTtl(Duration.newBuilder().build()) + .setLocation("location-9355") + .setSnapshotSources(true) + .setDescription("description-1724546052") + .build(); + client.snapshotJob(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } +} diff --git a/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/MessagesV1Beta3ClientHttpJsonTest.java b/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/MessagesV1Beta3ClientHttpJsonTest.java new file mode 100644 index 00000000..897c09fc --- /dev/null +++ b/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/MessagesV1Beta3ClientHttpJsonTest.java @@ -0,0 +1,148 @@ +/* + * Copyright 2022 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.dataflow.v1beta3; + +import static com.google.dataflow.v1beta3.MessagesV1Beta3Client.ListJobMessagesPagedResponse; + +import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.testing.MockHttpService; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ApiException; +import com.google.api.gax.rpc.ApiExceptionFactory; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.testing.FakeStatusCode; +import com.google.common.collect.Lists; +import com.google.dataflow.v1beta3.stub.HttpJsonMessagesV1Beta3Stub; +import com.google.protobuf.Timestamp; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import javax.annotation.Generated; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +@Generated("by gapic-generator-java") +public class MessagesV1Beta3ClientHttpJsonTest { + private static MockHttpService mockService; + private static MessagesV1Beta3Client client; + + @BeforeClass + public static void startStaticServer() throws IOException { + mockService = + new MockHttpService( + HttpJsonMessagesV1Beta3Stub.getMethodDescriptors(), + MessagesV1Beta3Settings.getDefaultEndpoint()); + MessagesV1Beta3Settings settings = + MessagesV1Beta3Settings.newHttpJsonBuilder() + .setTransportChannelProvider( + MessagesV1Beta3Settings.defaultHttpJsonTransportProviderBuilder() + .setHttpTransport(mockService) + .build()) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = MessagesV1Beta3Client.create(settings); + } + + @AfterClass + public static void stopServer() { + client.close(); + } + + @Before + public void setUp() {} + + @After + public void tearDown() throws Exception { + mockService.reset(); + } + + @Test + public void listJobMessagesTest() throws Exception { + JobMessage responsesElement = JobMessage.newBuilder().build(); + ListJobMessagesResponse expectedResponse = + ListJobMessagesResponse.newBuilder() + .setNextPageToken("") + .addAllJobMessages(Arrays.asList(responsesElement)) + .build(); + mockService.addResponse(expectedResponse); + + ListJobMessagesRequest request = + ListJobMessagesRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setMinimumImportance(JobMessageImportance.forNumber(0)) + .setPageSize(883849137) + .setPageToken("pageToken873572522") + .setStartTime(Timestamp.newBuilder().build()) + .setEndTime(Timestamp.newBuilder().build()) + .setLocation("location-9355") + .build(); + + ListJobMessagesPagedResponse pagedListResponse = client.listJobMessages(request); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getJobMessagesList().get(0), resources.get(0)); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void listJobMessagesExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + ListJobMessagesRequest request = + ListJobMessagesRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setMinimumImportance(JobMessageImportance.forNumber(0)) + .setPageSize(883849137) + .setPageToken("pageToken873572522") + .setStartTime(Timestamp.newBuilder().build()) + .setEndTime(Timestamp.newBuilder().build()) + .setLocation("location-9355") + .build(); + client.listJobMessages(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } +} diff --git a/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/MetricsV1Beta3ClientHttpJsonTest.java b/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/MetricsV1Beta3ClientHttpJsonTest.java new file mode 100644 index 00000000..1013f790 --- /dev/null +++ b/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/MetricsV1Beta3ClientHttpJsonTest.java @@ -0,0 +1,272 @@ +/* + * Copyright 2022 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.dataflow.v1beta3; + +import static com.google.dataflow.v1beta3.MetricsV1Beta3Client.GetJobExecutionDetailsPagedResponse; +import static com.google.dataflow.v1beta3.MetricsV1Beta3Client.GetStageExecutionDetailsPagedResponse; + +import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.testing.MockHttpService; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ApiException; +import com.google.api.gax.rpc.ApiExceptionFactory; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.testing.FakeStatusCode; +import com.google.common.collect.Lists; +import com.google.dataflow.v1beta3.stub.HttpJsonMetricsV1Beta3Stub; +import com.google.protobuf.Timestamp; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import javax.annotation.Generated; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +@Generated("by gapic-generator-java") +public class MetricsV1Beta3ClientHttpJsonTest { + private static MockHttpService mockService; + private static MetricsV1Beta3Client client; + + @BeforeClass + public static void startStaticServer() throws IOException { + mockService = + new MockHttpService( + HttpJsonMetricsV1Beta3Stub.getMethodDescriptors(), + MetricsV1Beta3Settings.getDefaultEndpoint()); + MetricsV1Beta3Settings settings = + MetricsV1Beta3Settings.newHttpJsonBuilder() + .setTransportChannelProvider( + MetricsV1Beta3Settings.defaultHttpJsonTransportProviderBuilder() + .setHttpTransport(mockService) + .build()) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = MetricsV1Beta3Client.create(settings); + } + + @AfterClass + public static void stopServer() { + client.close(); + } + + @Before + public void setUp() {} + + @After + public void tearDown() throws Exception { + mockService.reset(); + } + + @Test + public void getJobMetricsTest() throws Exception { + JobMetrics expectedResponse = + JobMetrics.newBuilder() + .setMetricTime(Timestamp.newBuilder().build()) + .addAllMetrics(new ArrayList()) + .build(); + mockService.addResponse(expectedResponse); + + GetJobMetricsRequest request = + GetJobMetricsRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setStartTime(Timestamp.newBuilder().build()) + .setLocation("location-9355") + .build(); + + JobMetrics actualResponse = client.getJobMetrics(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void getJobMetricsExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + GetJobMetricsRequest request = + GetJobMetricsRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setStartTime(Timestamp.newBuilder().build()) + .setLocation("location-9355") + .build(); + client.getJobMetrics(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getJobExecutionDetailsTest() throws Exception { + StageSummary responsesElement = StageSummary.newBuilder().build(); + JobExecutionDetails expectedResponse = + JobExecutionDetails.newBuilder() + .setNextPageToken("") + .addAllStages(Arrays.asList(responsesElement)) + .build(); + mockService.addResponse(expectedResponse); + + GetJobExecutionDetailsRequest request = + GetJobExecutionDetailsRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setLocation("location-9355") + .setPageSize(883849137) + .setPageToken("pageToken873572522") + .build(); + + GetJobExecutionDetailsPagedResponse pagedListResponse = client.getJobExecutionDetails(request); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getStagesList().get(0), resources.get(0)); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void getJobExecutionDetailsExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + GetJobExecutionDetailsRequest request = + GetJobExecutionDetailsRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setLocation("location-9355") + .setPageSize(883849137) + .setPageToken("pageToken873572522") + .build(); + client.getJobExecutionDetails(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getStageExecutionDetailsTest() throws Exception { + WorkerDetails responsesElement = WorkerDetails.newBuilder().build(); + StageExecutionDetails expectedResponse = + StageExecutionDetails.newBuilder() + .setNextPageToken("") + .addAllWorkers(Arrays.asList(responsesElement)) + .build(); + mockService.addResponse(expectedResponse); + + GetStageExecutionDetailsRequest request = + GetStageExecutionDetailsRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setLocation("location-9355") + .setStageId("stageId-1") + .setPageSize(883849137) + .setPageToken("pageToken873572522") + .setStartTime(Timestamp.newBuilder().build()) + .setEndTime(Timestamp.newBuilder().build()) + .build(); + + GetStageExecutionDetailsPagedResponse pagedListResponse = + client.getStageExecutionDetails(request); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getWorkersList().get(0), resources.get(0)); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void getStageExecutionDetailsExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + GetStageExecutionDetailsRequest request = + GetStageExecutionDetailsRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setLocation("location-9355") + .setStageId("stageId-1") + .setPageSize(883849137) + .setPageToken("pageToken873572522") + .setStartTime(Timestamp.newBuilder().build()) + .setEndTime(Timestamp.newBuilder().build()) + .build(); + client.getStageExecutionDetails(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } +} diff --git a/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/SnapshotsV1Beta3ClientHttpJsonTest.java b/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/SnapshotsV1Beta3ClientHttpJsonTest.java new file mode 100644 index 00000000..dd262e73 --- /dev/null +++ b/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/SnapshotsV1Beta3ClientHttpJsonTest.java @@ -0,0 +1,242 @@ +/* + * Copyright 2022 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.dataflow.v1beta3; + +import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.testing.MockHttpService; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ApiException; +import com.google.api.gax.rpc.ApiExceptionFactory; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.testing.FakeStatusCode; +import com.google.dataflow.v1beta3.stub.HttpJsonSnapshotsV1Beta3Stub; +import com.google.protobuf.Duration; +import com.google.protobuf.Timestamp; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import javax.annotation.Generated; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +@Generated("by gapic-generator-java") +public class SnapshotsV1Beta3ClientHttpJsonTest { + private static MockHttpService mockService; + private static SnapshotsV1Beta3Client client; + + @BeforeClass + public static void startStaticServer() throws IOException { + mockService = + new MockHttpService( + HttpJsonSnapshotsV1Beta3Stub.getMethodDescriptors(), + SnapshotsV1Beta3Settings.getDefaultEndpoint()); + SnapshotsV1Beta3Settings settings = + SnapshotsV1Beta3Settings.newHttpJsonBuilder() + .setTransportChannelProvider( + SnapshotsV1Beta3Settings.defaultHttpJsonTransportProviderBuilder() + .setHttpTransport(mockService) + .build()) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = SnapshotsV1Beta3Client.create(settings); + } + + @AfterClass + public static void stopServer() { + client.close(); + } + + @Before + public void setUp() {} + + @After + public void tearDown() throws Exception { + mockService.reset(); + } + + @Test + public void getSnapshotTest() throws Exception { + Snapshot expectedResponse = + Snapshot.newBuilder() + .setId("id3355") + .setProjectId("projectId-894832108") + .setSourceJobId("sourceJobId-104191395") + .setCreationTime(Timestamp.newBuilder().build()) + .setTtl(Duration.newBuilder().build()) + .setState(SnapshotState.forNumber(0)) + .addAllPubsubMetadata(new ArrayList()) + .setDescription("description-1724546052") + .setDiskSizeBytes(-275393905) + .setRegion("region-934795532") + .build(); + mockService.addResponse(expectedResponse); + + GetSnapshotRequest request = + GetSnapshotRequest.newBuilder() + .setProjectId("projectId-1530") + .setSnapshotId("snapshotId-7221") + .setLocation("location-9355") + .build(); + + Snapshot actualResponse = client.getSnapshot(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void getSnapshotExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + GetSnapshotRequest request = + GetSnapshotRequest.newBuilder() + .setProjectId("projectId-1530") + .setSnapshotId("snapshotId-7221") + .setLocation("location-9355") + .build(); + client.getSnapshot(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void deleteSnapshotTest() throws Exception { + DeleteSnapshotResponse expectedResponse = DeleteSnapshotResponse.newBuilder().build(); + mockService.addResponse(expectedResponse); + + DeleteSnapshotRequest request = + DeleteSnapshotRequest.newBuilder() + .setProjectId("projectId-1530") + .setSnapshotId("snapshotId-7221") + .setLocation("location-9355") + .build(); + + DeleteSnapshotResponse actualResponse = client.deleteSnapshot(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void deleteSnapshotExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + DeleteSnapshotRequest request = + DeleteSnapshotRequest.newBuilder() + .setProjectId("projectId-1530") + .setSnapshotId("snapshotId-7221") + .setLocation("location-9355") + .build(); + client.deleteSnapshot(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listSnapshotsTest() throws Exception { + ListSnapshotsResponse expectedResponse = + ListSnapshotsResponse.newBuilder().addAllSnapshots(new ArrayList()).build(); + mockService.addResponse(expectedResponse); + + ListSnapshotsRequest request = + ListSnapshotsRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setLocation("location-9355") + .build(); + + ListSnapshotsResponse actualResponse = client.listSnapshots(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void listSnapshotsExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + ListSnapshotsRequest request = + ListSnapshotsRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobId("jobId-3646") + .setLocation("location-9355") + .build(); + client.listSnapshots(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } +} diff --git a/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/TemplatesServiceClientHttpJsonTest.java b/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/TemplatesServiceClientHttpJsonTest.java new file mode 100644 index 00000000..21ca1cfd --- /dev/null +++ b/google-cloud-dataflow/src/test/java/com/google/dataflow/v1beta3/TemplatesServiceClientHttpJsonTest.java @@ -0,0 +1,267 @@ +/* + * Copyright 2022 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.dataflow.v1beta3; + +import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.testing.MockHttpService; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ApiException; +import com.google.api.gax.rpc.ApiExceptionFactory; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.testing.FakeStatusCode; +import com.google.dataflow.v1beta3.stub.HttpJsonTemplatesServiceStub; +import com.google.protobuf.Timestamp; +import com.google.rpc.Status; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import javax.annotation.Generated; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +@Generated("by gapic-generator-java") +public class TemplatesServiceClientHttpJsonTest { + private static MockHttpService mockService; + private static TemplatesServiceClient client; + + @BeforeClass + public static void startStaticServer() throws IOException { + mockService = + new MockHttpService( + HttpJsonTemplatesServiceStub.getMethodDescriptors(), + TemplatesServiceSettings.getDefaultEndpoint()); + TemplatesServiceSettings settings = + TemplatesServiceSettings.newHttpJsonBuilder() + .setTransportChannelProvider( + TemplatesServiceSettings.defaultHttpJsonTransportProviderBuilder() + .setHttpTransport(mockService) + .build()) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = TemplatesServiceClient.create(settings); + } + + @AfterClass + public static void stopServer() { + client.close(); + } + + @Before + public void setUp() {} + + @After + public void tearDown() throws Exception { + mockService.reset(); + } + + @Test + public void createJobFromTemplateTest() throws Exception { + Job expectedResponse = + Job.newBuilder() + .setId("id3355") + .setProjectId("projectId-894832108") + .setName("name3373707") + .setType(JobType.forNumber(0)) + .setEnvironment(Environment.newBuilder().build()) + .addAllSteps(new ArrayList()) + .setStepsLocation("stepsLocation1335803900") + .setCurrentState(JobState.forNumber(0)) + .setCurrentStateTime(Timestamp.newBuilder().build()) + .setRequestedState(JobState.forNumber(0)) + .setExecutionInfo(JobExecutionInfo.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setReplaceJobId("replaceJobId441554788") + .putAllTransformNameMapping(new HashMap()) + .setClientRequestId("clientRequestId848942207") + .setReplacedByJobId("replacedByJobId614115665") + .addAllTempFiles(new ArrayList()) + .putAllLabels(new HashMap()) + .setLocation("location1901043637") + .setPipelineDescription(PipelineDescription.newBuilder().build()) + .addAllStageStates(new ArrayList()) + .setJobMetadata(JobMetadata.newBuilder().build()) + .setStartTime(Timestamp.newBuilder().build()) + .setCreatedFromSnapshotId("createdFromSnapshotId851802705") + .setSatisfiesPzs(true) + .build(); + mockService.addResponse(expectedResponse); + + CreateJobFromTemplateRequest request = + CreateJobFromTemplateRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobName("jobName-1438096408") + .putAllParameters(new HashMap()) + .setEnvironment(RuntimeEnvironment.newBuilder().build()) + .setLocation("location-9355") + .build(); + + Job actualResponse = client.createJobFromTemplate(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void createJobFromTemplateExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + CreateJobFromTemplateRequest request = + CreateJobFromTemplateRequest.newBuilder() + .setProjectId("projectId-1530") + .setJobName("jobName-1438096408") + .putAllParameters(new HashMap()) + .setEnvironment(RuntimeEnvironment.newBuilder().build()) + .setLocation("location-9355") + .build(); + client.createJobFromTemplate(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void launchTemplateTest() throws Exception { + LaunchTemplateResponse expectedResponse = + LaunchTemplateResponse.newBuilder().setJob(Job.newBuilder().build()).build(); + mockService.addResponse(expectedResponse); + + LaunchTemplateRequest request = + LaunchTemplateRequest.newBuilder() + .setProjectId("projectId-1530") + .setValidateOnly(true) + .setLaunchParameters(LaunchTemplateParameters.newBuilder().build()) + .setLocation("location-9355") + .build(); + + LaunchTemplateResponse actualResponse = client.launchTemplate(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void launchTemplateExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + LaunchTemplateRequest request = + LaunchTemplateRequest.newBuilder() + .setProjectId("projectId-1530") + .setValidateOnly(true) + .setLaunchParameters(LaunchTemplateParameters.newBuilder().build()) + .setLocation("location-9355") + .build(); + client.launchTemplate(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getTemplateTest() throws Exception { + GetTemplateResponse expectedResponse = + GetTemplateResponse.newBuilder() + .setStatus(Status.newBuilder().build()) + .setMetadata(TemplateMetadata.newBuilder().build()) + .setRuntimeMetadata(RuntimeMetadata.newBuilder().build()) + .build(); + mockService.addResponse(expectedResponse); + + GetTemplateRequest request = + GetTemplateRequest.newBuilder() + .setProjectId("projectId-1530") + .setLocation("location-9355") + .build(); + + GetTemplateResponse actualResponse = client.getTemplate(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void getTemplateExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + GetTemplateRequest request = + GetTemplateRequest.newBuilder() + .setProjectId("projectId-1530") + .setLocation("location-9355") + .build(); + client.getTemplate(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } +} diff --git a/grpc-google-cloud-dataflow-v1beta3/pom.xml b/grpc-google-cloud-dataflow-v1beta3/pom.xml index 36c0f8d0..0e8eef49 100644 --- a/grpc-google-cloud-dataflow-v1beta3/pom.xml +++ b/grpc-google-cloud-dataflow-v1beta3/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-dataflow-v1beta3 - 0.6.1 + 0.7.0 grpc-google-cloud-dataflow-v1beta3 GRPC library for google-cloud-dataflow com.google.cloud google-cloud-dataflow-parent - 0.6.1 + 0.7.0 diff --git a/pom.xml b/pom.xml index 086d4a32..c8dddce3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-dataflow-parent pom - 0.6.1 + 0.7.0 Google Dataflow Parent https://github.com/googleapis/java-dataflow @@ -69,17 +69,17 @@ com.google.cloud google-cloud-dataflow - 0.6.1 + 0.7.0 com.google.api.grpc grpc-google-cloud-dataflow-v1beta3 - 0.6.1 + 0.7.0 com.google.api.grpc proto-google-cloud-dataflow-v1beta3 - 0.6.1 + 0.7.0 diff --git a/proto-google-cloud-dataflow-v1beta3/pom.xml b/proto-google-cloud-dataflow-v1beta3/pom.xml index 482dc431..3aa4db83 100644 --- a/proto-google-cloud-dataflow-v1beta3/pom.xml +++ b/proto-google-cloud-dataflow-v1beta3/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-dataflow-v1beta3 - 0.6.1 + 0.7.0 proto-google-cloud-dataflow-v1beta3 Proto library for google-cloud-dataflow com.google.cloud google-cloud-dataflow-parent - 0.6.1 + 0.7.0 diff --git a/proto-google-cloud-dataflow-v1beta3/src/main/java/com/google/dataflow/v1beta3/Job.java b/proto-google-cloud-dataflow-v1beta3/src/main/java/com/google/dataflow/v1beta3/Job.java index 21994693..311c2795 100644 --- a/proto-google-cloud-dataflow-v1beta3/src/main/java/com/google/dataflow/v1beta3/Job.java +++ b/proto-google-cloud-dataflow-v1beta3/src/main/java/com/google/dataflow/v1beta3/Job.java @@ -517,7 +517,7 @@ public com.google.protobuf.ByteString getProjectIdBytes() { * name as an already-existing Job, the attempt returns the * existing Job. * The name must match the regular expression - * `[a-z]([-a-z0-9]{0,38}[a-z0-9])?` + * `[a-z]([-a-z0-9]{0,1022}[a-z0-9])?` * * * string name = 3; @@ -546,7 +546,7 @@ public java.lang.String getName() { * name as an already-existing Job, the attempt returns the * existing Job. * The name must match the regular expression - * `[a-z]([-a-z0-9]{0,38}[a-z0-9])?` + * `[a-z]([-a-z0-9]{0,1022}[a-z0-9])?` * * * string name = 3; @@ -3025,7 +3025,7 @@ public Builder setProjectIdBytes(com.google.protobuf.ByteString value) { * name as an already-existing Job, the attempt returns the * existing Job. * The name must match the regular expression - * `[a-z]([-a-z0-9]{0,38}[a-z0-9])?` + * `[a-z]([-a-z0-9]{0,1022}[a-z0-9])?` * * * string name = 3; @@ -3053,7 +3053,7 @@ public java.lang.String getName() { * name as an already-existing Job, the attempt returns the * existing Job. * The name must match the regular expression - * `[a-z]([-a-z0-9]{0,38}[a-z0-9])?` + * `[a-z]([-a-z0-9]{0,1022}[a-z0-9])?` * * * string name = 3; @@ -3081,7 +3081,7 @@ public com.google.protobuf.ByteString getNameBytes() { * name as an already-existing Job, the attempt returns the * existing Job. * The name must match the regular expression - * `[a-z]([-a-z0-9]{0,38}[a-z0-9])?` + * `[a-z]([-a-z0-9]{0,1022}[a-z0-9])?` * * * string name = 3; @@ -3108,7 +3108,7 @@ public Builder setName(java.lang.String value) { * name as an already-existing Job, the attempt returns the * existing Job. * The name must match the regular expression - * `[a-z]([-a-z0-9]{0,38}[a-z0-9])?` + * `[a-z]([-a-z0-9]{0,1022}[a-z0-9])?` * * * string name = 3; @@ -3131,7 +3131,7 @@ public Builder clearName() { * name as an already-existing Job, the attempt returns the * existing Job. * The name must match the regular expression - * `[a-z]([-a-z0-9]{0,38}[a-z0-9])?` + * `[a-z]([-a-z0-9]{0,1022}[a-z0-9])?` * * * string name = 3; diff --git a/proto-google-cloud-dataflow-v1beta3/src/main/java/com/google/dataflow/v1beta3/JobOrBuilder.java b/proto-google-cloud-dataflow-v1beta3/src/main/java/com/google/dataflow/v1beta3/JobOrBuilder.java index 70a8d0b6..45dabc71 100644 --- a/proto-google-cloud-dataflow-v1beta3/src/main/java/com/google/dataflow/v1beta3/JobOrBuilder.java +++ b/proto-google-cloud-dataflow-v1beta3/src/main/java/com/google/dataflow/v1beta3/JobOrBuilder.java @@ -87,7 +87,7 @@ public interface JobOrBuilder * name as an already-existing Job, the attempt returns the * existing Job. * The name must match the regular expression - * `[a-z]([-a-z0-9]{0,38}[a-z0-9])?` + * `[a-z]([-a-z0-9]{0,1022}[a-z0-9])?` * * * string name = 3; @@ -105,7 +105,7 @@ public interface JobOrBuilder * name as an already-existing Job, the attempt returns the * existing Job. * The name must match the regular expression - * `[a-z]([-a-z0-9]{0,38}[a-z0-9])?` + * `[a-z]([-a-z0-9]{0,1022}[a-z0-9])?` * * * string name = 3; diff --git a/proto-google-cloud-dataflow-v1beta3/src/main/proto/google/dataflow/v1beta3/jobs.proto b/proto-google-cloud-dataflow-v1beta3/src/main/proto/google/dataflow/v1beta3/jobs.proto index 3e4b5cfa..359b7873 100644 --- a/proto-google-cloud-dataflow-v1beta3/src/main/proto/google/dataflow/v1beta3/jobs.proto +++ b/proto-google-cloud-dataflow-v1beta3/src/main/proto/google/dataflow/v1beta3/jobs.proto @@ -154,7 +154,7 @@ message Job { // existing Job. // // The name must match the regular expression - // `[a-z]([-a-z0-9]{0,38}[a-z0-9])?` + // `[a-z]([-a-z0-9]{0,1022}[a-z0-9])?` string name = 3; // The type of Cloud Dataflow job. diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 2e90613a..f29615fb 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -29,7 +29,7 @@ com.google.cloud google-cloud-dataflow - 0.6.0 + 0.6.1 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 2acabb05..735e9850 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-dataflow - 0.6.0 + 0.6.1 diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index cf1713a2..7fa704e9 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-dataflow - 0.6.0 + 0.6.1 diff --git a/versions.txt b/versions.txt index 9b9fd1e9..281838ee 100644 --- a/versions.txt +++ b/versions.txt @@ -1,6 +1,6 @@ # Format: # module:released-version:current-version -google-cloud-dataflow:0.6.1:0.6.1 -grpc-google-cloud-dataflow-v1beta3:0.6.1:0.6.1 -proto-google-cloud-dataflow-v1beta3:0.6.1:0.6.1 +google-cloud-dataflow:0.7.0:0.7.0 +grpc-google-cloud-dataflow-v1beta3:0.7.0:0.7.0 +proto-google-cloud-dataflow-v1beta3:0.7.0:0.7.0