diff --git a/java-containeranalysis/.kokoro/dependencies.sh b/java-containeranalysis/.kokoro/dependencies.sh index d7476cfe9727..1351152b7831 100755 --- a/java-containeranalysis/.kokoro/dependencies.sh +++ b/java-containeranalysis/.kokoro/dependencies.sh @@ -66,11 +66,11 @@ function completenessCheck() { # This is stripped from the output as it is not present in the flattened pom. # Only dependencies with 'compile' or 'runtime' scope are included from original dependency list. msg "Generating dependency list using original pom..." - mvn dependency:list -f pom.xml -DincludeScope=runtime -Dsort=true | grep '\[INFO] .*:.*:.*:.*:.*' | sed -e 's/ --.*//' >.org-list.txt + mvn dependency:list -f pom.xml -DexcludeArtifactIds=commons-codec,commons-logging,opencensus-api,opencensus-contrib-http-util,httpclient,httpcore -DincludeScope=runtime -Dsort=true | grep '\[INFO] .*:.*:.*:.*:.*' | sed -e 's/ --.*//' >.org-list.txt # Output dep list generated using the flattened pom (only 'compile' and 'runtime' scopes) msg "Generating dependency list using flattened pom..." - mvn dependency:list -f .flattened-pom.xml -DincludeScope=runtime -Dsort=true | grep '\[INFO] .*:.*:.*:.*:.*' >.new-list.txt + mvn dependency:list -f .flattened-pom.xml -DexcludeArtifactIds=commons-codec,commons-logging,opencensus-api,opencensus-contrib-http-util,httpclient,httpcore -DincludeScope=runtime -Dsort=true | grep '\[INFO] .*:.*:.*:.*:.*' >.new-list.txt # Compare two dependency lists msg "Comparing dependency lists..." diff --git a/java-containeranalysis/google-cloud-containeranalysis/pom.xml b/java-containeranalysis/google-cloud-containeranalysis/pom.xml index 5e7106c588c3..22e509be6ba0 100644 --- a/java-containeranalysis/google-cloud-containeranalysis/pom.xml +++ b/java-containeranalysis/google-cloud-containeranalysis/pom.xml @@ -62,6 +62,10 @@ com.google.api gax-grpc + + com.google.api + gax-httpjson + org.threeten threetenbp @@ -93,12 +97,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/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/ContainerAnalysisClient.java b/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/ContainerAnalysisClient.java index cb2dcbae1687..e16d3d308271 100644 --- a/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/ContainerAnalysisClient.java +++ b/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/ContainerAnalysisClient.java @@ -16,7 +16,6 @@ package com.google.cloud.devtools.containeranalysis.v1; -import com.google.api.core.BetaApi; import com.google.api.gax.core.BackgroundResource; import com.google.api.gax.rpc.UnaryCallable; import com.google.api.resourcenames.ResourceName; @@ -57,7 +56,25 @@ * // This snippet has been automatically generated for illustrative purposes only. * // It may require modifications to work in your environment. * try (ContainerAnalysisClient containerAnalysisClient = ContainerAnalysisClient.create()) { - * ResourceName resource = ProjectName.of("[PROJECT]"); + * ResourceName resource = + * new ResourceName() { + * {@literal @}Override + * public Map getFieldValuesMap() { + * Map fieldValuesMap = new HashMap<>(); + * fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + * return fieldValuesMap; + * } + * + * {@literal @}Override + * public String getFieldValue(String fieldName) { + * return getFieldValuesMap().get(fieldName); + * } + * + * {@literal @}Override + * public String toString() { + * return "projects/project-8432/notes/note-8432"; + * } + * }; * Policy policy = Policy.newBuilder().build(); * Policy response = containerAnalysisClient.setIamPolicy(resource, policy); * } @@ -114,6 +131,21 @@ * ContainerAnalysisClient.create(containerAnalysisSettings); * } * + *

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.
+ * ContainerAnalysisSettings containerAnalysisSettings =
+ *     ContainerAnalysisSettings.newBuilder()
+ *         .setTransportChannelProvider(
+ *             ContainerAnalysisSettings.defaultHttpJsonTransportProviderBuilder().build())
+ *         .build();
+ * ContainerAnalysisClient containerAnalysisClient =
+ *     ContainerAnalysisClient.create(containerAnalysisSettings);
+ * }
+ * *

Please refer to the GitHub repository's samples for more quickstart code snippets. */ @Generated("by gapic-generator-java") @@ -147,7 +179,6 @@ public static final ContainerAnalysisClient create(ContainerAnalysisSettings set * Constructs an instance of ContainerAnalysisClient, using the given stub for making calls. This * is for advanced usage - prefer using create(ContainerAnalysisSettings). */ - @BetaApi("A restructuring of stub classes is planned, so this may break in the future") public static final ContainerAnalysisClient create(ContainerAnalysisStub stub) { return new ContainerAnalysisClient(stub); } @@ -162,7 +193,6 @@ protected ContainerAnalysisClient(ContainerAnalysisSettings settings) throws IOE this.stub = ((ContainerAnalysisStubSettings) settings.getStubSettings()).createStub(); } - @BetaApi("A restructuring of stub classes is planned, so this may break in the future") protected ContainerAnalysisClient(ContainerAnalysisStub stub) { this.settings = null; this.stub = stub; @@ -172,7 +202,6 @@ public final ContainerAnalysisSettings getSettings() { return settings; } - @BetaApi("A restructuring of stub classes is planned, so this may break in the future") public ContainerAnalysisStub getStub() { return stub; } @@ -192,7 +221,25 @@ public ContainerAnalysisStub getStub() { * // This snippet has been automatically generated for illustrative purposes only. * // It may require modifications to work in your environment. * try (ContainerAnalysisClient containerAnalysisClient = ContainerAnalysisClient.create()) { - * ResourceName resource = ProjectName.of("[PROJECT]"); + * ResourceName resource = + * new ResourceName() { + * {@literal @}Override + * public Map getFieldValuesMap() { + * Map fieldValuesMap = new HashMap<>(); + * fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + * return fieldValuesMap; + * } + * + * {@literal @}Override + * public String getFieldValue(String fieldName) { + * return getFieldValuesMap().get(fieldName); + * } + * + * {@literal @}Override + * public String toString() { + * return "projects/project-8432/notes/note-8432"; + * } + * }; * Policy policy = Policy.newBuilder().build(); * Policy response = containerAnalysisClient.setIamPolicy(resource, policy); * } @@ -265,7 +312,7 @@ public final Policy setIamPolicy(String resource, Policy policy) { * try (ContainerAnalysisClient containerAnalysisClient = ContainerAnalysisClient.create()) { * SetIamPolicyRequest request = * SetIamPolicyRequest.newBuilder() - * .setResource(ProjectName.of("[PROJECT]").toString()) + * .setResource("SetIamPolicyRequest1223629066".toString()) * .setPolicy(Policy.newBuilder().build()) * .setUpdateMask(FieldMask.newBuilder().build()) * .build(); @@ -297,7 +344,7 @@ public final Policy setIamPolicy(SetIamPolicyRequest request) { * try (ContainerAnalysisClient containerAnalysisClient = ContainerAnalysisClient.create()) { * SetIamPolicyRequest request = * SetIamPolicyRequest.newBuilder() - * .setResource(ProjectName.of("[PROJECT]").toString()) + * .setResource("SetIamPolicyRequest1223629066".toString()) * .setPolicy(Policy.newBuilder().build()) * .setUpdateMask(FieldMask.newBuilder().build()) * .build(); @@ -326,7 +373,25 @@ public final UnaryCallable setIamPolicyCallable() { * // This snippet has been automatically generated for illustrative purposes only. * // It may require modifications to work in your environment. * try (ContainerAnalysisClient containerAnalysisClient = ContainerAnalysisClient.create()) { - * ResourceName resource = ProjectName.of("[PROJECT]"); + * ResourceName resource = + * new ResourceName() { + * {@literal @}Override + * public Map getFieldValuesMap() { + * Map fieldValuesMap = new HashMap<>(); + * fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + * return fieldValuesMap; + * } + * + * {@literal @}Override + * public String getFieldValue(String fieldName) { + * return getFieldValuesMap().get(fieldName); + * } + * + * {@literal @}Override + * public String toString() { + * return "projects/project-8432/notes/note-8432"; + * } + * }; * Policy response = containerAnalysisClient.getIamPolicy(resource); * } * } @@ -389,7 +454,7 @@ public final Policy getIamPolicy(String resource) { * try (ContainerAnalysisClient containerAnalysisClient = ContainerAnalysisClient.create()) { * GetIamPolicyRequest request = * GetIamPolicyRequest.newBuilder() - * .setResource(ProjectName.of("[PROJECT]").toString()) + * .setResource("GetIamPolicyRequest-1527610370".toString()) * .setOptions(GetPolicyOptions.newBuilder().build()) * .build(); * Policy response = containerAnalysisClient.getIamPolicy(request); @@ -420,7 +485,7 @@ public final Policy getIamPolicy(GetIamPolicyRequest request) { * try (ContainerAnalysisClient containerAnalysisClient = ContainerAnalysisClient.create()) { * GetIamPolicyRequest request = * GetIamPolicyRequest.newBuilder() - * .setResource(ProjectName.of("[PROJECT]").toString()) + * .setResource("GetIamPolicyRequest-1527610370".toString()) * .setOptions(GetPolicyOptions.newBuilder().build()) * .build(); * ApiFuture future = containerAnalysisClient.getIamPolicyCallable().futureCall(request); @@ -447,7 +512,25 @@ public final UnaryCallable getIamPolicyCallable() { * // This snippet has been automatically generated for illustrative purposes only. * // It may require modifications to work in your environment. * try (ContainerAnalysisClient containerAnalysisClient = ContainerAnalysisClient.create()) { - * ResourceName resource = ProjectName.of("[PROJECT]"); + * ResourceName resource = + * new ResourceName() { + * {@literal @}Override + * public Map getFieldValuesMap() { + * Map fieldValuesMap = new HashMap<>(); + * fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + * return fieldValuesMap; + * } + * + * {@literal @}Override + * public String getFieldValue(String fieldName) { + * return getFieldValuesMap().get(fieldName); + * } + * + * {@literal @}Override + * public String toString() { + * return "projects/project-8432/notes/note-8432"; + * } + * }; * List permissions = new ArrayList<>(); * TestIamPermissionsResponse response = * containerAnalysisClient.testIamPermissions(resource, permissions); @@ -525,7 +608,7 @@ public final TestIamPermissionsResponse testIamPermissions( * try (ContainerAnalysisClient containerAnalysisClient = ContainerAnalysisClient.create()) { * TestIamPermissionsRequest request = * TestIamPermissionsRequest.newBuilder() - * .setResource(ProjectName.of("[PROJECT]").toString()) + * .setResource("TestIamPermissionsRequest942398222".toString()) * .addAllPermissions(new ArrayList()) * .build(); * TestIamPermissionsResponse response = containerAnalysisClient.testIamPermissions(request); @@ -555,7 +638,7 @@ public final TestIamPermissionsResponse testIamPermissions(TestIamPermissionsReq * try (ContainerAnalysisClient containerAnalysisClient = ContainerAnalysisClient.create()) { * TestIamPermissionsRequest request = * TestIamPermissionsRequest.newBuilder() - * .setResource(ProjectName.of("[PROJECT]").toString()) + * .setResource("TestIamPermissionsRequest942398222".toString()) * .addAllPermissions(new ArrayList()) * .build(); * ApiFuture future = diff --git a/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/ContainerAnalysisSettings.java b/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/ContainerAnalysisSettings.java index 08c4cc7667f2..2d61f2e90e6b 100644 --- a/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/ContainerAnalysisSettings.java +++ b/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/ContainerAnalysisSettings.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; @@ -125,11 +126,18 @@ public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilde return ContainerAnalysisStubSettings.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 ContainerAnalysisStubSettings.defaultGrpcTransportProviderBuilder(); } + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return ContainerAnalysisStubSettings.defaultHttpJsonTransportProviderBuilder(); + } + public static TransportChannelProvider defaultTransportChannelProvider() { return ContainerAnalysisStubSettings.defaultTransportChannelProvider(); } @@ -139,11 +147,17 @@ public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuil return ContainerAnalysisStubSettings.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); @@ -181,6 +195,11 @@ private static Builder createDefault() { return new Builder(ContainerAnalysisStubSettings.newBuilder()); } + @BetaApi + private static Builder createHttpJsonDefault() { + return new Builder(ContainerAnalysisStubSettings.newHttpJsonBuilder()); + } + public ContainerAnalysisStubSettings.Builder getStubSettingsBuilder() { return ((ContainerAnalysisStubSettings.Builder) getStubSettings()); } diff --git a/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/package-info.java b/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/package-info.java index bea8c1e6a2ae..3e09b4e66c1b 100644 --- a/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/package-info.java +++ b/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/package-info.java @@ -39,7 +39,25 @@ * // This snippet has been automatically generated for illustrative purposes only. * // It may require modifications to work in your environment. * try (ContainerAnalysisClient containerAnalysisClient = ContainerAnalysisClient.create()) { - * ResourceName resource = BillingAccountName.of("[BILLING_ACCOUNT]"); + * ResourceName resource = + * new ResourceName() { + * {@literal @}Override + * public Map getFieldValuesMap() { + * Map fieldValuesMap = new HashMap<>(); + * fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + * return fieldValuesMap; + * } + * + * {@literal @}Override + * public String getFieldValue(String fieldName) { + * return getFieldValuesMap().get(fieldName); + * } + * + * {@literal @}Override + * public String toString() { + * return "projects/project-8432/notes/note-8432"; + * } + * }; * Policy policy = Policy.newBuilder().build(); * Policy response = containerAnalysisClient.setIamPolicy(resource, policy); * } diff --git a/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/stub/ContainerAnalysisStubSettings.java b/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/stub/ContainerAnalysisStubSettings.java index ac061bd4713a..0aee3f3d0b10 100644 --- a/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/stub/ContainerAnalysisStubSettings.java +++ b/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/stub/ContainerAnalysisStubSettings.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; @@ -120,13 +123,17 @@ public UnaryCallSettings getIamPolicySettings() { return getVulnerabilityOccurrencesSummarySettings; } - @BetaApi("A restructuring of stub classes is planned, so this may break in the future") public ContainerAnalysisStub createStub() throws IOException { if (getTransportChannelProvider() .getTransportName() .equals(GrpcTransportChannel.getGrpcTransportName())) { return GrpcContainerAnalysisStub.create(this); } + if (getTransportChannelProvider() + .getTransportName() + .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { + return HttpJsonContainerAnalysisStub.create(this); + } throw new UnsupportedOperationException( String.format( "Transport not supported: %s", getTransportChannelProvider().getTransportName())); @@ -159,18 +166,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(ContainerAnalysisStubSettings.class)) @@ -178,11 +192,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(ContainerAnalysisStubSettings.class)) + .setTransportToken( + GaxHttpJsonProperties.getHttpJsonTokenName(), + GaxHttpJsonProperties.getHttpJsonVersion()); + } + + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return ContainerAnalysisStubSettings.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); @@ -294,6 +327,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 .setIamPolicySettings() diff --git a/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/stub/HttpJsonContainerAnalysisCallableFactory.java b/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/stub/HttpJsonContainerAnalysisCallableFactory.java new file mode 100644 index 000000000000..5e017efcebf6 --- /dev/null +++ b/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/stub/HttpJsonContainerAnalysisCallableFactory.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.cloud.devtools.containeranalysis.v1.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 ContainerAnalysis service API. + * + *

This class is for advanced usage. + */ +@Generated("by gapic-generator-java") +@BetaApi +public class HttpJsonContainerAnalysisCallableFactory + 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/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/stub/HttpJsonContainerAnalysisStub.java b/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/stub/HttpJsonContainerAnalysisStub.java new file mode 100644 index 000000000000..4f90d441f3d0 --- /dev/null +++ b/java-containeranalysis/google-cloud-containeranalysis/src/main/java/com/google/cloud/devtools/containeranalysis/v1/stub/HttpJsonContainerAnalysisStub.java @@ -0,0 +1,375 @@ +/* + * 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.cloud.devtools.containeranalysis.v1.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.containeranalysis.v1.GetVulnerabilityOccurrencesSummaryRequest; +import com.google.containeranalysis.v1.VulnerabilityOccurrencesSummary; +import com.google.iam.v1.GetIamPolicyRequest; +import com.google.iam.v1.Policy; +import com.google.iam.v1.SetIamPolicyRequest; +import com.google.iam.v1.TestIamPermissionsRequest; +import com.google.iam.v1.TestIamPermissionsResponse; +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 ContainerAnalysis service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@Generated("by gapic-generator-java") +@BetaApi +public class HttpJsonContainerAnalysisStub extends ContainerAnalysisStub { + private static final TypeRegistry typeRegistry = TypeRegistry.newBuilder().build(); + + private static final ApiMethodDescriptor + setIamPolicyMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName( + "google.devtools.containeranalysis.v1.ContainerAnalysis/SetIamPolicy") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/{resource=projects/*/notes/*}:setIamPolicy", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "resource", request.getResource()); + return fields; + }) + .setAdditionalPaths("/v1/{resource=projects/*/occurrences/*}:setIamPolicy") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearResource().build())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Policy.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + getIamPolicyMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName( + "google.devtools.containeranalysis.v1.ContainerAnalysis/GetIamPolicy") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/{resource=projects/*/notes/*}:getIamPolicy", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "resource", request.getResource()); + return fields; + }) + .setAdditionalPaths("/v1/{resource=projects/*/occurrences/*}:getIamPolicy") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearResource().build())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Policy.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + testIamPermissionsMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName( + "google.devtools.containeranalysis.v1.ContainerAnalysis/TestIamPermissions") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/{resource=projects/*/notes/*}:testIamPermissions", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "resource", request.getResource()); + return fields; + }) + .setAdditionalPaths( + "/v1/{resource=projects/*/occurrences/*}:testIamPermissions") + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().clearResource().build())) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(TestIamPermissionsResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor< + GetVulnerabilityOccurrencesSummaryRequest, VulnerabilityOccurrencesSummary> + getVulnerabilityOccurrencesSummaryMethodDescriptor = + ApiMethodDescriptor + . + newBuilder() + .setFullMethodName( + "google.devtools.containeranalysis.v1.ContainerAnalysis/GetVulnerabilityOccurrencesSummary") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter + .newBuilder() + .setPath( + "/v1/{parent=projects/*}/occurrences:vulnerabilitySummary", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer + serializer = ProtoRestSerializer.create(); + serializer.putPathParam(fields, "parent", request.getParent()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer + serializer = ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "filter", request.getFilter()); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(VulnerabilityOccurrencesSummary.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private final UnaryCallable setIamPolicyCallable; + private final UnaryCallable getIamPolicyCallable; + private final UnaryCallable + testIamPermissionsCallable; + private final UnaryCallable< + GetVulnerabilityOccurrencesSummaryRequest, VulnerabilityOccurrencesSummary> + getVulnerabilityOccurrencesSummaryCallable; + + private final BackgroundResource backgroundResources; + private final HttpJsonStubCallableFactory callableFactory; + + public static final HttpJsonContainerAnalysisStub create(ContainerAnalysisStubSettings settings) + throws IOException { + return new HttpJsonContainerAnalysisStub(settings, ClientContext.create(settings)); + } + + public static final HttpJsonContainerAnalysisStub create(ClientContext clientContext) + throws IOException { + return new HttpJsonContainerAnalysisStub( + ContainerAnalysisStubSettings.newHttpJsonBuilder().build(), clientContext); + } + + public static final HttpJsonContainerAnalysisStub create( + ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { + return new HttpJsonContainerAnalysisStub( + ContainerAnalysisStubSettings.newHttpJsonBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of HttpJsonContainerAnalysisStub, 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 HttpJsonContainerAnalysisStub( + ContainerAnalysisStubSettings settings, ClientContext clientContext) throws IOException { + this(settings, clientContext, new HttpJsonContainerAnalysisCallableFactory()); + } + + /** + * Constructs an instance of HttpJsonContainerAnalysisStub, 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 HttpJsonContainerAnalysisStub( + ContainerAnalysisStubSettings settings, + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + + HttpJsonCallSettings setIamPolicyTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(setIamPolicyMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings getIamPolicyTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(getIamPolicyMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + testIamPermissionsTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(testIamPermissionsMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + getVulnerabilityOccurrencesSummaryTransportSettings = + HttpJsonCallSettings + . + newBuilder() + .setMethodDescriptor(getVulnerabilityOccurrencesSummaryMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + + this.setIamPolicyCallable = + callableFactory.createUnaryCallable( + setIamPolicyTransportSettings, settings.setIamPolicySettings(), clientContext); + this.getIamPolicyCallable = + callableFactory.createUnaryCallable( + getIamPolicyTransportSettings, settings.getIamPolicySettings(), clientContext); + this.testIamPermissionsCallable = + callableFactory.createUnaryCallable( + testIamPermissionsTransportSettings, + settings.testIamPermissionsSettings(), + clientContext); + this.getVulnerabilityOccurrencesSummaryCallable = + callableFactory.createUnaryCallable( + getVulnerabilityOccurrencesSummaryTransportSettings, + settings.getVulnerabilityOccurrencesSummarySettings(), + clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + @InternalApi + public static List getMethodDescriptors() { + List methodDescriptors = new ArrayList<>(); + methodDescriptors.add(setIamPolicyMethodDescriptor); + methodDescriptors.add(getIamPolicyMethodDescriptor); + methodDescriptors.add(testIamPermissionsMethodDescriptor); + methodDescriptors.add(getVulnerabilityOccurrencesSummaryMethodDescriptor); + return methodDescriptors; + } + + @Override + public UnaryCallable setIamPolicyCallable() { + return setIamPolicyCallable; + } + + @Override + public UnaryCallable getIamPolicyCallable() { + return getIamPolicyCallable; + } + + @Override + public UnaryCallable + testIamPermissionsCallable() { + return testIamPermissionsCallable; + } + + @Override + public UnaryCallable + getVulnerabilityOccurrencesSummaryCallable() { + return getVulnerabilityOccurrencesSummaryCallable; + } + + @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/java-containeranalysis/google-cloud-containeranalysis/src/test/java/com/google/cloud/devtools/containeranalysis/v1/ContainerAnalysisClientHttpJsonTest.java b/java-containeranalysis/google-cloud-containeranalysis/src/test/java/com/google/cloud/devtools/containeranalysis/v1/ContainerAnalysisClientHttpJsonTest.java new file mode 100644 index 000000000000..1613872e6cbc --- /dev/null +++ b/java-containeranalysis/google-cloud-containeranalysis/src/test/java/com/google/cloud/devtools/containeranalysis/v1/ContainerAnalysisClientHttpJsonTest.java @@ -0,0 +1,566 @@ +/* + * 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.cloud.devtools.containeranalysis.v1; + +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.api.resourcenames.ResourceName; +import com.google.cloud.devtools.containeranalysis.v1.stub.HttpJsonContainerAnalysisStub; +import com.google.containeranalysis.v1.ProjectName; +import com.google.containeranalysis.v1.VulnerabilityOccurrencesSummary; +import com.google.iam.v1.AuditConfig; +import com.google.iam.v1.Binding; +import com.google.iam.v1.Policy; +import com.google.iam.v1.TestIamPermissionsResponse; +import com.google.protobuf.ByteString; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +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 ContainerAnalysisClientHttpJsonTest { + private static MockHttpService mockService; + private static ContainerAnalysisClient client; + + @BeforeClass + public static void startStaticServer() throws IOException { + mockService = + new MockHttpService( + HttpJsonContainerAnalysisStub.getMethodDescriptors(), + ContainerAnalysisSettings.getDefaultEndpoint()); + ContainerAnalysisSettings settings = + ContainerAnalysisSettings.newHttpJsonBuilder() + .setTransportChannelProvider( + ContainerAnalysisSettings.defaultHttpJsonTransportProviderBuilder() + .setHttpTransport(mockService) + .build()) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = ContainerAnalysisClient.create(settings); + } + + @AfterClass + public static void stopServer() { + client.close(); + } + + @Before + public void setUp() {} + + @After + public void tearDown() throws Exception { + mockService.reset(); + } + + @Test + public void setIamPolicyTest() throws Exception { + Policy expectedResponse = + Policy.newBuilder() + .setVersion(351608024) + .addAllBindings(new ArrayList()) + .addAllAuditConfigs(new ArrayList()) + .setEtag(ByteString.EMPTY) + .build(); + mockService.addResponse(expectedResponse); + + ResourceName resource = + new ResourceName() { + @Override + public Map getFieldValuesMap() { + Map fieldValuesMap = new HashMap<>(); + fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + return fieldValuesMap; + } + + @Override + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return "projects/project-8432/notes/note-8432"; + } + }; + Policy policy = Policy.newBuilder().build(); + + Policy actualResponse = client.setIamPolicy(resource, policy); + 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 setIamPolicyExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + ResourceName resource = + new ResourceName() { + @Override + public Map getFieldValuesMap() { + Map fieldValuesMap = new HashMap<>(); + fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + return fieldValuesMap; + } + + @Override + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return "projects/project-8432/notes/note-8432"; + } + }; + Policy policy = Policy.newBuilder().build(); + client.setIamPolicy(resource, policy); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void setIamPolicyTest2() throws Exception { + Policy expectedResponse = + Policy.newBuilder() + .setVersion(351608024) + .addAllBindings(new ArrayList()) + .addAllAuditConfigs(new ArrayList()) + .setEtag(ByteString.EMPTY) + .build(); + mockService.addResponse(expectedResponse); + + String resource = "projects/project-8432/notes/note-8432"; + Policy policy = Policy.newBuilder().build(); + + Policy actualResponse = client.setIamPolicy(resource, policy); + 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 setIamPolicyExceptionTest2() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String resource = "projects/project-8432/notes/note-8432"; + Policy policy = Policy.newBuilder().build(); + client.setIamPolicy(resource, policy); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getIamPolicyTest() throws Exception { + Policy expectedResponse = + Policy.newBuilder() + .setVersion(351608024) + .addAllBindings(new ArrayList()) + .addAllAuditConfigs(new ArrayList()) + .setEtag(ByteString.EMPTY) + .build(); + mockService.addResponse(expectedResponse); + + ResourceName resource = + new ResourceName() { + @Override + public Map getFieldValuesMap() { + Map fieldValuesMap = new HashMap<>(); + fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + return fieldValuesMap; + } + + @Override + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return "projects/project-8432/notes/note-8432"; + } + }; + + Policy actualResponse = client.getIamPolicy(resource); + 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 getIamPolicyExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + ResourceName resource = + new ResourceName() { + @Override + public Map getFieldValuesMap() { + Map fieldValuesMap = new HashMap<>(); + fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + return fieldValuesMap; + } + + @Override + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return "projects/project-8432/notes/note-8432"; + } + }; + client.getIamPolicy(resource); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getIamPolicyTest2() throws Exception { + Policy expectedResponse = + Policy.newBuilder() + .setVersion(351608024) + .addAllBindings(new ArrayList()) + .addAllAuditConfigs(new ArrayList()) + .setEtag(ByteString.EMPTY) + .build(); + mockService.addResponse(expectedResponse); + + String resource = "projects/project-8432/notes/note-8432"; + + Policy actualResponse = client.getIamPolicy(resource); + 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 getIamPolicyExceptionTest2() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String resource = "projects/project-8432/notes/note-8432"; + client.getIamPolicy(resource); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void testIamPermissionsTest() throws Exception { + TestIamPermissionsResponse expectedResponse = + TestIamPermissionsResponse.newBuilder().addAllPermissions(new ArrayList()).build(); + mockService.addResponse(expectedResponse); + + ResourceName resource = + new ResourceName() { + @Override + public Map getFieldValuesMap() { + Map fieldValuesMap = new HashMap<>(); + fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + return fieldValuesMap; + } + + @Override + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return "projects/project-8432/notes/note-8432"; + } + }; + List permissions = new ArrayList<>(); + + TestIamPermissionsResponse actualResponse = client.testIamPermissions(resource, permissions); + 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 testIamPermissionsExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + ResourceName resource = + new ResourceName() { + @Override + public Map getFieldValuesMap() { + Map fieldValuesMap = new HashMap<>(); + fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + return fieldValuesMap; + } + + @Override + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return "projects/project-8432/notes/note-8432"; + } + }; + List permissions = new ArrayList<>(); + client.testIamPermissions(resource, permissions); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void testIamPermissionsTest2() throws Exception { + TestIamPermissionsResponse expectedResponse = + TestIamPermissionsResponse.newBuilder().addAllPermissions(new ArrayList()).build(); + mockService.addResponse(expectedResponse); + + String resource = "projects/project-8432/notes/note-8432"; + List permissions = new ArrayList<>(); + + TestIamPermissionsResponse actualResponse = client.testIamPermissions(resource, permissions); + 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 testIamPermissionsExceptionTest2() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String resource = "projects/project-8432/notes/note-8432"; + List permissions = new ArrayList<>(); + client.testIamPermissions(resource, permissions); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getVulnerabilityOccurrencesSummaryTest() throws Exception { + VulnerabilityOccurrencesSummary expectedResponse = + VulnerabilityOccurrencesSummary.newBuilder() + .addAllCounts(new ArrayList()) + .build(); + mockService.addResponse(expectedResponse); + + ProjectName parent = ProjectName.of("[PROJECT]"); + String filter = "filter-1274492040"; + + VulnerabilityOccurrencesSummary actualResponse = + client.getVulnerabilityOccurrencesSummary(parent, filter); + 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 getVulnerabilityOccurrencesSummaryExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + ProjectName parent = ProjectName.of("[PROJECT]"); + String filter = "filter-1274492040"; + client.getVulnerabilityOccurrencesSummary(parent, filter); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getVulnerabilityOccurrencesSummaryTest2() throws Exception { + VulnerabilityOccurrencesSummary expectedResponse = + VulnerabilityOccurrencesSummary.newBuilder() + .addAllCounts(new ArrayList()) + .build(); + mockService.addResponse(expectedResponse); + + String parent = "projects/project-2353"; + String filter = "filter-1274492040"; + + VulnerabilityOccurrencesSummary actualResponse = + client.getVulnerabilityOccurrencesSummary(parent, filter); + 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 getVulnerabilityOccurrencesSummaryExceptionTest2() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String parent = "projects/project-2353"; + String filter = "filter-1274492040"; + client.getVulnerabilityOccurrencesSummary(parent, filter); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } +} diff --git a/java-containeranalysis/google-cloud-containeranalysis/src/test/java/com/google/cloud/devtools/containeranalysis/v1/ContainerAnalysisClientTest.java b/java-containeranalysis/google-cloud-containeranalysis/src/test/java/com/google/cloud/devtools/containeranalysis/v1/ContainerAnalysisClientTest.java index 8f8a36ea4248..79c0d735d612 100644 --- a/java-containeranalysis/google-cloud-containeranalysis/src/test/java/com/google/cloud/devtools/containeranalysis/v1/ContainerAnalysisClientTest.java +++ b/java-containeranalysis/google-cloud-containeranalysis/src/test/java/com/google/cloud/devtools/containeranalysis/v1/ContainerAnalysisClientTest.java @@ -40,7 +40,9 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.UUID; import javax.annotation.Generated; import org.junit.After; @@ -99,7 +101,25 @@ public void setIamPolicyTest() throws Exception { .build(); mockContainerAnalysis.addResponse(expectedResponse); - ResourceName resource = ProjectName.of("[PROJECT]"); + ResourceName resource = + new ResourceName() { + @Override + public Map getFieldValuesMap() { + Map fieldValuesMap = new HashMap<>(); + fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + return fieldValuesMap; + } + + @Override + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return "projects/project-8432/notes/note-8432"; + } + }; Policy policy = Policy.newBuilder().build(); Policy actualResponse = client.setIamPolicy(resource, policy); @@ -123,7 +143,25 @@ public void setIamPolicyExceptionTest() throws Exception { mockContainerAnalysis.addException(exception); try { - ResourceName resource = ProjectName.of("[PROJECT]"); + ResourceName resource = + new ResourceName() { + @Override + public Map getFieldValuesMap() { + Map fieldValuesMap = new HashMap<>(); + fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + return fieldValuesMap; + } + + @Override + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return "projects/project-8432/notes/note-8432"; + } + }; Policy policy = Policy.newBuilder().build(); client.setIamPolicy(resource, policy); Assert.fail("No exception raised"); @@ -187,7 +225,25 @@ public void getIamPolicyTest() throws Exception { .build(); mockContainerAnalysis.addResponse(expectedResponse); - ResourceName resource = ProjectName.of("[PROJECT]"); + ResourceName resource = + new ResourceName() { + @Override + public Map getFieldValuesMap() { + Map fieldValuesMap = new HashMap<>(); + fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + return fieldValuesMap; + } + + @Override + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return "projects/project-8432/notes/note-8432"; + } + }; Policy actualResponse = client.getIamPolicy(resource); Assert.assertEquals(expectedResponse, actualResponse); @@ -209,7 +265,25 @@ public void getIamPolicyExceptionTest() throws Exception { mockContainerAnalysis.addException(exception); try { - ResourceName resource = ProjectName.of("[PROJECT]"); + ResourceName resource = + new ResourceName() { + @Override + public Map getFieldValuesMap() { + Map fieldValuesMap = new HashMap<>(); + fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + return fieldValuesMap; + } + + @Override + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return "projects/project-8432/notes/note-8432"; + } + }; client.getIamPolicy(resource); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { @@ -264,7 +338,25 @@ public void testIamPermissionsTest() throws Exception { TestIamPermissionsResponse.newBuilder().addAllPermissions(new ArrayList()).build(); mockContainerAnalysis.addResponse(expectedResponse); - ResourceName resource = ProjectName.of("[PROJECT]"); + ResourceName resource = + new ResourceName() { + @Override + public Map getFieldValuesMap() { + Map fieldValuesMap = new HashMap<>(); + fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + return fieldValuesMap; + } + + @Override + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return "projects/project-8432/notes/note-8432"; + } + }; List permissions = new ArrayList<>(); TestIamPermissionsResponse actualResponse = client.testIamPermissions(resource, permissions); @@ -288,7 +380,25 @@ public void testIamPermissionsExceptionTest() throws Exception { mockContainerAnalysis.addException(exception); try { - ResourceName resource = ProjectName.of("[PROJECT]"); + ResourceName resource = + new ResourceName() { + @Override + public Map getFieldValuesMap() { + Map fieldValuesMap = new HashMap<>(); + fieldValuesMap.put("resource", "projects/project-8432/notes/note-8432"); + return fieldValuesMap; + } + + @Override + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return "projects/project-8432/notes/note-8432"; + } + }; List permissions = new ArrayList<>(); client.testIamPermissions(resource, permissions); Assert.fail("No exception raised"); diff --git a/java-containeranalysis/owlbot.py b/java-containeranalysis/owlbot.py index e9bb0e703961..48a775705c66 100644 --- a/java-containeranalysis/owlbot.py +++ b/java-containeranalysis/owlbot.py @@ -43,4 +43,6 @@ s.move(library) s.remove_staging_dirs() -java.common_templates() +java.common_templates(excludes=[ + '.kokoro/dependencies.sh', + ])