From 97288d2a39e2f2b7b6b4682947785a3edf2e9827 Mon Sep 17 00:00:00 2001 From: Mira Leung Date: Tue, 16 Feb 2021 17:39:33 -0800 Subject: [PATCH 1/3] feat(mixins): Add support for Mixin APIs, add KMS integ test --- rules_java_gapic/java_gapic.bzl | 16 + .../generator/gapic/composer/Composer.java | 31 +- .../GrpcServiceStubClassComposer.java | 4 + .../MockServiceImplClassComposer.java | 1 + .../ServiceClientTestClassComposer.java | 111 +- .../generator/gapic/model/GapicContext.java | 8 +- .../api/generator/gapic/model/Method.java | 12 + .../api/generator/gapic/model/Service.java | 2 + .../generator/gapic/protoparser/Parser.java | 71 +- .../ServiceClientTestClassComposerTest.java | 41 +- test/integration/BUILD.bazel | 37 + test/integration/cloudkms_test_mixins_v1.yaml | 76 + test/integration/goldens/kms/BUILD.bazel | 6 + .../goldens/kms/CryptoKeyName.java | 261 ++ .../goldens/kms/CryptoKeyVersionName.java | 298 ++ ...pcKeyManagementServiceCallableFactory.java | 113 + .../kms/GrpcKeyManagementServiceStub.java | 1100 +++++ .../goldens/kms/ImportJobName.java | 261 ++ .../kms/KeyManagementServiceClient.java | 3631 +++++++++++++++++ .../kms/KeyManagementServiceClientTest.java | 2360 +++++++++++ .../kms/KeyManagementServiceSettings.java | 485 +++ .../goldens/kms/KeyManagementServiceStub.java | 214 + .../kms/KeyManagementServiceStubSettings.java | 1199 ++++++ test/integration/goldens/kms/KeyRingName.java | 223 + .../integration/goldens/kms/LocationName.java | 192 + .../goldens/kms/MockIAMPolicy.java | 59 + .../goldens/kms/MockIAMPolicyImpl.java | 122 + .../goldens/kms/MockKeyManagementService.java | 59 + .../kms/MockKeyManagementServiceImpl.java | 542 +++ .../goldens/kms/PublicKeyName.java | 298 ++ .../integration/goldens/kms/package-info.java | 52 + 31 files changed, 11818 insertions(+), 67 deletions(-) create mode 100644 test/integration/cloudkms_test_mixins_v1.yaml create mode 100644 test/integration/goldens/kms/BUILD.bazel create mode 100644 test/integration/goldens/kms/CryptoKeyName.java create mode 100644 test/integration/goldens/kms/CryptoKeyVersionName.java create mode 100644 test/integration/goldens/kms/GrpcKeyManagementServiceCallableFactory.java create mode 100644 test/integration/goldens/kms/GrpcKeyManagementServiceStub.java create mode 100644 test/integration/goldens/kms/ImportJobName.java create mode 100644 test/integration/goldens/kms/KeyManagementServiceClient.java create mode 100644 test/integration/goldens/kms/KeyManagementServiceClientTest.java create mode 100644 test/integration/goldens/kms/KeyManagementServiceSettings.java create mode 100644 test/integration/goldens/kms/KeyManagementServiceStub.java create mode 100644 test/integration/goldens/kms/KeyManagementServiceStubSettings.java create mode 100644 test/integration/goldens/kms/KeyRingName.java create mode 100644 test/integration/goldens/kms/LocationName.java create mode 100644 test/integration/goldens/kms/MockIAMPolicy.java create mode 100644 test/integration/goldens/kms/MockIAMPolicyImpl.java create mode 100644 test/integration/goldens/kms/MockKeyManagementService.java create mode 100644 test/integration/goldens/kms/MockKeyManagementServiceImpl.java create mode 100644 test/integration/goldens/kms/PublicKeyName.java create mode 100644 test/integration/goldens/kms/package-info.java diff --git a/rules_java_gapic/java_gapic.bzl b/rules_java_gapic/java_gapic.bzl index 58087d8f5f..46881d59e6 100644 --- a/rules_java_gapic/java_gapic.bzl +++ b/rules_java_gapic/java_gapic.bzl @@ -14,6 +14,7 @@ load("@com_google_api_codegen//rules_gapic:gapic.bzl", "proto_custom_library", "unzipped_srcjar") +SERVICE_YAML_ALLOWLIST = ["cloudkms"] NO_GRPC_CONFIG_ALLOWLIST = ["library"] def _java_gapic_postprocess_srcjar_impl(ctx): @@ -123,6 +124,7 @@ def java_gapic_library( srcs, grpc_service_config = None, gapic_yaml = None, + service_yaml = None, deps = [], test_deps = [], **kwargs): @@ -138,6 +140,20 @@ def java_gapic_library( if gapic_yaml: file_args_dict[gapic_yaml] = "gapic-config" + # Check the allow-list. + # Open this up after mixins are published, and gate on + # the allowlisted "mised-in" APIs present in Java. + if service_yaml: + service_yaml_in_allowlist = False + for keyword in SERVICE_YAML_ALLOWLIST: + if keyword in service_yaml: + service_yaml_in_allowlist = True + break + if service_yaml_in_allowlist: + file_args_dict[service_yaml] = "gapic-service-config" + else: + fail("Service.yaml is no longer supported in the Java microgenerator") + srcjar_name = name + "_srcjar" raw_srcjar_name = srcjar_name + "_raw" output_suffix = ".srcjar" diff --git a/src/main/java/com/google/api/generator/gapic/composer/Composer.java b/src/main/java/com/google/api/generator/gapic/composer/Composer.java index 4f5feeacf4..4220e94e7e 100644 --- a/src/main/java/com/google/api/generator/gapic/composer/Composer.java +++ b/src/main/java/com/google/api/generator/gapic/composer/Composer.java @@ -34,7 +34,6 @@ import java.util.Set; import java.util.stream.Collectors; import javax.annotation.Nonnull; -import javax.annotation.Nullable; public class Composer { public static List composeServiceClasses(GapicContext context) { @@ -44,9 +43,10 @@ public static List composeServiceClasses(GapicContext context) { availableResourceNames.put(resourceName.resourceTypeString(), resourceName); } for (Service service : context.services()) { - clazzes.addAll( - generateServiceClasses( - service, context.serviceConfig(), availableResourceNames, context.messages())); + clazzes.addAll(generateServiceClasses(service, context, availableResourceNames)); + } + for (Service mixinService : context.mixinServices()) { + clazzes.addAll(generateMockClasses(mixinService, availableResourceNames, context.messages())); } clazzes.addAll(generateResourceNameHelperClasses(context.helperResourceNames())); return addApacheLicense(clazzes); @@ -58,13 +58,14 @@ public static GapicPackageInfo composePackageInfo(GapicContext context) { public static List generateServiceClasses( @Nonnull Service service, - @Nullable GapicServiceConfig serviceConfig, - @Nonnull Map resourceNames, - @Nonnull Map messageTypes) { + GapicContext context, + @Nonnull Map resourceNames) { List clazzes = new ArrayList<>(); - clazzes.addAll(generateStubClasses(service, serviceConfig, messageTypes, resourceNames)); - clazzes.addAll(generateClientSettingsClasses(service, messageTypes, resourceNames)); - clazzes.addAll(generateMocksAndTestClasses(service, resourceNames, messageTypes)); + clazzes.addAll( + generateStubClasses(service, context.serviceConfig(), context.messages(), resourceNames)); + clazzes.addAll(generateClientSettingsClasses(service, context.messages(), resourceNames)); + clazzes.addAll(generateMockClasses(service, resourceNames, context.messages())); + clazzes.addAll(generateTestClasses(service, context, resourceNames)); // TODO(miraleung): Generate test classes. return clazzes; } @@ -100,13 +101,19 @@ public static List generateClientSettingsClasses( return clazzes; } - public static List generateMocksAndTestClasses( + public static List generateMockClasses( Service service, Map resourceNames, Map messageTypes) { List clazzes = new ArrayList<>(); clazzes.add(MockServiceClassComposer.instance().generate(service, messageTypes)); clazzes.add(MockServiceImplClassComposer.instance().generate(service, messageTypes)); + return clazzes; + } + + public static List generateTestClasses( + Service service, GapicContext context, Map resourceNames) { + List clazzes = new ArrayList<>(); clazzes.add( - ServiceClientTestClassComposer.instance().generate(service, resourceNames, messageTypes)); + ServiceClientTestClassComposer.instance().generate(service, context, resourceNames)); return clazzes; } diff --git a/src/main/java/com/google/api/generator/gapic/composer/GrpcServiceStubClassComposer.java b/src/main/java/com/google/api/generator/gapic/composer/GrpcServiceStubClassComposer.java index 8537d1a4a7..e20d679e4f 100644 --- a/src/main/java/com/google/api/generator/gapic/composer/GrpcServiceStubClassComposer.java +++ b/src/main/java/com/google/api/generator/gapic/composer/GrpcServiceStubClassComposer.java @@ -1127,6 +1127,10 @@ private static EnumRefExpr getMethodDescriptorMethodTypeExpr(Method protoMethod) } private static String getProtoRpcFullMethodName(Service protoService, Method protoMethod) { + if (protoMethod.isMixin()) { + return String.format("%s/%s", protoMethod.mixedInApiName(), protoMethod.name()); + } + if (!REROUTE_TO_GRPC_INTERFACE_SERVICE_ALLOWLIST.contains(protoService.protoPakkage()) || !REROUTE_TO_GRPC_INTERFACE_IAM_METHOD_ALLOWLIST.contains(protoMethod.name())) { return String.format( diff --git a/src/main/java/com/google/api/generator/gapic/composer/MockServiceImplClassComposer.java b/src/main/java/com/google/api/generator/gapic/composer/MockServiceImplClassComposer.java index d76ee0bc1c..afc2ceab24 100644 --- a/src/main/java/com/google/api/generator/gapic/composer/MockServiceImplClassComposer.java +++ b/src/main/java/com/google/api/generator/gapic/composer/MockServiceImplClassComposer.java @@ -258,6 +258,7 @@ private static MethodDefinition createResetMethod() { private static List createProtoMethodOverrides(Service service) { return service.methods().stream() + .filter(m -> !m.isMixin()) // Mixin APIs will get their own generated mocks. .map(m -> createGenericProtoMethodOverride(m)) .collect(Collectors.toList()); } diff --git a/src/main/java/com/google/api/generator/gapic/composer/ServiceClientTestClassComposer.java b/src/main/java/com/google/api/generator/gapic/composer/ServiceClientTestClassComposer.java index 3b3bd8cddb..954b4d5695 100644 --- a/src/main/java/com/google/api/generator/gapic/composer/ServiceClientTestClassComposer.java +++ b/src/main/java/com/google/api/generator/gapic/composer/ServiceClientTestClassComposer.java @@ -63,6 +63,7 @@ import com.google.api.generator.gapic.model.Field; import com.google.api.generator.gapic.model.GapicClass; import com.google.api.generator.gapic.model.GapicClass.Kind; +import com.google.api.generator.gapic.model.GapicContext; import com.google.api.generator.gapic.model.Message; import com.google.api.generator.gapic.model.Method; import com.google.api.generator.gapic.model.MethodArgument; @@ -82,6 +83,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.UUID; import java.util.concurrent.ExecutionException; import java.util.function.BiFunction; @@ -134,13 +136,20 @@ public static ServiceClientTestClassComposer instance() { } public GapicClass generate( - Service service, Map resourceNames, Map messageTypes) { + Service service, GapicContext context, Map resourceNames) { + Map messageTypes = context.messages(); String pakkage = service.pakkage(); - TypeStore typeStore = createDynamicTypes(service); + TypeStore typeStore = new TypeStore(); + addDynamicTypes(service, typeStore); + for (Service mixinService : context.mixinServices()) { + addDynamicTypes(mixinService, typeStore); + } + String className = ClassNames.getServiceClientTestClassName(service); GapicClass.Kind kind = Kind.MAIN; - Map classMemberVarExprs = createClassMemberVarExprs(service, typeStore); + Map classMemberVarExprs = + createClassMemberVarExprs(service, context, typeStore); ClassDefinition classDef = ClassDefinition.builder() @@ -150,8 +159,7 @@ public GapicClass generate( .setName(className) .setStatements(createClassMemberFieldDecls(classMemberVarExprs)) .setMethods( - createClassMethods( - service, classMemberVarExprs, typeStore, resourceNames, messageTypes)) + createClassMethods(service, context, classMemberVarExprs, typeStore, resourceNames)) .build(); return GapicClass.create(kind, classDef); } @@ -165,13 +173,18 @@ private static List createClassAnnotations() { } private static Map createClassMemberVarExprs( - Service service, TypeStore typeStore) { + Service service, GapicContext context, TypeStore typeStore) { BiFunction varExprFn = (name, type) -> VariableExpr.withVariable(Variable.builder().setName(name).setType(type).build()); Map fields = new LinkedHashMap<>(); fields.put( getMockServiceVarName(service), typeStore.get(ClassNames.getMockServiceClassName(service))); + for (Service mixinService : context.mixinServices()) { + fields.put( + getMockServiceVarName(mixinService), + typeStore.get(ClassNames.getMockServiceClassName(mixinService))); + } fields.put(SERVICE_HELPER_VAR_NAME, FIXED_TYPESTORE.get("MockServiceHelper")); fields.put(CLIENT_VAR_NAME, typeStore.get(ClassNames.getServiceClientClassName(service))); fields.put(CHANNEL_PROVIDER_VAR_NAME, FIXED_TYPESTORE.get("LocalChannelProvider")); @@ -195,21 +208,23 @@ private static List createClassMemberFieldDecls( private static List createClassMethods( Service service, + GapicContext context, Map classMemberVarExprs, TypeStore typeStore, - Map resourceNames, - Map messageTypes) { + Map resourceNames) { List javaMethods = new ArrayList<>(); - javaMethods.addAll(createTestAdminMethods(service, classMemberVarExprs, typeStore)); - javaMethods.addAll( - createTestMethods(service, classMemberVarExprs, resourceNames, messageTypes)); + javaMethods.addAll(createTestAdminMethods(service, context, classMemberVarExprs, typeStore)); + javaMethods.addAll(createTestMethods(service, context, classMemberVarExprs, resourceNames)); return javaMethods; } private static List createTestAdminMethods( - Service service, Map classMemberVarExprs, TypeStore typeStore) { + Service service, + GapicContext context, + Map classMemberVarExprs, + TypeStore typeStore) { List javaMethods = new ArrayList<>(); - javaMethods.add(createStartStaticServerMethod(service, classMemberVarExprs)); + javaMethods.add(createStartStaticServerMethod(service, context, classMemberVarExprs)); javaMethods.add(createStopServerMethod(service, classMemberVarExprs)); javaMethods.add(createSetUpMethod(service, classMemberVarExprs, typeStore)); javaMethods.add(createTearDownMethod(service, classMemberVarExprs)); @@ -217,14 +232,26 @@ private static List createTestAdminMethods( } private static MethodDefinition createStartStaticServerMethod( - Service service, Map classMemberVarExprs) { - VariableExpr mockServiceVarExpr = classMemberVarExprs.get(getMockServiceVarName(service)); + Service service, GapicContext context, Map classMemberVarExprs) { VariableExpr serviceHelperVarExpr = classMemberVarExprs.get(SERVICE_HELPER_VAR_NAME); - Expr initMockServiceExpr = - AssignmentExpr.builder() - .setVariableExpr(mockServiceVarExpr) - .setValueExpr(NewObjectExpr.builder().setType(mockServiceVarExpr.type()).build()) - .build(); + Function serviceToVarExprFn = + s -> classMemberVarExprs.get(getMockServiceVarName(s)); + Function serviceToVarInitExprFn = + s -> { + VariableExpr mockServiceVarExpr = serviceToVarExprFn.apply(s); + return AssignmentExpr.builder() + .setVariableExpr(mockServiceVarExpr) + .setValueExpr(NewObjectExpr.builder().setType(mockServiceVarExpr.type()).build()) + .build(); + }; + List varInitExprs = new ArrayList<>(); + List mockServiceVarExprs = new ArrayList<>(); + varInitExprs.add(serviceToVarInitExprFn.apply(service)); + mockServiceVarExprs.add(serviceToVarExprFn.apply(service)); + for (Service mixinService : context.mixinServices()) { + varInitExprs.add(serviceToVarInitExprFn.apply(mixinService)); + mockServiceVarExprs.add(serviceToVarExprFn.apply(mixinService)); + } MethodInvocationExpr firstArg = MethodInvocationExpr.builder() @@ -242,7 +269,7 @@ private static MethodDefinition createStartStaticServerMethod( .setStaticReferenceType(FIXED_TYPESTORE.get("Arrays")) .setGenerics(Arrays.asList(FIXED_TYPESTORE.get("MockGrpcService").reference())) .setMethodName("asList") - .setArguments(Arrays.asList(mockServiceVarExpr)) + .setArguments(mockServiceVarExprs) .build(); Expr initServiceHelperExpr = @@ -260,6 +287,8 @@ private static MethodDefinition createStartStaticServerMethod( .setExprReferenceExpr(serviceHelperVarExpr) .setMethodName("start") .build(); + varInitExprs.add(initServiceHelperExpr); + varInitExprs.add(startServiceHelperExpr); return MethodDefinition.builder() .setAnnotations(Arrays.asList(AnnotationNode.withType(FIXED_TYPESTORE.get("BeforeClass")))) @@ -268,10 +297,7 @@ private static MethodDefinition createStartStaticServerMethod( .setReturnType(TypeNode.VOID) .setName("startStaticServer") .setBody( - Arrays.asList(initMockServiceExpr, initServiceHelperExpr, startServiceHelperExpr) - .stream() - .map(e -> ExprStatement.withExpr(e)) - .collect(Collectors.toList())) + varInitExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())) .build(); } @@ -412,17 +438,35 @@ private static MethodDefinition createTearDownMethod( private static List createTestMethods( Service service, + GapicContext context, Map classMemberVarExprs, - Map resourceNames, - Map messageTypes) { + Map resourceNames) { + Map messageTypes = context.messages(); List javaMethods = new ArrayList<>(); for (Method method : service.methods()) { + Service matchingService = service; + if (method.isMixin()) { + int dotIndex = method.mixedInApiName().lastIndexOf("."); + String mixinServiceName = method.mixedInApiName().substring(dotIndex + 1); + String mixinServiceProtoPackage = method.mixedInApiName().substring(0, dotIndex); + Optional mixinServiceOpt = + context.mixinServices().stream() + .filter( + s -> + s.name().equals(mixinServiceName) + && s.protoPakkage().equals(mixinServiceProtoPackage)) + .findFirst(); + if (mixinServiceOpt.isPresent()) { + matchingService = mixinServiceOpt.get(); + } + } + // Ignore variants for streaming methods as well. if (method.methodSignatures().isEmpty() || !method.stream().equals(Method.Stream.NONE)) { javaMethods.add( createRpcTestMethod( method, - service, + matchingService, Collections.emptyList(), 0, true, @@ -432,7 +476,7 @@ private static List createTestMethods( javaMethods.add( createRpcExceptionTestMethod( method, - service, + matchingService, Collections.emptyList(), 0, classMemberVarExprs, @@ -443,7 +487,7 @@ private static List createTestMethods( javaMethods.add( createRpcTestMethod( method, - service, + matchingService, method.methodSignatures().get(i), i, false, @@ -453,7 +497,7 @@ private static List createTestMethods( javaMethods.add( createRpcExceptionTestMethod( method, - service, + matchingService, method.methodSignatures().get(i), i, classMemberVarExprs, @@ -1715,15 +1759,13 @@ private static Map createDefaultMethodNamesToTypes() { return javaMethodNameToReturnType; } - private static TypeStore createDynamicTypes(Service service) { - TypeStore typeStore = new TypeStore(); + private static void addDynamicTypes(Service service, TypeStore typeStore) { typeStore.putAll( service.pakkage(), Arrays.asList( ClassNames.getMockServiceClassName(service), ClassNames.getServiceClientClassName(service), ClassNames.getServiceSettingsClassName(service))); - // Pagination types. typeStore.putAll( service.pakkage(), @@ -1733,7 +1775,6 @@ private static TypeStore createDynamicTypes(Service service) { .collect(Collectors.toList()), true, ClassNames.getServiceClientClassName(service)); - return typeStore; } private static TypeNode getOperationCallSettingsType(Method protoMethod) { diff --git a/src/main/java/com/google/api/generator/gapic/model/GapicContext.java b/src/main/java/com/google/api/generator/gapic/model/GapicContext.java index 1ed089c4b5..1ae68af314 100644 --- a/src/main/java/com/google/api/generator/gapic/model/GapicContext.java +++ b/src/main/java/com/google/api/generator/gapic/model/GapicContext.java @@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; @@ -33,6 +34,9 @@ public abstract class GapicContext { public abstract ImmutableList services(); + // Ensures ordering for deterministic tests. + public abstract ImmutableList mixinServices(); + public abstract ImmutableSet helperResourceNames(); @Nullable @@ -46,7 +50,7 @@ public boolean hasServiceYamlProto() { } public static Builder builder() { - return new AutoValue_GapicContext.Builder(); + return new AutoValue_GapicContext.Builder().setMixinServices(Collections.emptyList()); } @AutoValue.Builder @@ -57,6 +61,8 @@ public abstract static class Builder { public abstract Builder setServices(List services); + public abstract Builder setMixinServices(List mixinServices); + public abstract Builder setHelperResourceNames(Set helperResourceNames); public abstract Builder setServiceConfig(GapicServiceConfig serviceConfig); diff --git a/src/main/java/com/google/api/generator/gapic/model/Method.java b/src/main/java/com/google/api/generator/gapic/model/Method.java index 006f324904..02ed4568e3 100644 --- a/src/main/java/com/google/api/generator/gapic/model/Method.java +++ b/src/main/java/com/google/api/generator/gapic/model/Method.java @@ -47,6 +47,10 @@ public enum Stream { @Nullable public abstract String description(); + // Example: google.iam.v1.IAMPolicy. + @Nullable + public abstract String mixedInApiName(); + // TODO(miraleung): May need to change this to MethodArgument, Field, or some new struct // HttpBinding pending dotted reference support. public abstract List httpBindings(); @@ -67,6 +71,12 @@ public boolean hasHttpBindings() { return !httpBindings().isEmpty(); } + public boolean isMixin() { + return mixedInApiName() != null; + } + + public abstract Builder toBuilder(); + public static Builder builder() { return new AutoValue_Method.Builder() .setStream(Stream.NONE) @@ -103,6 +113,8 @@ public abstract static class Builder { public abstract Builder setDescription(String description); + public abstract Builder setMixedInApiName(String mixedInApiName); + public abstract Builder setHttpBindings(List httpBindings); public abstract Builder setMethodSignatures(List> methodSignature); diff --git a/src/main/java/com/google/api/generator/gapic/model/Service.java b/src/main/java/com/google/api/generator/gapic/model/Service.java index 9bf1cbae46..11741f01a6 100644 --- a/src/main/java/com/google/api/generator/gapic/model/Service.java +++ b/src/main/java/com/google/api/generator/gapic/model/Service.java @@ -47,6 +47,8 @@ public boolean hasDescription() { return !Strings.isNullOrEmpty(description()); } + public abstract Builder toBuilder(); + public static Builder builder() { return new AutoValue_Service.Builder().setMethods(ImmutableList.of()); } diff --git a/src/main/java/com/google/api/generator/gapic/protoparser/Parser.java b/src/main/java/com/google/api/generator/gapic/protoparser/Parser.java index 55ef078aa1..795ace8eac 100644 --- a/src/main/java/com/google/api/generator/gapic/protoparser/Parser.java +++ b/src/main/java/com/google/api/generator/gapic/protoparser/Parser.java @@ -35,6 +35,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.base.Strings; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; import com.google.longrunning.OperationInfo; import com.google.longrunning.OperationsProto; @@ -77,8 +78,12 @@ public class Parser { private static final ResourceName WILDCARD_RESOURCE_NAME = ResourceName.createWildcard("*", "com.google.api.wildcard.placeholder"); - private static final Set DUPE_SERVICE_CODEGEN_BLOCKLIST = - new HashSet<>(Arrays.asList("google.longrunning", "google.iam.v1")); + // Mirrors the sanitizer allowlist. + private static final Set MIXIN_ALLOWLIST = + ImmutableSet.of( + "google.iam.v1.IAMPolicy", + "google.longrunning.Operations", + "google.cloud.location.Locations"); // Allow other parsers to access this. protected static final SourceCodeInfoParser SOURCE_CODE_INFO_PARSER = new SourceCodeInfoParser(); @@ -128,6 +133,7 @@ public static GapicContext parse(CodeGeneratorRequest request) { messages = updateResourceNamesInMessages(messages, resourceNames.values()); Set outputArgResourceNames = new HashSet<>(); + List mixinServices = new ArrayList<>(); List services = parseServices( request, @@ -135,7 +141,8 @@ public static GapicContext parse(CodeGeneratorRequest request) { resourceNames, outputArgResourceNames, serviceYamlProtoOpt, - serviceConfigOpt); + serviceConfigOpt, + mixinServices); Preconditions.checkState(!services.isEmpty(), "No services found to generate"); Function typeNameFn = @@ -167,6 +174,7 @@ public static GapicContext parse(CodeGeneratorRequest request) { return GapicContext.builder() .setServices(services) + .setMixinServices(mixinServices) .setMessages(messages) .setResourceNames(resourceNames) .setHelperResourceNames(outputArgResourceNames) @@ -181,7 +189,8 @@ public static List parseServices( Map resourceNames, Set outputArgResourceNames, Optional serviceYamlProtoOpt, - Optional serviceConfigOpt) { + Optional serviceConfigOpt, + List outputMixinServices) { Map fileDescriptors = getFilesToGenerate(request); List services = new ArrayList<>(); @@ -202,26 +211,58 @@ public static List parseServices( outputArgResourceNames)); } - // Prevent codegen for IAM or LRO if there are other services present, since that is an - // indicator that we are not generating a GAPIC client for IAM or LRO. - Set serviceProtoPackages = - services.stream().map(s -> s.protoPakkage()).collect(Collectors.toSet()); - boolean servicesContainBlocklistedApi = false; - for (String blocklistedPackage : DUPE_SERVICE_CODEGEN_BLOCKLIST) { - // It's very unlikely the blocklisted APIs will contain the other, or any other service. - if (serviceProtoPackages.contains(blocklistedPackage) && serviceProtoPackages.size() > 1) { - servicesContainBlocklistedApi = true; - break; + // Prevent codegen for mixed-in services if there are other services present, since that is an + // indicator that we are not generating a GAPIC client for the mixed-in service on its own. + Function serviceFullNameFn = + s -> String.format("%s.%s", s.protoPakkage(), s.name()); + Set blockedCodegenMixinApis = + services.stream() + .filter(s -> MIXIN_ALLOWLIST.contains(serviceFullNameFn.apply(s))) + .map(s -> s) + .collect(Collectors.toSet()); + // It's very unlikely the blocklisted APIs will contain the other, or any other service. + boolean servicesContainBlocklistedApi = !blockedCodegenMixinApis.isEmpty(); + Set mixedInApis = + !serviceYamlProtoOpt.isPresent() + ? Collections.emptySet() + : serviceYamlProtoOpt.get().getApisList().stream() + .filter(a -> MIXIN_ALLOWLIST.contains(a.getName())) + .map(a -> a.getName()) + .collect(Collectors.toSet()); + // Mix-in APIs only if the protos are present and they're defined in the service.yaml file. + Set outputMixinServiceSet = new HashSet<>(); + if (servicesContainBlocklistedApi && !mixedInApis.isEmpty()) { + for (int i = 0; i < services.size(); i++) { + Service originalService = services.get(i); + List updatedMethods = new ArrayList<>(originalService.methods()); + // If mixin APIs are present, add the methods to all other services. + for (Service mixinService : blockedCodegenMixinApis) { + if (!mixedInApis.contains( + String.format("%s.%s", mixinService.protoPakkage(), mixinService.name()))) { + continue; + } + List mixinMethods = new ArrayList<>(mixinService.methods()); + mixinMethods.forEach( + m -> + updatedMethods.add( + m.toBuilder() + .setMixedInApiName(serviceFullNameFn.apply(mixinService)) + .build())); + outputMixinServiceSet.add(mixinService); + } + services.set(i, originalService.toBuilder().setMethods(updatedMethods).build()); } } if (servicesContainBlocklistedApi) { services = services.stream() - .filter(s -> !DUPE_SERVICE_CODEGEN_BLOCKLIST.contains(s.protoPakkage())) + .filter(s -> !MIXIN_ALLOWLIST.contains(serviceFullNameFn.apply(s))) .collect(Collectors.toList()); } + // Use a list to ensure ordering for deterministic tests. + outputMixinServices.addAll(outputMixinServiceSet); return services; } diff --git a/src/test/java/com/google/api/generator/gapic/composer/ServiceClientTestClassComposerTest.java b/src/test/java/com/google/api/generator/gapic/composer/ServiceClientTestClassComposerTest.java index 9e24372177..486ecfffbf 100644 --- a/src/test/java/com/google/api/generator/gapic/composer/ServiceClientTestClassComposerTest.java +++ b/src/test/java/com/google/api/generator/gapic/composer/ServiceClientTestClassComposerTest.java @@ -20,6 +20,7 @@ import com.google.api.generator.engine.writer.JavaWriterVisitor; import com.google.api.generator.gapic.composer.constants.ComposerConstants; import com.google.api.generator.gapic.model.GapicClass; +import com.google.api.generator.gapic.model.GapicContext; import com.google.api.generator.gapic.model.Message; import com.google.api.generator.gapic.model.ResourceName; import com.google.api.generator.gapic.model.Service; @@ -60,10 +61,18 @@ public void generateClientTest_echoClient() { Parser.parseService( echoFileDescriptor, messageTypes, resourceNames, Optional.empty(), outputResourceNames); + GapicContext gapicContext = + GapicContext.builder() + .setServices(services) + .setMessages(messageTypes) + .setResourceNames(resourceNames) + .setHelperResourceNames(outputResourceNames) + .build(); + Service echoProtoService = services.get(0); GapicClass clazz = ServiceClientTestClassComposer.instance() - .generate(echoProtoService, resourceNames, messageTypes); + .generate(echoProtoService, gapicContext, resourceNames); JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); @@ -90,10 +99,18 @@ public void generateClientTest_testingClientResnameWithOnePatternWithNonSlashSep Optional.empty(), outputResourceNames); + GapicContext gapicContext = + GapicContext.builder() + .setServices(services) + .setMessages(messageTypes) + .setResourceNames(resourceNames) + .setHelperResourceNames(outputResourceNames) + .build(); + Service testingProtoService = services.get(0); GapicClass clazz = ServiceClientTestClassComposer.instance() - .generate(testingProtoService, resourceNames, messageTypes); + .generate(testingProtoService, gapicContext, resourceNames); JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); @@ -125,11 +142,19 @@ public void generateClientTest_pubSubPublisherClient() { Optional.empty(), outputResourceNames); + GapicContext gapicContext = + GapicContext.builder() + .setServices(services) + .setMessages(messageTypes) + .setResourceNames(resourceNames) + .setHelperResourceNames(outputResourceNames) + .build(); + Service subscriptionService = services.get(1); assertEquals("Subscriber", subscriptionService.name()); GapicClass clazz = ServiceClientTestClassComposer.instance() - .generate(subscriptionService, resourceNames, messageTypes); + .generate(subscriptionService, gapicContext, resourceNames); JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); @@ -172,10 +197,18 @@ public void generateClientTest_logging() { Optional.empty(), outputResourceNames); + GapicContext gapicContext = + GapicContext.builder() + .setServices(services) + .setMessages(messageTypes) + .setResourceNames(resourceNames) + .setHelperResourceNames(outputResourceNames) + .build(); + Service loggingService = services.get(0); GapicClass clazz = ServiceClientTestClassComposer.instance() - .generate(loggingService, resourceNames, messageTypes); + .generate(loggingService, gapicContext, resourceNames); JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); diff --git a/test/integration/BUILD.bazel b/test/integration/BUILD.bazel index 449f19b19d..debcfb0ac8 100644 --- a/test/integration/BUILD.bazel +++ b/test/integration/BUILD.bazel @@ -19,6 +19,7 @@ package(default_visibility = ["//visibility:public"]) INTEGRATION_TEST_LIBRARIES = [ "asset", "credentials", + "kms", "logging", "redis", "library", # No gRPC service config. @@ -211,3 +212,39 @@ java_gapic_assembly_gradle_pkg( "@com_google_googleapis//google/iam/credentials/v1:credentials_proto", ], ) + +# KMS (for mixins). +java_gapic_library( + name = "kms_java_gapic", + srcs = ["@com_google_googleapis//google/cloud/kms/v1:kms_proto_with_info"], + grpc_service_config = "@com_google_googleapis//google/cloud/kms/v1:cloudkms_grpc_service_config.json", + # For the IAM mixin. + service_yaml = "cloudkms_test_mixins_v1.yaml", + test_deps = [ + "@com_google_googleapis//google/cloud/kms/v1:kms_java_grpc", + "@com_google_googleapis//google/iam/v1:iam_java_grpc", + ], + deps = [ + "@com_google_googleapis//google/cloud/kms/v1:kms_java_proto", + "@com_google_googleapis//google/iam/v1:iam_java_proto", + ], +) + +java_gapic_test( + name = "kms_java_gapic_test_suite", + test_classes = [ + "com.google.cloud.kms.v1.KeyManagementServiceClientTest", + ], + runtime_deps = [":kms_java_gapic_test"], +) + +# Open Source Packages +java_gapic_assembly_gradle_pkg( + name = "google-cloud-kms-v1-java", + deps = [ + ":kms_java_gapic", + "@com_google_googleapis//google/cloud/kms/v1:kms_java_grpc", + "@com_google_googleapis//google/cloud/kms/v1:kms_java_proto", + "@com_google_googleapis//google/cloud/kms/v1:kms_proto", + ], +) diff --git a/test/integration/cloudkms_test_mixins_v1.yaml b/test/integration/cloudkms_test_mixins_v1.yaml new file mode 100644 index 0000000000..9acb41abb9 --- /dev/null +++ b/test/integration/cloudkms_test_mixins_v1.yaml @@ -0,0 +1,76 @@ +type: google.api.Service +config_version: 3 +name: cloudkms.googleapis.com +title: Cloud Key Management Service (KMS) API + +apis: +- name: google.cloud.kms.v1.KeyManagementService +- name: google.iam.v1.IAMPolicy + +types: +- name: google.cloud.kms.v1.LocationMetadata + +documentation: + summary: |- + Manages keys and performs cryptographic operations in a central cloud + service, for direct use by other cloud resources and applications. + rules: + - selector: google.iam.v1.IAMPolicy.GetIamPolicy + description: |- + Gets the access control policy for a resource. Returns an empty policy + if the resource exists and does not have a policy set. + + - selector: google.iam.v1.IAMPolicy.SetIamPolicy + description: |- + Sets the access control policy on the specified resource. Replaces + any existing policy. + + Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` + errors. + + - selector: google.iam.v1.IAMPolicy.TestIamPermissions + description: |- + Returns permissions that a caller has on the specified resource. If the + resource does not exist, this will return an empty set of + permissions, not a `NOT_FOUND` error. + + Note: This operation is designed to be used for building + permission-aware UIs and command-line tools, not for authorization + checking. This operation may "fail open" without warning. + +http: + rules: + - selector: google.iam.v1.IAMPolicy.GetIamPolicy + get: '/v1/{resource=projects/*/locations/*/keyRings/*}:getIamPolicy' + additional_bindings: + - get: '/v1/{resource=projects/*/locations/*/keyRings/*/cryptoKeys/*}:getIamPolicy' + - get: '/v1/{resource=projects/*/locations/*/keyRings/*/importJobs/*}:getIamPolicy' + - selector: google.iam.v1.IAMPolicy.SetIamPolicy + post: '/v1/{resource=projects/*/locations/*/keyRings/*}:setIamPolicy' + body: '*' + additional_bindings: + - post: '/v1/{resource=projects/*/locations/*/keyRings/*/cryptoKeys/*}:setIamPolicy' + body: '*' + - post: '/v1/{resource=projects/*/locations/*/keyRings/*/importJobs/*}:setIamPolicy' + body: '*' + - selector: google.iam.v1.IAMPolicy.TestIamPermissions + post: '/v1/{resource=projects/*/locations/*/keyRings/*}:testIamPermissions' + body: '*' + additional_bindings: + - post: '/v1/{resource=projects/*/locations/*/keyRings/*/cryptoKeys/*}:testIamPermissions' + body: '*' + - post: '/v1/{resource=projects/*/locations/*/keyRings/*/importJobs/*}:testIamPermissions' + body: '*' + +authentication: + rules: + - selector: 'google.cloud.kms.v1.KeyManagementService.*' + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform, + https://www.googleapis.com/auth/cloudkms + - selector: 'google.iam.v1.IAMPolicy.*' + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/cloud-platform, + https://www.googleapis.com/auth/cloudkms diff --git a/test/integration/goldens/kms/BUILD.bazel b/test/integration/goldens/kms/BUILD.bazel new file mode 100644 index 0000000000..0b74aed56b --- /dev/null +++ b/test/integration/goldens/kms/BUILD.bazel @@ -0,0 +1,6 @@ +package(default_visibility = ["//visibility:public"]) + +filegroup( + name = "goldens_files", + srcs = glob(["*.java"]), +) diff --git a/test/integration/goldens/kms/CryptoKeyName.java b/test/integration/goldens/kms/CryptoKeyName.java new file mode 100644 index 0000000000..7beb586a9e --- /dev/null +++ b/test/integration/goldens/kms/CryptoKeyName.java @@ -0,0 +1,261 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.kms.v1; + +import com.google.api.pathtemplate.PathTemplate; +import com.google.api.resourcenames.ResourceName; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +@Generated("by gapic-generator-java") +public class CryptoKeyName implements ResourceName { + private static final PathTemplate PROJECT_LOCATION_KEY_RING_CRYPTO_KEY = + PathTemplate.createWithoutUrlEncoding( + "projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}"); + private volatile Map fieldValuesMap; + private final String project; + private final String location; + private final String keyRing; + private final String cryptoKey; + + @Deprecated + protected CryptoKeyName() { + project = null; + location = null; + keyRing = null; + cryptoKey = null; + } + + private CryptoKeyName(Builder builder) { + project = Preconditions.checkNotNull(builder.getProject()); + location = Preconditions.checkNotNull(builder.getLocation()); + keyRing = Preconditions.checkNotNull(builder.getKeyRing()); + cryptoKey = Preconditions.checkNotNull(builder.getCryptoKey()); + } + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public String getKeyRing() { + return keyRing; + } + + public String getCryptoKey() { + return cryptoKey; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder(this); + } + + public static CryptoKeyName of( + String project, String location, String keyRing, String cryptoKey) { + return newBuilder() + .setProject(project) + .setLocation(location) + .setKeyRing(keyRing) + .setCryptoKey(cryptoKey) + .build(); + } + + public static String format(String project, String location, String keyRing, String cryptoKey) { + return newBuilder() + .setProject(project) + .setLocation(location) + .setKeyRing(keyRing) + .setCryptoKey(cryptoKey) + .build() + .toString(); + } + + public static CryptoKeyName parse(String formattedString) { + if (formattedString.isEmpty()) { + return null; + } + Map matchMap = + PROJECT_LOCATION_KEY_RING_CRYPTO_KEY.validatedMatch( + formattedString, "CryptoKeyName.parse: formattedString not in valid format"); + return of( + matchMap.get("project"), + matchMap.get("location"), + matchMap.get("key_ring"), + matchMap.get("crypto_key")); + } + + public static List parseList(List formattedStrings) { + List list = new ArrayList<>(formattedStrings.size()); + for (String formattedString : formattedStrings) { + list.add(parse(formattedString)); + } + return list; + } + + public static List toStringList(List values) { + List list = new ArrayList<>(values.size()); + for (CryptoKeyName value : values) { + if (value == null) { + list.add(""); + } else { + list.add(value.toString()); + } + } + return list; + } + + public static boolean isParsableFrom(String formattedString) { + return PROJECT_LOCATION_KEY_RING_CRYPTO_KEY.matches(formattedString); + } + + @Override + public Map getFieldValuesMap() { + if (fieldValuesMap == null) { + synchronized (this) { + if (fieldValuesMap == null) { + ImmutableMap.Builder fieldMapBuilder = ImmutableMap.builder(); + if (project != null) { + fieldMapBuilder.put("project", project); + } + if (location != null) { + fieldMapBuilder.put("location", location); + } + if (keyRing != null) { + fieldMapBuilder.put("key_ring", keyRing); + } + if (cryptoKey != null) { + fieldMapBuilder.put("crypto_key", cryptoKey); + } + fieldValuesMap = fieldMapBuilder.build(); + } + } + } + return fieldValuesMap; + } + + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return PROJECT_LOCATION_KEY_RING_CRYPTO_KEY.instantiate( + "project", project, "location", location, "key_ring", keyRing, "crypto_key", cryptoKey); + } + + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + if (o != null || getClass() == o.getClass()) { + CryptoKeyName that = ((CryptoKeyName) o); + return Objects.equals(this.project, that.project) + && Objects.equals(this.location, that.location) + && Objects.equals(this.keyRing, that.keyRing) + && Objects.equals(this.cryptoKey, that.cryptoKey); + } + return false; + } + + @Override + public int hashCode() { + int h = 1; + h *= 1000003; + h ^= Objects.hashCode(project); + h *= 1000003; + h ^= Objects.hashCode(location); + h *= 1000003; + h ^= Objects.hashCode(keyRing); + h *= 1000003; + h ^= Objects.hashCode(cryptoKey); + return h; + } + + /** + * Builder for + * projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}. + */ + public static class Builder { + private String project; + private String location; + private String keyRing; + private String cryptoKey; + + protected Builder() {} + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public String getKeyRing() { + return keyRing; + } + + public String getCryptoKey() { + return cryptoKey; + } + + public Builder setProject(String project) { + this.project = project; + return this; + } + + public Builder setLocation(String location) { + this.location = location; + return this; + } + + public Builder setKeyRing(String keyRing) { + this.keyRing = keyRing; + return this; + } + + public Builder setCryptoKey(String cryptoKey) { + this.cryptoKey = cryptoKey; + return this; + } + + private Builder(CryptoKeyName cryptoKeyName) { + project = cryptoKeyName.project; + location = cryptoKeyName.location; + keyRing = cryptoKeyName.keyRing; + cryptoKey = cryptoKeyName.cryptoKey; + } + + public CryptoKeyName build() { + return new CryptoKeyName(this); + } + } +} diff --git a/test/integration/goldens/kms/CryptoKeyVersionName.java b/test/integration/goldens/kms/CryptoKeyVersionName.java new file mode 100644 index 0000000000..0412f02567 --- /dev/null +++ b/test/integration/goldens/kms/CryptoKeyVersionName.java @@ -0,0 +1,298 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.kms.v1; + +import com.google.api.pathtemplate.PathTemplate; +import com.google.api.resourcenames.ResourceName; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +@Generated("by gapic-generator-java") +public class CryptoKeyVersionName implements ResourceName { + private static final PathTemplate PROJECT_LOCATION_KEY_RING_CRYPTO_KEY_CRYPTO_KEY_VERSION = + PathTemplate.createWithoutUrlEncoding( + "projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}"); + private volatile Map fieldValuesMap; + private final String project; + private final String location; + private final String keyRing; + private final String cryptoKey; + private final String cryptoKeyVersion; + + @Deprecated + protected CryptoKeyVersionName() { + project = null; + location = null; + keyRing = null; + cryptoKey = null; + cryptoKeyVersion = null; + } + + private CryptoKeyVersionName(Builder builder) { + project = Preconditions.checkNotNull(builder.getProject()); + location = Preconditions.checkNotNull(builder.getLocation()); + keyRing = Preconditions.checkNotNull(builder.getKeyRing()); + cryptoKey = Preconditions.checkNotNull(builder.getCryptoKey()); + cryptoKeyVersion = Preconditions.checkNotNull(builder.getCryptoKeyVersion()); + } + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public String getKeyRing() { + return keyRing; + } + + public String getCryptoKey() { + return cryptoKey; + } + + public String getCryptoKeyVersion() { + return cryptoKeyVersion; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder(this); + } + + public static CryptoKeyVersionName of( + String project, String location, String keyRing, String cryptoKey, String cryptoKeyVersion) { + return newBuilder() + .setProject(project) + .setLocation(location) + .setKeyRing(keyRing) + .setCryptoKey(cryptoKey) + .setCryptoKeyVersion(cryptoKeyVersion) + .build(); + } + + public static String format( + String project, String location, String keyRing, String cryptoKey, String cryptoKeyVersion) { + return newBuilder() + .setProject(project) + .setLocation(location) + .setKeyRing(keyRing) + .setCryptoKey(cryptoKey) + .setCryptoKeyVersion(cryptoKeyVersion) + .build() + .toString(); + } + + public static CryptoKeyVersionName parse(String formattedString) { + if (formattedString.isEmpty()) { + return null; + } + Map matchMap = + PROJECT_LOCATION_KEY_RING_CRYPTO_KEY_CRYPTO_KEY_VERSION.validatedMatch( + formattedString, "CryptoKeyVersionName.parse: formattedString not in valid format"); + return of( + matchMap.get("project"), + matchMap.get("location"), + matchMap.get("key_ring"), + matchMap.get("crypto_key"), + matchMap.get("crypto_key_version")); + } + + public static List parseList(List formattedStrings) { + List list = new ArrayList<>(formattedStrings.size()); + for (String formattedString : formattedStrings) { + list.add(parse(formattedString)); + } + return list; + } + + public static List toStringList(List values) { + List list = new ArrayList<>(values.size()); + for (CryptoKeyVersionName value : values) { + if (value == null) { + list.add(""); + } else { + list.add(value.toString()); + } + } + return list; + } + + public static boolean isParsableFrom(String formattedString) { + return PROJECT_LOCATION_KEY_RING_CRYPTO_KEY_CRYPTO_KEY_VERSION.matches(formattedString); + } + + @Override + public Map getFieldValuesMap() { + if (fieldValuesMap == null) { + synchronized (this) { + if (fieldValuesMap == null) { + ImmutableMap.Builder fieldMapBuilder = ImmutableMap.builder(); + if (project != null) { + fieldMapBuilder.put("project", project); + } + if (location != null) { + fieldMapBuilder.put("location", location); + } + if (keyRing != null) { + fieldMapBuilder.put("key_ring", keyRing); + } + if (cryptoKey != null) { + fieldMapBuilder.put("crypto_key", cryptoKey); + } + if (cryptoKeyVersion != null) { + fieldMapBuilder.put("crypto_key_version", cryptoKeyVersion); + } + fieldValuesMap = fieldMapBuilder.build(); + } + } + } + return fieldValuesMap; + } + + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return PROJECT_LOCATION_KEY_RING_CRYPTO_KEY_CRYPTO_KEY_VERSION.instantiate( + "project", + project, + "location", + location, + "key_ring", + keyRing, + "crypto_key", + cryptoKey, + "crypto_key_version", + cryptoKeyVersion); + } + + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + if (o != null || getClass() == o.getClass()) { + CryptoKeyVersionName that = ((CryptoKeyVersionName) o); + return Objects.equals(this.project, that.project) + && Objects.equals(this.location, that.location) + && Objects.equals(this.keyRing, that.keyRing) + && Objects.equals(this.cryptoKey, that.cryptoKey) + && Objects.equals(this.cryptoKeyVersion, that.cryptoKeyVersion); + } + return false; + } + + @Override + public int hashCode() { + int h = 1; + h *= 1000003; + h ^= Objects.hashCode(project); + h *= 1000003; + h ^= Objects.hashCode(location); + h *= 1000003; + h ^= Objects.hashCode(keyRing); + h *= 1000003; + h ^= Objects.hashCode(cryptoKey); + h *= 1000003; + h ^= Objects.hashCode(cryptoKeyVersion); + return h; + } + + /** + * Builder for + * projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}. + */ + public static class Builder { + private String project; + private String location; + private String keyRing; + private String cryptoKey; + private String cryptoKeyVersion; + + protected Builder() {} + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public String getKeyRing() { + return keyRing; + } + + public String getCryptoKey() { + return cryptoKey; + } + + public String getCryptoKeyVersion() { + return cryptoKeyVersion; + } + + public Builder setProject(String project) { + this.project = project; + return this; + } + + public Builder setLocation(String location) { + this.location = location; + return this; + } + + public Builder setKeyRing(String keyRing) { + this.keyRing = keyRing; + return this; + } + + public Builder setCryptoKey(String cryptoKey) { + this.cryptoKey = cryptoKey; + return this; + } + + public Builder setCryptoKeyVersion(String cryptoKeyVersion) { + this.cryptoKeyVersion = cryptoKeyVersion; + return this; + } + + private Builder(CryptoKeyVersionName cryptoKeyVersionName) { + project = cryptoKeyVersionName.project; + location = cryptoKeyVersionName.location; + keyRing = cryptoKeyVersionName.keyRing; + cryptoKey = cryptoKeyVersionName.cryptoKey; + cryptoKeyVersion = cryptoKeyVersionName.cryptoKeyVersion; + } + + public CryptoKeyVersionName build() { + return new CryptoKeyVersionName(this); + } + } +} diff --git a/test/integration/goldens/kms/GrpcKeyManagementServiceCallableFactory.java b/test/integration/goldens/kms/GrpcKeyManagementServiceCallableFactory.java new file mode 100644 index 0000000000..890b25e32e --- /dev/null +++ b/test/integration/goldens/kms/GrpcKeyManagementServiceCallableFactory.java @@ -0,0 +1,113 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.kms.v1.stub; + +import com.google.api.gax.grpc.GrpcCallSettings; +import com.google.api.gax.grpc.GrpcCallableFactory; +import com.google.api.gax.grpc.GrpcStubCallableFactory; +import com.google.api.gax.rpc.BatchingCallSettings; +import com.google.api.gax.rpc.BidiStreamingCallable; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.ClientStreamingCallable; +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.StreamingCallSettings; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.longrunning.Operation; +import com.google.longrunning.stub.OperationsStub; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * gRPC callable factory implementation for the KeyManagementService service API. + * + *

This class is for advanced usage. + */ +@Generated("by gapic-generator-java") +public class GrpcKeyManagementServiceCallableFactory implements GrpcStubCallableFactory { + + @Override + public UnaryCallable createUnaryCallable( + GrpcCallSettings grpcCallSettings, + UnaryCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createUnaryCallable(grpcCallSettings, callSettings, clientContext); + } + + @Override + public + UnaryCallable createPagedCallable( + GrpcCallSettings grpcCallSettings, + PagedCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createPagedCallable(grpcCallSettings, callSettings, clientContext); + } + + @Override + public UnaryCallable createBatchingCallable( + GrpcCallSettings grpcCallSettings, + BatchingCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createBatchingCallable( + grpcCallSettings, callSettings, clientContext); + } + + @Override + public + OperationCallable createOperationCallable( + GrpcCallSettings grpcCallSettings, + OperationCallSettings callSettings, + ClientContext clientContext, + OperationsStub operationsStub) { + return GrpcCallableFactory.createOperationCallable( + grpcCallSettings, callSettings, clientContext, operationsStub); + } + + @Override + public + BidiStreamingCallable createBidiStreamingCallable( + GrpcCallSettings grpcCallSettings, + StreamingCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createBidiStreamingCallable( + grpcCallSettings, callSettings, clientContext); + } + + @Override + public + ServerStreamingCallable createServerStreamingCallable( + GrpcCallSettings grpcCallSettings, + ServerStreamingCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createServerStreamingCallable( + grpcCallSettings, callSettings, clientContext); + } + + @Override + public + ClientStreamingCallable createClientStreamingCallable( + GrpcCallSettings grpcCallSettings, + StreamingCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createClientStreamingCallable( + grpcCallSettings, callSettings, clientContext); + } +} diff --git a/test/integration/goldens/kms/GrpcKeyManagementServiceStub.java b/test/integration/goldens/kms/GrpcKeyManagementServiceStub.java new file mode 100644 index 0000000000..19bac47baf --- /dev/null +++ b/test/integration/goldens/kms/GrpcKeyManagementServiceStub.java @@ -0,0 +1,1100 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.kms.v1.stub; + +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListCryptoKeyVersionsPagedResponse; +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListCryptoKeysPagedResponse; +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListImportJobsPagedResponse; +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListKeyRingsPagedResponse; + +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.core.BackgroundResourceAggregation; +import com.google.api.gax.grpc.GrpcCallSettings; +import com.google.api.gax.grpc.GrpcStubCallableFactory; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.RequestParamsExtractor; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.cloud.kms.v1.AsymmetricDecryptRequest; +import com.google.cloud.kms.v1.AsymmetricDecryptResponse; +import com.google.cloud.kms.v1.AsymmetricSignRequest; +import com.google.cloud.kms.v1.AsymmetricSignResponse; +import com.google.cloud.kms.v1.CreateCryptoKeyRequest; +import com.google.cloud.kms.v1.CreateCryptoKeyVersionRequest; +import com.google.cloud.kms.v1.CreateImportJobRequest; +import com.google.cloud.kms.v1.CreateKeyRingRequest; +import com.google.cloud.kms.v1.CryptoKey; +import com.google.cloud.kms.v1.CryptoKeyVersion; +import com.google.cloud.kms.v1.DecryptRequest; +import com.google.cloud.kms.v1.DecryptResponse; +import com.google.cloud.kms.v1.DestroyCryptoKeyVersionRequest; +import com.google.cloud.kms.v1.EncryptRequest; +import com.google.cloud.kms.v1.EncryptResponse; +import com.google.cloud.kms.v1.GetCryptoKeyRequest; +import com.google.cloud.kms.v1.GetCryptoKeyVersionRequest; +import com.google.cloud.kms.v1.GetImportJobRequest; +import com.google.cloud.kms.v1.GetKeyRingRequest; +import com.google.cloud.kms.v1.GetPublicKeyRequest; +import com.google.cloud.kms.v1.ImportCryptoKeyVersionRequest; +import com.google.cloud.kms.v1.ImportJob; +import com.google.cloud.kms.v1.KeyRing; +import com.google.cloud.kms.v1.ListCryptoKeyVersionsRequest; +import com.google.cloud.kms.v1.ListCryptoKeyVersionsResponse; +import com.google.cloud.kms.v1.ListCryptoKeysRequest; +import com.google.cloud.kms.v1.ListCryptoKeysResponse; +import com.google.cloud.kms.v1.ListImportJobsRequest; +import com.google.cloud.kms.v1.ListImportJobsResponse; +import com.google.cloud.kms.v1.ListKeyRingsRequest; +import com.google.cloud.kms.v1.ListKeyRingsResponse; +import com.google.cloud.kms.v1.PublicKey; +import com.google.cloud.kms.v1.RestoreCryptoKeyVersionRequest; +import com.google.cloud.kms.v1.UpdateCryptoKeyPrimaryVersionRequest; +import com.google.cloud.kms.v1.UpdateCryptoKeyRequest; +import com.google.cloud.kms.v1.UpdateCryptoKeyVersionRequest; +import com.google.common.collect.ImmutableMap; +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.longrunning.stub.GrpcOperationsStub; +import io.grpc.MethodDescriptor; +import io.grpc.protobuf.ProtoUtils; +import java.io.IOException; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * gRPC stub implementation for the KeyManagementService service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@Generated("by gapic-generator-java") +public class GrpcKeyManagementServiceStub extends KeyManagementServiceStub { + private static final MethodDescriptor + listKeyRingsMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/ListKeyRings") + .setRequestMarshaller(ProtoUtils.marshaller(ListKeyRingsRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(ListKeyRingsResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + listCryptoKeysMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/ListCryptoKeys") + .setRequestMarshaller( + ProtoUtils.marshaller(ListCryptoKeysRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(ListCryptoKeysResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + listCryptoKeyVersionsMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/ListCryptoKeyVersions") + .setRequestMarshaller( + ProtoUtils.marshaller(ListCryptoKeyVersionsRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(ListCryptoKeyVersionsResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + listImportJobsMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/ListImportJobs") + .setRequestMarshaller( + ProtoUtils.marshaller(ListImportJobsRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(ListImportJobsResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor getKeyRingMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/GetKeyRing") + .setRequestMarshaller(ProtoUtils.marshaller(GetKeyRingRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(KeyRing.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + getCryptoKeyMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/GetCryptoKey") + .setRequestMarshaller(ProtoUtils.marshaller(GetCryptoKeyRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(CryptoKey.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + getCryptoKeyVersionMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/GetCryptoKeyVersion") + .setRequestMarshaller( + ProtoUtils.marshaller(GetCryptoKeyVersionRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(CryptoKeyVersion.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + getPublicKeyMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/GetPublicKey") + .setRequestMarshaller(ProtoUtils.marshaller(GetPublicKeyRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(PublicKey.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + getImportJobMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/GetImportJob") + .setRequestMarshaller(ProtoUtils.marshaller(GetImportJobRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(ImportJob.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + createKeyRingMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/CreateKeyRing") + .setRequestMarshaller( + ProtoUtils.marshaller(CreateKeyRingRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(KeyRing.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + createCryptoKeyMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/CreateCryptoKey") + .setRequestMarshaller( + ProtoUtils.marshaller(CreateCryptoKeyRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(CryptoKey.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + createCryptoKeyVersionMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/CreateCryptoKeyVersion") + .setRequestMarshaller( + ProtoUtils.marshaller(CreateCryptoKeyVersionRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(CryptoKeyVersion.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + importCryptoKeyVersionMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/ImportCryptoKeyVersion") + .setRequestMarshaller( + ProtoUtils.marshaller(ImportCryptoKeyVersionRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(CryptoKeyVersion.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + createImportJobMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/CreateImportJob") + .setRequestMarshaller( + ProtoUtils.marshaller(CreateImportJobRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(ImportJob.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + updateCryptoKeyMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/UpdateCryptoKey") + .setRequestMarshaller( + ProtoUtils.marshaller(UpdateCryptoKeyRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(CryptoKey.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + updateCryptoKeyVersionMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/UpdateCryptoKeyVersion") + .setRequestMarshaller( + ProtoUtils.marshaller(UpdateCryptoKeyVersionRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(CryptoKeyVersion.getDefaultInstance())) + .build(); + + private static final MethodDescriptor encryptMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/Encrypt") + .setRequestMarshaller(ProtoUtils.marshaller(EncryptRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(EncryptResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor decryptMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/Decrypt") + .setRequestMarshaller(ProtoUtils.marshaller(DecryptRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(DecryptResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + asymmetricSignMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/AsymmetricSign") + .setRequestMarshaller( + ProtoUtils.marshaller(AsymmetricSignRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(AsymmetricSignResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + asymmetricDecryptMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/AsymmetricDecrypt") + .setRequestMarshaller( + ProtoUtils.marshaller(AsymmetricDecryptRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(AsymmetricDecryptResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + updateCryptoKeyPrimaryVersionMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName( + "google.cloud.kms.v1.KeyManagementService/UpdateCryptoKeyPrimaryVersion") + .setRequestMarshaller( + ProtoUtils.marshaller(UpdateCryptoKeyPrimaryVersionRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(CryptoKey.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + destroyCryptoKeyVersionMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/DestroyCryptoKeyVersion") + .setRequestMarshaller( + ProtoUtils.marshaller(DestroyCryptoKeyVersionRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(CryptoKeyVersion.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + restoreCryptoKeyVersionMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.kms.v1.KeyManagementService/RestoreCryptoKeyVersion") + .setRequestMarshaller( + ProtoUtils.marshaller(RestoreCryptoKeyVersionRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(CryptoKeyVersion.getDefaultInstance())) + .build(); + + private static final MethodDescriptor setIamPolicyMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.iam.v1.IAMPolicy/SetIamPolicy") + .setRequestMarshaller(ProtoUtils.marshaller(SetIamPolicyRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Policy.getDefaultInstance())) + .build(); + + private static final MethodDescriptor getIamPolicyMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.iam.v1.IAMPolicy/GetIamPolicy") + .setRequestMarshaller(ProtoUtils.marshaller(GetIamPolicyRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(Policy.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + testIamPermissionsMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.iam.v1.IAMPolicy/TestIamPermissions") + .setRequestMarshaller( + ProtoUtils.marshaller(TestIamPermissionsRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(TestIamPermissionsResponse.getDefaultInstance())) + .build(); + + private final UnaryCallable listKeyRingsCallable; + private final UnaryCallable + listKeyRingsPagedCallable; + private final UnaryCallable listCryptoKeysCallable; + private final UnaryCallable + listCryptoKeysPagedCallable; + private final UnaryCallable + listCryptoKeyVersionsCallable; + private final UnaryCallable + listCryptoKeyVersionsPagedCallable; + private final UnaryCallable listImportJobsCallable; + private final UnaryCallable + listImportJobsPagedCallable; + private final UnaryCallable getKeyRingCallable; + private final UnaryCallable getCryptoKeyCallable; + private final UnaryCallable + getCryptoKeyVersionCallable; + private final UnaryCallable getPublicKeyCallable; + private final UnaryCallable getImportJobCallable; + private final UnaryCallable createKeyRingCallable; + private final UnaryCallable createCryptoKeyCallable; + private final UnaryCallable + createCryptoKeyVersionCallable; + private final UnaryCallable + importCryptoKeyVersionCallable; + private final UnaryCallable createImportJobCallable; + private final UnaryCallable updateCryptoKeyCallable; + private final UnaryCallable + updateCryptoKeyVersionCallable; + private final UnaryCallable encryptCallable; + private final UnaryCallable decryptCallable; + private final UnaryCallable asymmetricSignCallable; + private final UnaryCallable + asymmetricDecryptCallable; + private final UnaryCallable + updateCryptoKeyPrimaryVersionCallable; + private final UnaryCallable + destroyCryptoKeyVersionCallable; + private final UnaryCallable + restoreCryptoKeyVersionCallable; + private final UnaryCallable setIamPolicyCallable; + private final UnaryCallable getIamPolicyCallable; + private final UnaryCallable + testIamPermissionsCallable; + + private final BackgroundResource backgroundResources; + private final GrpcOperationsStub operationsStub; + private final GrpcStubCallableFactory callableFactory; + + public static final GrpcKeyManagementServiceStub create(KeyManagementServiceStubSettings settings) + throws IOException { + return new GrpcKeyManagementServiceStub(settings, ClientContext.create(settings)); + } + + public static final GrpcKeyManagementServiceStub create(ClientContext clientContext) + throws IOException { + return new GrpcKeyManagementServiceStub( + KeyManagementServiceStubSettings.newBuilder().build(), clientContext); + } + + public static final GrpcKeyManagementServiceStub create( + ClientContext clientContext, GrpcStubCallableFactory callableFactory) throws IOException { + return new GrpcKeyManagementServiceStub( + KeyManagementServiceStubSettings.newBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of GrpcKeyManagementServiceStub, 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 GrpcKeyManagementServiceStub( + KeyManagementServiceStubSettings settings, ClientContext clientContext) throws IOException { + this(settings, clientContext, new GrpcKeyManagementServiceCallableFactory()); + } + + /** + * Constructs an instance of GrpcKeyManagementServiceStub, 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 GrpcKeyManagementServiceStub( + KeyManagementServiceStubSettings settings, + ClientContext clientContext, + GrpcStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + this.operationsStub = GrpcOperationsStub.create(clientContext, callableFactory); + + GrpcCallSettings listKeyRingsTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(listKeyRingsMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(ListKeyRingsRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("parent", String.valueOf(request.getParent())); + return params.build(); + } + }) + .build(); + GrpcCallSettings + listCryptoKeysTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(listCryptoKeysMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(ListCryptoKeysRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("parent", String.valueOf(request.getParent())); + return params.build(); + } + }) + .build(); + GrpcCallSettings + listCryptoKeyVersionsTransportSettings = + GrpcCallSettings + .newBuilder() + .setMethodDescriptor(listCryptoKeyVersionsMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(ListCryptoKeyVersionsRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("parent", String.valueOf(request.getParent())); + return params.build(); + } + }) + .build(); + GrpcCallSettings + listImportJobsTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(listImportJobsMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(ListImportJobsRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("parent", String.valueOf(request.getParent())); + return params.build(); + } + }) + .build(); + GrpcCallSettings getKeyRingTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(getKeyRingMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(GetKeyRingRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("name", String.valueOf(request.getName())); + return params.build(); + } + }) + .build(); + GrpcCallSettings getCryptoKeyTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(getCryptoKeyMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(GetCryptoKeyRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("name", String.valueOf(request.getName())); + return params.build(); + } + }) + .build(); + GrpcCallSettings + getCryptoKeyVersionTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(getCryptoKeyVersionMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(GetCryptoKeyVersionRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("name", String.valueOf(request.getName())); + return params.build(); + } + }) + .build(); + GrpcCallSettings getPublicKeyTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(getPublicKeyMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(GetPublicKeyRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("name", String.valueOf(request.getName())); + return params.build(); + } + }) + .build(); + GrpcCallSettings getImportJobTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(getImportJobMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(GetImportJobRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("name", String.valueOf(request.getName())); + return params.build(); + } + }) + .build(); + GrpcCallSettings createKeyRingTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(createKeyRingMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(CreateKeyRingRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("parent", String.valueOf(request.getParent())); + return params.build(); + } + }) + .build(); + GrpcCallSettings createCryptoKeyTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(createCryptoKeyMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(CreateCryptoKeyRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("parent", String.valueOf(request.getParent())); + return params.build(); + } + }) + .build(); + GrpcCallSettings + createCryptoKeyVersionTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(createCryptoKeyVersionMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(CreateCryptoKeyVersionRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("parent", String.valueOf(request.getParent())); + return params.build(); + } + }) + .build(); + GrpcCallSettings + importCryptoKeyVersionTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(importCryptoKeyVersionMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(ImportCryptoKeyVersionRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("parent", String.valueOf(request.getParent())); + return params.build(); + } + }) + .build(); + GrpcCallSettings createImportJobTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(createImportJobMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(CreateImportJobRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("parent", String.valueOf(request.getParent())); + return params.build(); + } + }) + .build(); + GrpcCallSettings updateCryptoKeyTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(updateCryptoKeyMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(UpdateCryptoKeyRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("crypto_key.name", String.valueOf(request.getCryptoKey().getName())); + return params.build(); + } + }) + .build(); + GrpcCallSettings + updateCryptoKeyVersionTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(updateCryptoKeyVersionMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(UpdateCryptoKeyVersionRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put( + "crypto_key_version.name", + String.valueOf(request.getCryptoKeyVersion().getName())); + return params.build(); + } + }) + .build(); + GrpcCallSettings encryptTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(encryptMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(EncryptRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("name", String.valueOf(request.getName())); + return params.build(); + } + }) + .build(); + GrpcCallSettings decryptTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(decryptMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(DecryptRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("name", String.valueOf(request.getName())); + return params.build(); + } + }) + .build(); + GrpcCallSettings + asymmetricSignTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(asymmetricSignMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(AsymmetricSignRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("name", String.valueOf(request.getName())); + return params.build(); + } + }) + .build(); + GrpcCallSettings + asymmetricDecryptTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(asymmetricDecryptMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(AsymmetricDecryptRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("name", String.valueOf(request.getName())); + return params.build(); + } + }) + .build(); + GrpcCallSettings + updateCryptoKeyPrimaryVersionTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(updateCryptoKeyPrimaryVersionMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract( + UpdateCryptoKeyPrimaryVersionRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("name", String.valueOf(request.getName())); + return params.build(); + } + }) + .build(); + GrpcCallSettings + destroyCryptoKeyVersionTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(destroyCryptoKeyVersionMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(DestroyCryptoKeyVersionRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("name", String.valueOf(request.getName())); + return params.build(); + } + }) + .build(); + GrpcCallSettings + restoreCryptoKeyVersionTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(restoreCryptoKeyVersionMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(RestoreCryptoKeyVersionRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("name", String.valueOf(request.getName())); + return params.build(); + } + }) + .build(); + GrpcCallSettings setIamPolicyTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(setIamPolicyMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(SetIamPolicyRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("resource", String.valueOf(request.getResource())); + return params.build(); + } + }) + .build(); + GrpcCallSettings getIamPolicyTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(getIamPolicyMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(GetIamPolicyRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("resource", String.valueOf(request.getResource())); + return params.build(); + } + }) + .build(); + GrpcCallSettings + testIamPermissionsTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(testIamPermissionsMethodDescriptor) + .setParamsExtractor( + new RequestParamsExtractor() { + @Override + public Map extract(TestIamPermissionsRequest request) { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("resource", String.valueOf(request.getResource())); + return params.build(); + } + }) + .build(); + + this.listKeyRingsCallable = + callableFactory.createUnaryCallable( + listKeyRingsTransportSettings, settings.listKeyRingsSettings(), clientContext); + this.listKeyRingsPagedCallable = + callableFactory.createPagedCallable( + listKeyRingsTransportSettings, settings.listKeyRingsSettings(), clientContext); + this.listCryptoKeysCallable = + callableFactory.createUnaryCallable( + listCryptoKeysTransportSettings, settings.listCryptoKeysSettings(), clientContext); + this.listCryptoKeysPagedCallable = + callableFactory.createPagedCallable( + listCryptoKeysTransportSettings, settings.listCryptoKeysSettings(), clientContext); + this.listCryptoKeyVersionsCallable = + callableFactory.createUnaryCallable( + listCryptoKeyVersionsTransportSettings, + settings.listCryptoKeyVersionsSettings(), + clientContext); + this.listCryptoKeyVersionsPagedCallable = + callableFactory.createPagedCallable( + listCryptoKeyVersionsTransportSettings, + settings.listCryptoKeyVersionsSettings(), + clientContext); + this.listImportJobsCallable = + callableFactory.createUnaryCallable( + listImportJobsTransportSettings, settings.listImportJobsSettings(), clientContext); + this.listImportJobsPagedCallable = + callableFactory.createPagedCallable( + listImportJobsTransportSettings, settings.listImportJobsSettings(), clientContext); + this.getKeyRingCallable = + callableFactory.createUnaryCallable( + getKeyRingTransportSettings, settings.getKeyRingSettings(), clientContext); + this.getCryptoKeyCallable = + callableFactory.createUnaryCallable( + getCryptoKeyTransportSettings, settings.getCryptoKeySettings(), clientContext); + this.getCryptoKeyVersionCallable = + callableFactory.createUnaryCallable( + getCryptoKeyVersionTransportSettings, + settings.getCryptoKeyVersionSettings(), + clientContext); + this.getPublicKeyCallable = + callableFactory.createUnaryCallable( + getPublicKeyTransportSettings, settings.getPublicKeySettings(), clientContext); + this.getImportJobCallable = + callableFactory.createUnaryCallable( + getImportJobTransportSettings, settings.getImportJobSettings(), clientContext); + this.createKeyRingCallable = + callableFactory.createUnaryCallable( + createKeyRingTransportSettings, settings.createKeyRingSettings(), clientContext); + this.createCryptoKeyCallable = + callableFactory.createUnaryCallable( + createCryptoKeyTransportSettings, settings.createCryptoKeySettings(), clientContext); + this.createCryptoKeyVersionCallable = + callableFactory.createUnaryCallable( + createCryptoKeyVersionTransportSettings, + settings.createCryptoKeyVersionSettings(), + clientContext); + this.importCryptoKeyVersionCallable = + callableFactory.createUnaryCallable( + importCryptoKeyVersionTransportSettings, + settings.importCryptoKeyVersionSettings(), + clientContext); + this.createImportJobCallable = + callableFactory.createUnaryCallable( + createImportJobTransportSettings, settings.createImportJobSettings(), clientContext); + this.updateCryptoKeyCallable = + callableFactory.createUnaryCallable( + updateCryptoKeyTransportSettings, settings.updateCryptoKeySettings(), clientContext); + this.updateCryptoKeyVersionCallable = + callableFactory.createUnaryCallable( + updateCryptoKeyVersionTransportSettings, + settings.updateCryptoKeyVersionSettings(), + clientContext); + this.encryptCallable = + callableFactory.createUnaryCallable( + encryptTransportSettings, settings.encryptSettings(), clientContext); + this.decryptCallable = + callableFactory.createUnaryCallable( + decryptTransportSettings, settings.decryptSettings(), clientContext); + this.asymmetricSignCallable = + callableFactory.createUnaryCallable( + asymmetricSignTransportSettings, settings.asymmetricSignSettings(), clientContext); + this.asymmetricDecryptCallable = + callableFactory.createUnaryCallable( + asymmetricDecryptTransportSettings, + settings.asymmetricDecryptSettings(), + clientContext); + this.updateCryptoKeyPrimaryVersionCallable = + callableFactory.createUnaryCallable( + updateCryptoKeyPrimaryVersionTransportSettings, + settings.updateCryptoKeyPrimaryVersionSettings(), + clientContext); + this.destroyCryptoKeyVersionCallable = + callableFactory.createUnaryCallable( + destroyCryptoKeyVersionTransportSettings, + settings.destroyCryptoKeyVersionSettings(), + clientContext); + this.restoreCryptoKeyVersionCallable = + callableFactory.createUnaryCallable( + restoreCryptoKeyVersionTransportSettings, + settings.restoreCryptoKeyVersionSettings(), + clientContext); + 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.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + public GrpcOperationsStub getOperationsStub() { + return operationsStub; + } + + @Override + public UnaryCallable listKeyRingsCallable() { + return listKeyRingsCallable; + } + + @Override + public UnaryCallable listKeyRingsPagedCallable() { + return listKeyRingsPagedCallable; + } + + @Override + public UnaryCallable listCryptoKeysCallable() { + return listCryptoKeysCallable; + } + + @Override + public UnaryCallable + listCryptoKeysPagedCallable() { + return listCryptoKeysPagedCallable; + } + + @Override + public UnaryCallable + listCryptoKeyVersionsCallable() { + return listCryptoKeyVersionsCallable; + } + + @Override + public UnaryCallable + listCryptoKeyVersionsPagedCallable() { + return listCryptoKeyVersionsPagedCallable; + } + + @Override + public UnaryCallable listImportJobsCallable() { + return listImportJobsCallable; + } + + @Override + public UnaryCallable + listImportJobsPagedCallable() { + return listImportJobsPagedCallable; + } + + @Override + public UnaryCallable getKeyRingCallable() { + return getKeyRingCallable; + } + + @Override + public UnaryCallable getCryptoKeyCallable() { + return getCryptoKeyCallable; + } + + @Override + public UnaryCallable getCryptoKeyVersionCallable() { + return getCryptoKeyVersionCallable; + } + + @Override + public UnaryCallable getPublicKeyCallable() { + return getPublicKeyCallable; + } + + @Override + public UnaryCallable getImportJobCallable() { + return getImportJobCallable; + } + + @Override + public UnaryCallable createKeyRingCallable() { + return createKeyRingCallable; + } + + @Override + public UnaryCallable createCryptoKeyCallable() { + return createCryptoKeyCallable; + } + + @Override + public UnaryCallable + createCryptoKeyVersionCallable() { + return createCryptoKeyVersionCallable; + } + + @Override + public UnaryCallable + importCryptoKeyVersionCallable() { + return importCryptoKeyVersionCallable; + } + + @Override + public UnaryCallable createImportJobCallable() { + return createImportJobCallable; + } + + @Override + public UnaryCallable updateCryptoKeyCallable() { + return updateCryptoKeyCallable; + } + + @Override + public UnaryCallable + updateCryptoKeyVersionCallable() { + return updateCryptoKeyVersionCallable; + } + + @Override + public UnaryCallable encryptCallable() { + return encryptCallable; + } + + @Override + public UnaryCallable decryptCallable() { + return decryptCallable; + } + + @Override + public UnaryCallable asymmetricSignCallable() { + return asymmetricSignCallable; + } + + @Override + public UnaryCallable + asymmetricDecryptCallable() { + return asymmetricDecryptCallable; + } + + @Override + public UnaryCallable + updateCryptoKeyPrimaryVersionCallable() { + return updateCryptoKeyPrimaryVersionCallable; + } + + @Override + public UnaryCallable + destroyCryptoKeyVersionCallable() { + return destroyCryptoKeyVersionCallable; + } + + @Override + public UnaryCallable + restoreCryptoKeyVersionCallable() { + return restoreCryptoKeyVersionCallable; + } + + @Override + public UnaryCallable setIamPolicyCallable() { + return setIamPolicyCallable; + } + + @Override + public UnaryCallable getIamPolicyCallable() { + return getIamPolicyCallable; + } + + @Override + public UnaryCallable + testIamPermissionsCallable() { + return testIamPermissionsCallable; + } + + @Override + public final void close() { + shutdown(); + } + + @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/test/integration/goldens/kms/ImportJobName.java b/test/integration/goldens/kms/ImportJobName.java new file mode 100644 index 0000000000..37e6c4f184 --- /dev/null +++ b/test/integration/goldens/kms/ImportJobName.java @@ -0,0 +1,261 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.kms.v1; + +import com.google.api.pathtemplate.PathTemplate; +import com.google.api.resourcenames.ResourceName; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +@Generated("by gapic-generator-java") +public class ImportJobName implements ResourceName { + private static final PathTemplate PROJECT_LOCATION_KEY_RING_IMPORT_JOB = + PathTemplate.createWithoutUrlEncoding( + "projects/{project}/locations/{location}/keyRings/{key_ring}/importJobs/{import_job}"); + private volatile Map fieldValuesMap; + private final String project; + private final String location; + private final String keyRing; + private final String importJob; + + @Deprecated + protected ImportJobName() { + project = null; + location = null; + keyRing = null; + importJob = null; + } + + private ImportJobName(Builder builder) { + project = Preconditions.checkNotNull(builder.getProject()); + location = Preconditions.checkNotNull(builder.getLocation()); + keyRing = Preconditions.checkNotNull(builder.getKeyRing()); + importJob = Preconditions.checkNotNull(builder.getImportJob()); + } + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public String getKeyRing() { + return keyRing; + } + + public String getImportJob() { + return importJob; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder(this); + } + + public static ImportJobName of( + String project, String location, String keyRing, String importJob) { + return newBuilder() + .setProject(project) + .setLocation(location) + .setKeyRing(keyRing) + .setImportJob(importJob) + .build(); + } + + public static String format(String project, String location, String keyRing, String importJob) { + return newBuilder() + .setProject(project) + .setLocation(location) + .setKeyRing(keyRing) + .setImportJob(importJob) + .build() + .toString(); + } + + public static ImportJobName parse(String formattedString) { + if (formattedString.isEmpty()) { + return null; + } + Map matchMap = + PROJECT_LOCATION_KEY_RING_IMPORT_JOB.validatedMatch( + formattedString, "ImportJobName.parse: formattedString not in valid format"); + return of( + matchMap.get("project"), + matchMap.get("location"), + matchMap.get("key_ring"), + matchMap.get("import_job")); + } + + public static List parseList(List formattedStrings) { + List list = new ArrayList<>(formattedStrings.size()); + for (String formattedString : formattedStrings) { + list.add(parse(formattedString)); + } + return list; + } + + public static List toStringList(List values) { + List list = new ArrayList<>(values.size()); + for (ImportJobName value : values) { + if (value == null) { + list.add(""); + } else { + list.add(value.toString()); + } + } + return list; + } + + public static boolean isParsableFrom(String formattedString) { + return PROJECT_LOCATION_KEY_RING_IMPORT_JOB.matches(formattedString); + } + + @Override + public Map getFieldValuesMap() { + if (fieldValuesMap == null) { + synchronized (this) { + if (fieldValuesMap == null) { + ImmutableMap.Builder fieldMapBuilder = ImmutableMap.builder(); + if (project != null) { + fieldMapBuilder.put("project", project); + } + if (location != null) { + fieldMapBuilder.put("location", location); + } + if (keyRing != null) { + fieldMapBuilder.put("key_ring", keyRing); + } + if (importJob != null) { + fieldMapBuilder.put("import_job", importJob); + } + fieldValuesMap = fieldMapBuilder.build(); + } + } + } + return fieldValuesMap; + } + + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return PROJECT_LOCATION_KEY_RING_IMPORT_JOB.instantiate( + "project", project, "location", location, "key_ring", keyRing, "import_job", importJob); + } + + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + if (o != null || getClass() == o.getClass()) { + ImportJobName that = ((ImportJobName) o); + return Objects.equals(this.project, that.project) + && Objects.equals(this.location, that.location) + && Objects.equals(this.keyRing, that.keyRing) + && Objects.equals(this.importJob, that.importJob); + } + return false; + } + + @Override + public int hashCode() { + int h = 1; + h *= 1000003; + h ^= Objects.hashCode(project); + h *= 1000003; + h ^= Objects.hashCode(location); + h *= 1000003; + h ^= Objects.hashCode(keyRing); + h *= 1000003; + h ^= Objects.hashCode(importJob); + return h; + } + + /** + * Builder for + * projects/{project}/locations/{location}/keyRings/{key_ring}/importJobs/{import_job}. + */ + public static class Builder { + private String project; + private String location; + private String keyRing; + private String importJob; + + protected Builder() {} + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public String getKeyRing() { + return keyRing; + } + + public String getImportJob() { + return importJob; + } + + public Builder setProject(String project) { + this.project = project; + return this; + } + + public Builder setLocation(String location) { + this.location = location; + return this; + } + + public Builder setKeyRing(String keyRing) { + this.keyRing = keyRing; + return this; + } + + public Builder setImportJob(String importJob) { + this.importJob = importJob; + return this; + } + + private Builder(ImportJobName importJobName) { + project = importJobName.project; + location = importJobName.location; + keyRing = importJobName.keyRing; + importJob = importJobName.importJob; + } + + public ImportJobName build() { + return new ImportJobName(this); + } + } +} diff --git a/test/integration/goldens/kms/KeyManagementServiceClient.java b/test/integration/goldens/kms/KeyManagementServiceClient.java new file mode 100644 index 0000000000..a1580d3b66 --- /dev/null +++ b/test/integration/goldens/kms/KeyManagementServiceClient.java @@ -0,0 +1,3631 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.kms.v1; + +import com.google.api.core.ApiFunction; +import com.google.api.core.ApiFuture; +import com.google.api.core.ApiFutures; +import com.google.api.core.BetaApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.paging.AbstractFixedSizeCollection; +import com.google.api.gax.paging.AbstractPage; +import com.google.api.gax.paging.AbstractPagedListResponse; +import com.google.api.gax.rpc.PageContext; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.api.resourcenames.ResourceName; +import com.google.cloud.kms.v1.stub.KeyManagementServiceStub; +import com.google.cloud.kms.v1.stub.KeyManagementServiceStubSettings; +import com.google.common.util.concurrent.MoreExecutors; +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.ByteString; +import com.google.protobuf.FieldMask; +import java.io.IOException; +import java.util.List; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * Service Description: Google Cloud Key Management Service + * + *

Manages cryptographic keys and operations using those keys. Implements a REST model with the + * following objects: + * + *

    + *
  • [KeyRing][google.cloud.kms.v1.KeyRing] + *
  • [CryptoKey][google.cloud.kms.v1.CryptoKey] + *
  • [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] + *
  • [ImportJob][google.cloud.kms.v1.ImportJob] + *
+ * + *

If you are using manual gRPC libraries, see [Using gRPC with Cloud + * KMS](https://cloud.google.com/kms/docs/grpc). + * + *

This class provides the ability to make remote calls to the backing service through method + * calls that map to API methods. Sample code to get started: + * + *

{@code
+ * try (KeyManagementServiceClient keyManagementServiceClient =
+ *     KeyManagementServiceClient.create()) {
+ *   KeyRingName name = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]");
+ *   KeyRing response = keyManagementServiceClient.getKeyRing(name);
+ * }
+ * }
+ * + *

Note: close() needs to be called on the KeyManagementServiceClient object to clean up + * resources such as threads. In the example above, try-with-resources is used, which automatically + * calls close(). + * + *

The surface of this class includes several types of Java methods for each of the API's + * methods: + * + *

    + *
  1. A "flattened" method. With this type of method, the fields of the request type have been + * converted into function parameters. It may be the case that not all fields are available as + * parameters, and not every API method will have a flattened method entry point. + *
  2. A "request object" method. This type of method only takes one parameter, a request object, + * which must be constructed before the call. Not every API method will have a request object + * method. + *
  3. A "callable" method. This type of method takes no parameters and returns an immutable API + * callable object, which can be used to initiate calls to the service. + *
+ * + *

See the individual methods for example code. + * + *

Many parameters require resource names to be formatted in a particular way. To assist with + * these names, this class includes a format method for each type of name, and additionally a parse + * method to extract the individual identifiers contained within names that are returned. + * + *

This class can be customized by passing in a custom instance of KeyManagementServiceSettings + * to create(). For example: + * + *

To customize credentials: + * + *

{@code
+ * KeyManagementServiceSettings keyManagementServiceSettings =
+ *     KeyManagementServiceSettings.newBuilder()
+ *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
+ *         .build();
+ * KeyManagementServiceClient keyManagementServiceClient =
+ *     KeyManagementServiceClient.create(keyManagementServiceSettings);
+ * }
+ * + *

To customize the endpoint: + * + *

{@code
+ * KeyManagementServiceSettings keyManagementServiceSettings =
+ *     KeyManagementServiceSettings.newBuilder().setEndpoint(myEndpoint).build();
+ * KeyManagementServiceClient keyManagementServiceClient =
+ *     KeyManagementServiceClient.create(keyManagementServiceSettings);
+ * }
+ * + *

Please refer to the GitHub repository's samples for more quickstart code snippets. + */ +@Generated("by gapic-generator-java") +public class KeyManagementServiceClient implements BackgroundResource { + private final KeyManagementServiceSettings settings; + private final KeyManagementServiceStub stub; + + /** Constructs an instance of KeyManagementServiceClient with default settings. */ + public static final KeyManagementServiceClient create() throws IOException { + return create(KeyManagementServiceSettings.newBuilder().build()); + } + + /** + * Constructs an instance of KeyManagementServiceClient, using the given settings. The channels + * are created based on the settings passed in, or defaults for any settings that are not set. + */ + public static final KeyManagementServiceClient create(KeyManagementServiceSettings settings) + throws IOException { + return new KeyManagementServiceClient(settings); + } + + /** + * Constructs an instance of KeyManagementServiceClient, using the given stub for making calls. + * This is for advanced usage - prefer using create(KeyManagementServiceSettings). + */ + @BetaApi("A restructuring of stub classes is planned, so this may break in the future") + public static final KeyManagementServiceClient create(KeyManagementServiceStub stub) { + return new KeyManagementServiceClient(stub); + } + + /** + * Constructs an instance of KeyManagementServiceClient, 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 KeyManagementServiceClient(KeyManagementServiceSettings settings) throws IOException { + this.settings = settings; + this.stub = ((KeyManagementServiceStubSettings) settings.getStubSettings()).createStub(); + } + + @BetaApi("A restructuring of stub classes is planned, so this may break in the future") + protected KeyManagementServiceClient(KeyManagementServiceStub stub) { + this.settings = null; + this.stub = stub; + } + + public final KeyManagementServiceSettings getSettings() { + return settings; + } + + @BetaApi("A restructuring of stub classes is planned, so this may break in the future") + public KeyManagementServiceStub getStub() { + return stub; + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [KeyRings][google.cloud.kms.v1.KeyRing]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
+   *   for (KeyRing element : keyManagementServiceClient.listKeyRings(parent).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ * + * @param parent Required. The resource name of the location associated with the + * [KeyRings][google.cloud.kms.v1.KeyRing], in the format `projects/*/locations/*`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListKeyRingsPagedResponse listKeyRings(LocationName parent) { + ListKeyRingsRequest request = + ListKeyRingsRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .build(); + return listKeyRings(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [KeyRings][google.cloud.kms.v1.KeyRing]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String parent = LocationName.of("[PROJECT]", "[LOCATION]").toString();
+   *   for (KeyRing element : keyManagementServiceClient.listKeyRings(parent).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ * + * @param parent Required. The resource name of the location associated with the + * [KeyRings][google.cloud.kms.v1.KeyRing], in the format `projects/*/locations/*`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListKeyRingsPagedResponse listKeyRings(String parent) { + ListKeyRingsRequest request = ListKeyRingsRequest.newBuilder().setParent(parent).build(); + return listKeyRings(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [KeyRings][google.cloud.kms.v1.KeyRing]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   ListKeyRingsRequest request =
+   *       ListKeyRingsRequest.newBuilder()
+   *           .setParent(LocationName.of("[PROJECT]", "[LOCATION]").toString())
+   *           .setPageSize(883849137)
+   *           .setPageToken("pageToken873572522")
+   *           .setFilter("filter-1274492040")
+   *           .setOrderBy("orderBy-1207110587")
+   *           .build();
+   *   for (KeyRing element : keyManagementServiceClient.listKeyRings(request).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListKeyRingsPagedResponse listKeyRings(ListKeyRingsRequest request) { + return listKeyRingsPagedCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [KeyRings][google.cloud.kms.v1.KeyRing]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   ListKeyRingsRequest request =
+   *       ListKeyRingsRequest.newBuilder()
+   *           .setParent(LocationName.of("[PROJECT]", "[LOCATION]").toString())
+   *           .setPageSize(883849137)
+   *           .setPageToken("pageToken873572522")
+   *           .setFilter("filter-1274492040")
+   *           .setOrderBy("orderBy-1207110587")
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.listKeyRingsPagedCallable().futureCall(request);
+   *   // Do something.
+   *   for (KeyRing element : future.get().iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ */ + public final UnaryCallable + listKeyRingsPagedCallable() { + return stub.listKeyRingsPagedCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [KeyRings][google.cloud.kms.v1.KeyRing]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   while (true) {
+   *     ListKeyRingsResponse response =
+   *         keyManagementServiceClient.listKeyRingsCallable().call(request);
+   *     for (KeyRing element : response.getResponsesList()) {
+   *       // doThingsWith(element);
+   *     }
+   *     String nextPageToken = response.getNextPageToken();
+   *     if (!Strings.isNullOrEmpty(nextPageToken)) {
+   *       request = request.toBuilder().setPageToken(nextPageToken).build();
+   *     } else {
+   *       break;
+   *     }
+   *   }
+   * }
+   * }
+ */ + public final UnaryCallable listKeyRingsCallable() { + return stub.listKeyRingsCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [CryptoKeys][google.cloud.kms.v1.CryptoKey]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   KeyRingName parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]");
+   *   for (CryptoKey element : keyManagementServiceClient.listCryptoKeys(parent).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ * + * @param parent Required. The resource name of the [KeyRing][google.cloud.kms.v1.KeyRing] to + * list, in the format `projects/*/locations/*/keyRings/*`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListCryptoKeysPagedResponse listCryptoKeys(KeyRingName parent) { + ListCryptoKeysRequest request = + ListCryptoKeysRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .build(); + return listCryptoKeys(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [CryptoKeys][google.cloud.kms.v1.CryptoKey]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString();
+   *   for (CryptoKey element : keyManagementServiceClient.listCryptoKeys(parent).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ * + * @param parent Required. The resource name of the [KeyRing][google.cloud.kms.v1.KeyRing] to + * list, in the format `projects/*/locations/*/keyRings/*`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListCryptoKeysPagedResponse listCryptoKeys(String parent) { + ListCryptoKeysRequest request = ListCryptoKeysRequest.newBuilder().setParent(parent).build(); + return listCryptoKeys(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [CryptoKeys][google.cloud.kms.v1.CryptoKey]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   ListCryptoKeysRequest request =
+   *       ListCryptoKeysRequest.newBuilder()
+   *           .setParent(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .setPageSize(883849137)
+   *           .setPageToken("pageToken873572522")
+   *           .setFilter("filter-1274492040")
+   *           .setOrderBy("orderBy-1207110587")
+   *           .build();
+   *   for (CryptoKey element : keyManagementServiceClient.listCryptoKeys(request).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListCryptoKeysPagedResponse listCryptoKeys(ListCryptoKeysRequest request) { + return listCryptoKeysPagedCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [CryptoKeys][google.cloud.kms.v1.CryptoKey]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   ListCryptoKeysRequest request =
+   *       ListCryptoKeysRequest.newBuilder()
+   *           .setParent(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .setPageSize(883849137)
+   *           .setPageToken("pageToken873572522")
+   *           .setFilter("filter-1274492040")
+   *           .setOrderBy("orderBy-1207110587")
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.listCryptoKeysPagedCallable().futureCall(request);
+   *   // Do something.
+   *   for (CryptoKey element : future.get().iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ */ + public final UnaryCallable + listCryptoKeysPagedCallable() { + return stub.listCryptoKeysPagedCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [CryptoKeys][google.cloud.kms.v1.CryptoKey]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   while (true) {
+   *     ListCryptoKeysResponse response =
+   *         keyManagementServiceClient.listCryptoKeysCallable().call(request);
+   *     for (CryptoKey element : response.getResponsesList()) {
+   *       // doThingsWith(element);
+   *     }
+   *     String nextPageToken = response.getNextPageToken();
+   *     if (!Strings.isNullOrEmpty(nextPageToken)) {
+   *       request = request.toBuilder().setPageToken(nextPageToken).build();
+   *     } else {
+   *       break;
+   *     }
+   *   }
+   * }
+   * }
+ */ + public final UnaryCallable + listCryptoKeysCallable() { + return stub.listCryptoKeysCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CryptoKeyName parent =
+   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]");
+   *   for (CryptoKeyVersion element :
+   *       keyManagementServiceClient.listCryptoKeyVersions(parent).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ * + * @param parent Required. The resource name of the [CryptoKey][google.cloud.kms.v1.CryptoKey] to + * list, in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListCryptoKeyVersionsPagedResponse listCryptoKeyVersions(CryptoKeyName parent) { + ListCryptoKeyVersionsRequest request = + ListCryptoKeyVersionsRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .build(); + return listCryptoKeyVersions(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String parent =
+   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]").toString();
+   *   for (CryptoKeyVersion element :
+   *       keyManagementServiceClient.listCryptoKeyVersions(parent).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ * + * @param parent Required. The resource name of the [CryptoKey][google.cloud.kms.v1.CryptoKey] to + * list, in the format `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListCryptoKeyVersionsPagedResponse listCryptoKeyVersions(String parent) { + ListCryptoKeyVersionsRequest request = + ListCryptoKeyVersionsRequest.newBuilder().setParent(parent).build(); + return listCryptoKeyVersions(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   ListCryptoKeyVersionsRequest request =
+   *       ListCryptoKeyVersionsRequest.newBuilder()
+   *           .setParent(
+   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+   *                   .toString())
+   *           .setPageSize(883849137)
+   *           .setPageToken("pageToken873572522")
+   *           .setFilter("filter-1274492040")
+   *           .setOrderBy("orderBy-1207110587")
+   *           .build();
+   *   for (CryptoKeyVersion element :
+   *       keyManagementServiceClient.listCryptoKeyVersions(request).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListCryptoKeyVersionsPagedResponse listCryptoKeyVersions( + ListCryptoKeyVersionsRequest request) { + return listCryptoKeyVersionsPagedCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   ListCryptoKeyVersionsRequest request =
+   *       ListCryptoKeyVersionsRequest.newBuilder()
+   *           .setParent(
+   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+   *                   .toString())
+   *           .setPageSize(883849137)
+   *           .setPageToken("pageToken873572522")
+   *           .setFilter("filter-1274492040")
+   *           .setOrderBy("orderBy-1207110587")
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.listCryptoKeyVersionsPagedCallable().futureCall(request);
+   *   // Do something.
+   *   for (CryptoKeyVersion element : future.get().iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ */ + public final UnaryCallable + listCryptoKeyVersionsPagedCallable() { + return stub.listCryptoKeyVersionsPagedCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   while (true) {
+   *     ListCryptoKeyVersionsResponse response =
+   *         keyManagementServiceClient.listCryptoKeyVersionsCallable().call(request);
+   *     for (CryptoKeyVersion element : response.getResponsesList()) {
+   *       // doThingsWith(element);
+   *     }
+   *     String nextPageToken = response.getNextPageToken();
+   *     if (!Strings.isNullOrEmpty(nextPageToken)) {
+   *       request = request.toBuilder().setPageToken(nextPageToken).build();
+   *     } else {
+   *       break;
+   *     }
+   *   }
+   * }
+   * }
+ */ + public final UnaryCallable + listCryptoKeyVersionsCallable() { + return stub.listCryptoKeyVersionsCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [ImportJobs][google.cloud.kms.v1.ImportJob]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   KeyRingName parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]");
+   *   for (ImportJob element : keyManagementServiceClient.listImportJobs(parent).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ * + * @param parent Required. The resource name of the [KeyRing][google.cloud.kms.v1.KeyRing] to + * list, in the format `projects/*/locations/*/keyRings/*`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListImportJobsPagedResponse listImportJobs(KeyRingName parent) { + ListImportJobsRequest request = + ListImportJobsRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .build(); + return listImportJobs(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [ImportJobs][google.cloud.kms.v1.ImportJob]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString();
+   *   for (ImportJob element : keyManagementServiceClient.listImportJobs(parent).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ * + * @param parent Required. The resource name of the [KeyRing][google.cloud.kms.v1.KeyRing] to + * list, in the format `projects/*/locations/*/keyRings/*`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListImportJobsPagedResponse listImportJobs(String parent) { + ListImportJobsRequest request = ListImportJobsRequest.newBuilder().setParent(parent).build(); + return listImportJobs(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [ImportJobs][google.cloud.kms.v1.ImportJob]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   ListImportJobsRequest request =
+   *       ListImportJobsRequest.newBuilder()
+   *           .setParent(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .setPageSize(883849137)
+   *           .setPageToken("pageToken873572522")
+   *           .setFilter("filter-1274492040")
+   *           .setOrderBy("orderBy-1207110587")
+   *           .build();
+   *   for (ImportJob element : keyManagementServiceClient.listImportJobs(request).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListImportJobsPagedResponse listImportJobs(ListImportJobsRequest request) { + return listImportJobsPagedCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [ImportJobs][google.cloud.kms.v1.ImportJob]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   ListImportJobsRequest request =
+   *       ListImportJobsRequest.newBuilder()
+   *           .setParent(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .setPageSize(883849137)
+   *           .setPageToken("pageToken873572522")
+   *           .setFilter("filter-1274492040")
+   *           .setOrderBy("orderBy-1207110587")
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.listImportJobsPagedCallable().futureCall(request);
+   *   // Do something.
+   *   for (ImportJob element : future.get().iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ */ + public final UnaryCallable + listImportJobsPagedCallable() { + return stub.listImportJobsPagedCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists [ImportJobs][google.cloud.kms.v1.ImportJob]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   while (true) {
+   *     ListImportJobsResponse response =
+   *         keyManagementServiceClient.listImportJobsCallable().call(request);
+   *     for (ImportJob element : response.getResponsesList()) {
+   *       // doThingsWith(element);
+   *     }
+   *     String nextPageToken = response.getNextPageToken();
+   *     if (!Strings.isNullOrEmpty(nextPageToken)) {
+   *       request = request.toBuilder().setPageToken(nextPageToken).build();
+   *     } else {
+   *       break;
+   *     }
+   *   }
+   * }
+   * }
+ */ + public final UnaryCallable + listImportJobsCallable() { + return stub.listImportJobsCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [KeyRing][google.cloud.kms.v1.KeyRing]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   KeyRingName name = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]");
+   *   KeyRing response = keyManagementServiceClient.getKeyRing(name);
+   * }
+   * }
+ * + * @param name Required. The [name][google.cloud.kms.v1.KeyRing.name] of the + * [KeyRing][google.cloud.kms.v1.KeyRing] to get. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final KeyRing getKeyRing(KeyRingName name) { + GetKeyRingRequest request = + GetKeyRingRequest.newBuilder().setName(name == null ? null : name.toString()).build(); + return getKeyRing(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [KeyRing][google.cloud.kms.v1.KeyRing]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String name = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString();
+   *   KeyRing response = keyManagementServiceClient.getKeyRing(name);
+   * }
+   * }
+ * + * @param name Required. The [name][google.cloud.kms.v1.KeyRing.name] of the + * [KeyRing][google.cloud.kms.v1.KeyRing] to get. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final KeyRing getKeyRing(String name) { + GetKeyRingRequest request = GetKeyRingRequest.newBuilder().setName(name).build(); + return getKeyRing(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [KeyRing][google.cloud.kms.v1.KeyRing]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   GetKeyRingRequest request =
+   *       GetKeyRingRequest.newBuilder()
+   *           .setName(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .build();
+   *   KeyRing response = keyManagementServiceClient.getKeyRing(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final KeyRing getKeyRing(GetKeyRingRequest request) { + return getKeyRingCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [KeyRing][google.cloud.kms.v1.KeyRing]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   GetKeyRingRequest request =
+   *       GetKeyRingRequest.newBuilder()
+   *           .setName(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.getKeyRingCallable().futureCall(request);
+   *   // Do something.
+   *   KeyRing response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable getKeyRingCallable() { + return stub.getKeyRingCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [CryptoKey][google.cloud.kms.v1.CryptoKey], as well as its + * [primary][google.cloud.kms.v1.CryptoKey.primary] + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CryptoKeyName name =
+   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]");
+   *   CryptoKey response = keyManagementServiceClient.getCryptoKey(name);
+   * }
+   * }
+ * + * @param name Required. The [name][google.cloud.kms.v1.CryptoKey.name] of the + * [CryptoKey][google.cloud.kms.v1.CryptoKey] to get. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKey getCryptoKey(CryptoKeyName name) { + GetCryptoKeyRequest request = + GetCryptoKeyRequest.newBuilder().setName(name == null ? null : name.toString()).build(); + return getCryptoKey(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [CryptoKey][google.cloud.kms.v1.CryptoKey], as well as its + * [primary][google.cloud.kms.v1.CryptoKey.primary] + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String name =
+   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]").toString();
+   *   CryptoKey response = keyManagementServiceClient.getCryptoKey(name);
+   * }
+   * }
+ * + * @param name Required. The [name][google.cloud.kms.v1.CryptoKey.name] of the + * [CryptoKey][google.cloud.kms.v1.CryptoKey] to get. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKey getCryptoKey(String name) { + GetCryptoKeyRequest request = GetCryptoKeyRequest.newBuilder().setName(name).build(); + return getCryptoKey(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [CryptoKey][google.cloud.kms.v1.CryptoKey], as well as its + * [primary][google.cloud.kms.v1.CryptoKey.primary] + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   GetCryptoKeyRequest request =
+   *       GetCryptoKeyRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+   *                   .toString())
+   *           .build();
+   *   CryptoKey response = keyManagementServiceClient.getCryptoKey(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKey getCryptoKey(GetCryptoKeyRequest request) { + return getCryptoKeyCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [CryptoKey][google.cloud.kms.v1.CryptoKey], as well as its + * [primary][google.cloud.kms.v1.CryptoKey.primary] + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   GetCryptoKeyRequest request =
+   *       GetCryptoKeyRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+   *                   .toString())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.getCryptoKeyCallable().futureCall(request);
+   *   // Do something.
+   *   CryptoKey response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable getCryptoKeyCallable() { + return stub.getCryptoKeyCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CryptoKeyVersionName name =
+   *       CryptoKeyVersionName.of(
+   *           "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]");
+   *   CryptoKeyVersion response = keyManagementServiceClient.getCryptoKeyVersion(name);
+   * }
+   * }
+ * + * @param name Required. The [name][google.cloud.kms.v1.CryptoKeyVersion.name] of the + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to get. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKeyVersion getCryptoKeyVersion(CryptoKeyVersionName name) { + GetCryptoKeyVersionRequest request = + GetCryptoKeyVersionRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .build(); + return getCryptoKeyVersion(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String name =
+   *       CryptoKeyVersionName.of(
+   *               "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]")
+   *           .toString();
+   *   CryptoKeyVersion response = keyManagementServiceClient.getCryptoKeyVersion(name);
+   * }
+   * }
+ * + * @param name Required. The [name][google.cloud.kms.v1.CryptoKeyVersion.name] of the + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to get. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKeyVersion getCryptoKeyVersion(String name) { + GetCryptoKeyVersionRequest request = + GetCryptoKeyVersionRequest.newBuilder().setName(name).build(); + return getCryptoKeyVersion(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   GetCryptoKeyVersionRequest request =
+   *       GetCryptoKeyVersionRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyVersionName.of(
+   *                       "[PROJECT]",
+   *                       "[LOCATION]",
+   *                       "[KEY_RING]",
+   *                       "[CRYPTO_KEY]",
+   *                       "[CRYPTO_KEY_VERSION]")
+   *                   .toString())
+   *           .build();
+   *   CryptoKeyVersion response = keyManagementServiceClient.getCryptoKeyVersion(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKeyVersion getCryptoKeyVersion(GetCryptoKeyVersionRequest request) { + return getCryptoKeyVersionCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   GetCryptoKeyVersionRequest request =
+   *       GetCryptoKeyVersionRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyVersionName.of(
+   *                       "[PROJECT]",
+   *                       "[LOCATION]",
+   *                       "[KEY_RING]",
+   *                       "[CRYPTO_KEY]",
+   *                       "[CRYPTO_KEY_VERSION]")
+   *                   .toString())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.getCryptoKeyVersionCallable().futureCall(request);
+   *   // Do something.
+   *   CryptoKeyVersion response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable + getCryptoKeyVersionCallable() { + return stub.getCryptoKeyVersionCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns the public key for the given [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. + * The [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] must be + * [ASYMMETRIC_SIGN][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ASYMMETRIC_SIGN] or + * [ASYMMETRIC_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ASYMMETRIC_DECRYPT]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CryptoKeyVersionName name =
+   *       CryptoKeyVersionName.of(
+   *           "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]");
+   *   PublicKey response = keyManagementServiceClient.getPublicKey(name);
+   * }
+   * }
+ * + * @param name Required. The [name][google.cloud.kms.v1.CryptoKeyVersion.name] of the + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] public key to get. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final PublicKey getPublicKey(CryptoKeyVersionName name) { + GetPublicKeyRequest request = + GetPublicKeyRequest.newBuilder().setName(name == null ? null : name.toString()).build(); + return getPublicKey(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns the public key for the given [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. + * The [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] must be + * [ASYMMETRIC_SIGN][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ASYMMETRIC_SIGN] or + * [ASYMMETRIC_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ASYMMETRIC_DECRYPT]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String name =
+   *       CryptoKeyVersionName.of(
+   *               "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]")
+   *           .toString();
+   *   PublicKey response = keyManagementServiceClient.getPublicKey(name);
+   * }
+   * }
+ * + * @param name Required. The [name][google.cloud.kms.v1.CryptoKeyVersion.name] of the + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] public key to get. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final PublicKey getPublicKey(String name) { + GetPublicKeyRequest request = GetPublicKeyRequest.newBuilder().setName(name).build(); + return getPublicKey(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns the public key for the given [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. + * The [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] must be + * [ASYMMETRIC_SIGN][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ASYMMETRIC_SIGN] or + * [ASYMMETRIC_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ASYMMETRIC_DECRYPT]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   GetPublicKeyRequest request =
+   *       GetPublicKeyRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyVersionName.of(
+   *                       "[PROJECT]",
+   *                       "[LOCATION]",
+   *                       "[KEY_RING]",
+   *                       "[CRYPTO_KEY]",
+   *                       "[CRYPTO_KEY_VERSION]")
+   *                   .toString())
+   *           .build();
+   *   PublicKey response = keyManagementServiceClient.getPublicKey(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final PublicKey getPublicKey(GetPublicKeyRequest request) { + return getPublicKeyCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns the public key for the given [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]. + * The [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] must be + * [ASYMMETRIC_SIGN][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ASYMMETRIC_SIGN] or + * [ASYMMETRIC_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ASYMMETRIC_DECRYPT]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   GetPublicKeyRequest request =
+   *       GetPublicKeyRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyVersionName.of(
+   *                       "[PROJECT]",
+   *                       "[LOCATION]",
+   *                       "[KEY_RING]",
+   *                       "[CRYPTO_KEY]",
+   *                       "[CRYPTO_KEY_VERSION]")
+   *                   .toString())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.getPublicKeyCallable().futureCall(request);
+   *   // Do something.
+   *   PublicKey response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable getPublicKeyCallable() { + return stub.getPublicKeyCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [ImportJob][google.cloud.kms.v1.ImportJob]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   ImportJobName name =
+   *       ImportJobName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[IMPORT_JOB]");
+   *   ImportJob response = keyManagementServiceClient.getImportJob(name);
+   * }
+   * }
+ * + * @param name Required. The [name][google.cloud.kms.v1.ImportJob.name] of the + * [ImportJob][google.cloud.kms.v1.ImportJob] to get. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ImportJob getImportJob(ImportJobName name) { + GetImportJobRequest request = + GetImportJobRequest.newBuilder().setName(name == null ? null : name.toString()).build(); + return getImportJob(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [ImportJob][google.cloud.kms.v1.ImportJob]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String name =
+   *       ImportJobName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[IMPORT_JOB]").toString();
+   *   ImportJob response = keyManagementServiceClient.getImportJob(name);
+   * }
+   * }
+ * + * @param name Required. The [name][google.cloud.kms.v1.ImportJob.name] of the + * [ImportJob][google.cloud.kms.v1.ImportJob] to get. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ImportJob getImportJob(String name) { + GetImportJobRequest request = GetImportJobRequest.newBuilder().setName(name).build(); + return getImportJob(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [ImportJob][google.cloud.kms.v1.ImportJob]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   GetImportJobRequest request =
+   *       GetImportJobRequest.newBuilder()
+   *           .setName(
+   *               ImportJobName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[IMPORT_JOB]")
+   *                   .toString())
+   *           .build();
+   *   ImportJob response = keyManagementServiceClient.getImportJob(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ImportJob getImportJob(GetImportJobRequest request) { + return getImportJobCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns metadata for a given [ImportJob][google.cloud.kms.v1.ImportJob]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   GetImportJobRequest request =
+   *       GetImportJobRequest.newBuilder()
+   *           .setName(
+   *               ImportJobName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[IMPORT_JOB]")
+   *                   .toString())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.getImportJobCallable().futureCall(request);
+   *   // Do something.
+   *   ImportJob response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable getImportJobCallable() { + return stub.getImportJobCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [KeyRing][google.cloud.kms.v1.KeyRing] in a given Project and Location. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]");
+   *   String keyRingId = "keyRingId-2027180374";
+   *   KeyRing keyRing = KeyRing.newBuilder().build();
+   *   KeyRing response = keyManagementServiceClient.createKeyRing(parent, keyRingId, keyRing);
+   * }
+   * }
+ * + * @param parent Required. The resource name of the location associated with the + * [KeyRings][google.cloud.kms.v1.KeyRing], in the format `projects/*/locations/*`. + * @param keyRingId Required. It must be unique within a location and match the regular expression + * `[a-zA-Z0-9_-]{1,63}` + * @param keyRing Required. A [KeyRing][google.cloud.kms.v1.KeyRing] with initial field values. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final KeyRing createKeyRing(LocationName parent, String keyRingId, KeyRing keyRing) { + CreateKeyRingRequest request = + CreateKeyRingRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .setKeyRingId(keyRingId) + .setKeyRing(keyRing) + .build(); + return createKeyRing(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [KeyRing][google.cloud.kms.v1.KeyRing] in a given Project and Location. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String parent = LocationName.of("[PROJECT]", "[LOCATION]").toString();
+   *   String keyRingId = "keyRingId-2027180374";
+   *   KeyRing keyRing = KeyRing.newBuilder().build();
+   *   KeyRing response = keyManagementServiceClient.createKeyRing(parent, keyRingId, keyRing);
+   * }
+   * }
+ * + * @param parent Required. The resource name of the location associated with the + * [KeyRings][google.cloud.kms.v1.KeyRing], in the format `projects/*/locations/*`. + * @param keyRingId Required. It must be unique within a location and match the regular expression + * `[a-zA-Z0-9_-]{1,63}` + * @param keyRing Required. A [KeyRing][google.cloud.kms.v1.KeyRing] with initial field values. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final KeyRing createKeyRing(String parent, String keyRingId, KeyRing keyRing) { + CreateKeyRingRequest request = + CreateKeyRingRequest.newBuilder() + .setParent(parent) + .setKeyRingId(keyRingId) + .setKeyRing(keyRing) + .build(); + return createKeyRing(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [KeyRing][google.cloud.kms.v1.KeyRing] in a given Project and Location. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CreateKeyRingRequest request =
+   *       CreateKeyRingRequest.newBuilder()
+   *           .setParent(LocationName.of("[PROJECT]", "[LOCATION]").toString())
+   *           .setKeyRingId("keyRingId-2027180374")
+   *           .setKeyRing(KeyRing.newBuilder().build())
+   *           .build();
+   *   KeyRing response = keyManagementServiceClient.createKeyRing(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final KeyRing createKeyRing(CreateKeyRingRequest request) { + return createKeyRingCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [KeyRing][google.cloud.kms.v1.KeyRing] in a given Project and Location. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CreateKeyRingRequest request =
+   *       CreateKeyRingRequest.newBuilder()
+   *           .setParent(LocationName.of("[PROJECT]", "[LOCATION]").toString())
+   *           .setKeyRingId("keyRingId-2027180374")
+   *           .setKeyRing(KeyRing.newBuilder().build())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.createKeyRingCallable().futureCall(request);
+   *   // Do something.
+   *   KeyRing response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable createKeyRingCallable() { + return stub.createKeyRingCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [CryptoKey][google.cloud.kms.v1.CryptoKey] within a + * [KeyRing][google.cloud.kms.v1.KeyRing]. + * + *

[CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] and + * [CryptoKey.version_template.algorithm][google.cloud.kms.v1.CryptoKeyVersionTemplate.algorithm] + * are required. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   KeyRingName parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]");
+   *   String cryptoKeyId = "cryptoKeyId-1643185255";
+   *   CryptoKey cryptoKey = CryptoKey.newBuilder().build();
+   *   CryptoKey response =
+   *       keyManagementServiceClient.createCryptoKey(parent, cryptoKeyId, cryptoKey);
+   * }
+   * }
+ * + * @param parent Required. The [name][google.cloud.kms.v1.KeyRing.name] of the KeyRing associated + * with the [CryptoKeys][google.cloud.kms.v1.CryptoKey]. + * @param cryptoKeyId Required. It must be unique within a KeyRing and match the regular + * expression `[a-zA-Z0-9_-]{1,63}` + * @param cryptoKey Required. A [CryptoKey][google.cloud.kms.v1.CryptoKey] with initial field + * values. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKey createCryptoKey( + KeyRingName parent, String cryptoKeyId, CryptoKey cryptoKey) { + CreateCryptoKeyRequest request = + CreateCryptoKeyRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .setCryptoKeyId(cryptoKeyId) + .setCryptoKey(cryptoKey) + .build(); + return createCryptoKey(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [CryptoKey][google.cloud.kms.v1.CryptoKey] within a + * [KeyRing][google.cloud.kms.v1.KeyRing]. + * + *

[CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] and + * [CryptoKey.version_template.algorithm][google.cloud.kms.v1.CryptoKeyVersionTemplate.algorithm] + * are required. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString();
+   *   String cryptoKeyId = "cryptoKeyId-1643185255";
+   *   CryptoKey cryptoKey = CryptoKey.newBuilder().build();
+   *   CryptoKey response =
+   *       keyManagementServiceClient.createCryptoKey(parent, cryptoKeyId, cryptoKey);
+   * }
+   * }
+ * + * @param parent Required. The [name][google.cloud.kms.v1.KeyRing.name] of the KeyRing associated + * with the [CryptoKeys][google.cloud.kms.v1.CryptoKey]. + * @param cryptoKeyId Required. It must be unique within a KeyRing and match the regular + * expression `[a-zA-Z0-9_-]{1,63}` + * @param cryptoKey Required. A [CryptoKey][google.cloud.kms.v1.CryptoKey] with initial field + * values. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKey createCryptoKey(String parent, String cryptoKeyId, CryptoKey cryptoKey) { + CreateCryptoKeyRequest request = + CreateCryptoKeyRequest.newBuilder() + .setParent(parent) + .setCryptoKeyId(cryptoKeyId) + .setCryptoKey(cryptoKey) + .build(); + return createCryptoKey(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [CryptoKey][google.cloud.kms.v1.CryptoKey] within a + * [KeyRing][google.cloud.kms.v1.KeyRing]. + * + *

[CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] and + * [CryptoKey.version_template.algorithm][google.cloud.kms.v1.CryptoKeyVersionTemplate.algorithm] + * are required. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CreateCryptoKeyRequest request =
+   *       CreateCryptoKeyRequest.newBuilder()
+   *           .setParent(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .setCryptoKeyId("cryptoKeyId-1643185255")
+   *           .setCryptoKey(CryptoKey.newBuilder().build())
+   *           .setSkipInitialVersionCreation(true)
+   *           .build();
+   *   CryptoKey response = keyManagementServiceClient.createCryptoKey(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKey createCryptoKey(CreateCryptoKeyRequest request) { + return createCryptoKeyCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [CryptoKey][google.cloud.kms.v1.CryptoKey] within a + * [KeyRing][google.cloud.kms.v1.KeyRing]. + * + *

[CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] and + * [CryptoKey.version_template.algorithm][google.cloud.kms.v1.CryptoKeyVersionTemplate.algorithm] + * are required. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CreateCryptoKeyRequest request =
+   *       CreateCryptoKeyRequest.newBuilder()
+   *           .setParent(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .setCryptoKeyId("cryptoKeyId-1643185255")
+   *           .setCryptoKey(CryptoKey.newBuilder().build())
+   *           .setSkipInitialVersionCreation(true)
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.createCryptoKeyCallable().futureCall(request);
+   *   // Do something.
+   *   CryptoKey response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable createCryptoKeyCallable() { + return stub.createCryptoKeyCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] in a + * [CryptoKey][google.cloud.kms.v1.CryptoKey]. + * + *

The server will assign the next sequential id. If unset, + * [state][google.cloud.kms.v1.CryptoKeyVersion.state] will be set to + * [ENABLED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.ENABLED]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CryptoKeyName parent =
+   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]");
+   *   CryptoKeyVersion cryptoKeyVersion = CryptoKeyVersion.newBuilder().build();
+   *   CryptoKeyVersion response =
+   *       keyManagementServiceClient.createCryptoKeyVersion(parent, cryptoKeyVersion);
+   * }
+   * }
+ * + * @param parent Required. The [name][google.cloud.kms.v1.CryptoKey.name] of the + * [CryptoKey][google.cloud.kms.v1.CryptoKey] associated with the + * [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion]. + * @param cryptoKeyVersion Required. A [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] + * with initial field values. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKeyVersion createCryptoKeyVersion( + CryptoKeyName parent, CryptoKeyVersion cryptoKeyVersion) { + CreateCryptoKeyVersionRequest request = + CreateCryptoKeyVersionRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .setCryptoKeyVersion(cryptoKeyVersion) + .build(); + return createCryptoKeyVersion(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] in a + * [CryptoKey][google.cloud.kms.v1.CryptoKey]. + * + *

The server will assign the next sequential id. If unset, + * [state][google.cloud.kms.v1.CryptoKeyVersion.state] will be set to + * [ENABLED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.ENABLED]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String parent =
+   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]").toString();
+   *   CryptoKeyVersion cryptoKeyVersion = CryptoKeyVersion.newBuilder().build();
+   *   CryptoKeyVersion response =
+   *       keyManagementServiceClient.createCryptoKeyVersion(parent, cryptoKeyVersion);
+   * }
+   * }
+ * + * @param parent Required. The [name][google.cloud.kms.v1.CryptoKey.name] of the + * [CryptoKey][google.cloud.kms.v1.CryptoKey] associated with the + * [CryptoKeyVersions][google.cloud.kms.v1.CryptoKeyVersion]. + * @param cryptoKeyVersion Required. A [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] + * with initial field values. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKeyVersion createCryptoKeyVersion( + String parent, CryptoKeyVersion cryptoKeyVersion) { + CreateCryptoKeyVersionRequest request = + CreateCryptoKeyVersionRequest.newBuilder() + .setParent(parent) + .setCryptoKeyVersion(cryptoKeyVersion) + .build(); + return createCryptoKeyVersion(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] in a + * [CryptoKey][google.cloud.kms.v1.CryptoKey]. + * + *

The server will assign the next sequential id. If unset, + * [state][google.cloud.kms.v1.CryptoKeyVersion.state] will be set to + * [ENABLED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.ENABLED]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CreateCryptoKeyVersionRequest request =
+   *       CreateCryptoKeyVersionRequest.newBuilder()
+   *           .setParent(
+   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+   *                   .toString())
+   *           .setCryptoKeyVersion(CryptoKeyVersion.newBuilder().build())
+   *           .build();
+   *   CryptoKeyVersion response = keyManagementServiceClient.createCryptoKeyVersion(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKeyVersion createCryptoKeyVersion(CreateCryptoKeyVersionRequest request) { + return createCryptoKeyVersionCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] in a + * [CryptoKey][google.cloud.kms.v1.CryptoKey]. + * + *

The server will assign the next sequential id. If unset, + * [state][google.cloud.kms.v1.CryptoKeyVersion.state] will be set to + * [ENABLED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.ENABLED]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CreateCryptoKeyVersionRequest request =
+   *       CreateCryptoKeyVersionRequest.newBuilder()
+   *           .setParent(
+   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+   *                   .toString())
+   *           .setCryptoKeyVersion(CryptoKeyVersion.newBuilder().build())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.createCryptoKeyVersionCallable().futureCall(request);
+   *   // Do something.
+   *   CryptoKeyVersion response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable + createCryptoKeyVersionCallable() { + return stub.createCryptoKeyVersionCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Imports a new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] into an existing + * [CryptoKey][google.cloud.kms.v1.CryptoKey] using the wrapped key material provided in the + * request. + * + *

The version ID will be assigned the next sequential id within the + * [CryptoKey][google.cloud.kms.v1.CryptoKey]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   ImportCryptoKeyVersionRequest request =
+   *       ImportCryptoKeyVersionRequest.newBuilder()
+   *           .setParent(
+   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+   *                   .toString())
+   *           .setImportJob("importJob-208547368")
+   *           .build();
+   *   CryptoKeyVersion response = keyManagementServiceClient.importCryptoKeyVersion(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKeyVersion importCryptoKeyVersion(ImportCryptoKeyVersionRequest request) { + return importCryptoKeyVersionCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Imports a new [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] into an existing + * [CryptoKey][google.cloud.kms.v1.CryptoKey] using the wrapped key material provided in the + * request. + * + *

The version ID will be assigned the next sequential id within the + * [CryptoKey][google.cloud.kms.v1.CryptoKey]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   ImportCryptoKeyVersionRequest request =
+   *       ImportCryptoKeyVersionRequest.newBuilder()
+   *           .setParent(
+   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+   *                   .toString())
+   *           .setImportJob("importJob-208547368")
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.importCryptoKeyVersionCallable().futureCall(request);
+   *   // Do something.
+   *   CryptoKeyVersion response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable + importCryptoKeyVersionCallable() { + return stub.importCryptoKeyVersionCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [ImportJob][google.cloud.kms.v1.ImportJob] within a + * [KeyRing][google.cloud.kms.v1.KeyRing]. + * + *

[ImportJob.import_method][google.cloud.kms.v1.ImportJob.import_method] is required. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   KeyRingName parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]");
+   *   String importJobId = "importJobId1449444627";
+   *   ImportJob importJob = ImportJob.newBuilder().build();
+   *   ImportJob response =
+   *       keyManagementServiceClient.createImportJob(parent, importJobId, importJob);
+   * }
+   * }
+ * + * @param parent Required. The [name][google.cloud.kms.v1.KeyRing.name] of the + * [KeyRing][google.cloud.kms.v1.KeyRing] associated with the + * [ImportJobs][google.cloud.kms.v1.ImportJob]. + * @param importJobId Required. It must be unique within a KeyRing and match the regular + * expression `[a-zA-Z0-9_-]{1,63}` + * @param importJob Required. An [ImportJob][google.cloud.kms.v1.ImportJob] with initial field + * values. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ImportJob createImportJob( + KeyRingName parent, String importJobId, ImportJob importJob) { + CreateImportJobRequest request = + CreateImportJobRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .setImportJobId(importJobId) + .setImportJob(importJob) + .build(); + return createImportJob(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [ImportJob][google.cloud.kms.v1.ImportJob] within a + * [KeyRing][google.cloud.kms.v1.KeyRing]. + * + *

[ImportJob.import_method][google.cloud.kms.v1.ImportJob.import_method] is required. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString();
+   *   String importJobId = "importJobId1449444627";
+   *   ImportJob importJob = ImportJob.newBuilder().build();
+   *   ImportJob response =
+   *       keyManagementServiceClient.createImportJob(parent, importJobId, importJob);
+   * }
+   * }
+ * + * @param parent Required. The [name][google.cloud.kms.v1.KeyRing.name] of the + * [KeyRing][google.cloud.kms.v1.KeyRing] associated with the + * [ImportJobs][google.cloud.kms.v1.ImportJob]. + * @param importJobId Required. It must be unique within a KeyRing and match the regular + * expression `[a-zA-Z0-9_-]{1,63}` + * @param importJob Required. An [ImportJob][google.cloud.kms.v1.ImportJob] with initial field + * values. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ImportJob createImportJob(String parent, String importJobId, ImportJob importJob) { + CreateImportJobRequest request = + CreateImportJobRequest.newBuilder() + .setParent(parent) + .setImportJobId(importJobId) + .setImportJob(importJob) + .build(); + return createImportJob(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [ImportJob][google.cloud.kms.v1.ImportJob] within a + * [KeyRing][google.cloud.kms.v1.KeyRing]. + * + *

[ImportJob.import_method][google.cloud.kms.v1.ImportJob.import_method] is required. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CreateImportJobRequest request =
+   *       CreateImportJobRequest.newBuilder()
+   *           .setParent(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .setImportJobId("importJobId1449444627")
+   *           .setImportJob(ImportJob.newBuilder().build())
+   *           .build();
+   *   ImportJob response = keyManagementServiceClient.createImportJob(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ImportJob createImportJob(CreateImportJobRequest request) { + return createImportJobCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Create a new [ImportJob][google.cloud.kms.v1.ImportJob] within a + * [KeyRing][google.cloud.kms.v1.KeyRing]. + * + *

[ImportJob.import_method][google.cloud.kms.v1.ImportJob.import_method] is required. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CreateImportJobRequest request =
+   *       CreateImportJobRequest.newBuilder()
+   *           .setParent(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .setImportJobId("importJobId1449444627")
+   *           .setImportJob(ImportJob.newBuilder().build())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.createImportJobCallable().futureCall(request);
+   *   // Do something.
+   *   ImportJob response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable createImportJobCallable() { + return stub.createImportJobCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Update a [CryptoKey][google.cloud.kms.v1.CryptoKey]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CryptoKey cryptoKey = CryptoKey.newBuilder().build();
+   *   FieldMask updateMask = FieldMask.newBuilder().build();
+   *   CryptoKey response = keyManagementServiceClient.updateCryptoKey(cryptoKey, updateMask);
+   * }
+   * }
+ * + * @param cryptoKey Required. [CryptoKey][google.cloud.kms.v1.CryptoKey] with updated values. + * @param updateMask Required. List of fields to be updated in this request. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKey updateCryptoKey(CryptoKey cryptoKey, FieldMask updateMask) { + UpdateCryptoKeyRequest request = + UpdateCryptoKeyRequest.newBuilder() + .setCryptoKey(cryptoKey) + .setUpdateMask(updateMask) + .build(); + return updateCryptoKey(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Update a [CryptoKey][google.cloud.kms.v1.CryptoKey]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   UpdateCryptoKeyRequest request =
+   *       UpdateCryptoKeyRequest.newBuilder()
+   *           .setCryptoKey(CryptoKey.newBuilder().build())
+   *           .setUpdateMask(FieldMask.newBuilder().build())
+   *           .build();
+   *   CryptoKey response = keyManagementServiceClient.updateCryptoKey(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKey updateCryptoKey(UpdateCryptoKeyRequest request) { + return updateCryptoKeyCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Update a [CryptoKey][google.cloud.kms.v1.CryptoKey]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   UpdateCryptoKeyRequest request =
+   *       UpdateCryptoKeyRequest.newBuilder()
+   *           .setCryptoKey(CryptoKey.newBuilder().build())
+   *           .setUpdateMask(FieldMask.newBuilder().build())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.updateCryptoKeyCallable().futureCall(request);
+   *   // Do something.
+   *   CryptoKey response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable updateCryptoKeyCallable() { + return stub.updateCryptoKeyCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Update a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]'s metadata. + * + *

[state][google.cloud.kms.v1.CryptoKeyVersion.state] may be changed between + * [ENABLED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.ENABLED] and + * [DISABLED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DISABLED] using this + * method. See + * [DestroyCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.DestroyCryptoKeyVersion] and + * [RestoreCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.RestoreCryptoKeyVersion] to + * move between other states. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CryptoKeyVersion cryptoKeyVersion = CryptoKeyVersion.newBuilder().build();
+   *   FieldMask updateMask = FieldMask.newBuilder().build();
+   *   CryptoKeyVersion response =
+   *       keyManagementServiceClient.updateCryptoKeyVersion(cryptoKeyVersion, updateMask);
+   * }
+   * }
+ * + * @param cryptoKeyVersion Required. [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] with + * updated values. + * @param updateMask Required. List of fields to be updated in this request. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKeyVersion updateCryptoKeyVersion( + CryptoKeyVersion cryptoKeyVersion, FieldMask updateMask) { + UpdateCryptoKeyVersionRequest request = + UpdateCryptoKeyVersionRequest.newBuilder() + .setCryptoKeyVersion(cryptoKeyVersion) + .setUpdateMask(updateMask) + .build(); + return updateCryptoKeyVersion(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Update a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]'s metadata. + * + *

[state][google.cloud.kms.v1.CryptoKeyVersion.state] may be changed between + * [ENABLED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.ENABLED] and + * [DISABLED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DISABLED] using this + * method. See + * [DestroyCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.DestroyCryptoKeyVersion] and + * [RestoreCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.RestoreCryptoKeyVersion] to + * move between other states. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   UpdateCryptoKeyVersionRequest request =
+   *       UpdateCryptoKeyVersionRequest.newBuilder()
+   *           .setCryptoKeyVersion(CryptoKeyVersion.newBuilder().build())
+   *           .setUpdateMask(FieldMask.newBuilder().build())
+   *           .build();
+   *   CryptoKeyVersion response = keyManagementServiceClient.updateCryptoKeyVersion(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKeyVersion updateCryptoKeyVersion(UpdateCryptoKeyVersionRequest request) { + return updateCryptoKeyVersionCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Update a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]'s metadata. + * + *

[state][google.cloud.kms.v1.CryptoKeyVersion.state] may be changed between + * [ENABLED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.ENABLED] and + * [DISABLED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DISABLED] using this + * method. See + * [DestroyCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.DestroyCryptoKeyVersion] and + * [RestoreCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.RestoreCryptoKeyVersion] to + * move between other states. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   UpdateCryptoKeyVersionRequest request =
+   *       UpdateCryptoKeyVersionRequest.newBuilder()
+   *           .setCryptoKeyVersion(CryptoKeyVersion.newBuilder().build())
+   *           .setUpdateMask(FieldMask.newBuilder().build())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.updateCryptoKeyVersionCallable().futureCall(request);
+   *   // Do something.
+   *   CryptoKeyVersion response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable + updateCryptoKeyVersionCallable() { + return stub.updateCryptoKeyVersionCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Encrypts data, so that it can only be recovered by a call to + * [Decrypt][google.cloud.kms.v1.KeyManagementService.Decrypt]. The + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] must be + * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   ResourceName name = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]");
+   *   ByteString plaintext = ByteString.EMPTY;
+   *   EncryptResponse response = keyManagementServiceClient.encrypt(name, plaintext);
+   * }
+   * }
+ * + * @param name Required. The resource name of the [CryptoKey][google.cloud.kms.v1.CryptoKey] or + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to use for encryption. + *

If a [CryptoKey][google.cloud.kms.v1.CryptoKey] is specified, the server will use its + * [primary version][google.cloud.kms.v1.CryptoKey.primary]. + * @param plaintext Required. The data to encrypt. Must be no larger than 64KiB. + *

The maximum size depends on the key version's + * [protection_level][google.cloud.kms.v1.CryptoKeyVersionTemplate.protection_level]. For + * [SOFTWARE][google.cloud.kms.v1.ProtectionLevel.SOFTWARE] keys, the plaintext must be no + * larger than 64KiB. For [HSM][google.cloud.kms.v1.ProtectionLevel.HSM] keys, the combined + * length of the plaintext and additional_authenticated_data fields must be no larger than + * 8KiB. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final EncryptResponse encrypt(ResourceName name, ByteString plaintext) { + EncryptRequest request = + EncryptRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .setPlaintext(plaintext) + .build(); + return encrypt(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Encrypts data, so that it can only be recovered by a call to + * [Decrypt][google.cloud.kms.v1.KeyManagementService.Decrypt]. The + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] must be + * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String name = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString();
+   *   ByteString plaintext = ByteString.EMPTY;
+   *   EncryptResponse response = keyManagementServiceClient.encrypt(name, plaintext);
+   * }
+   * }
+ * + * @param name Required. The resource name of the [CryptoKey][google.cloud.kms.v1.CryptoKey] or + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to use for encryption. + *

If a [CryptoKey][google.cloud.kms.v1.CryptoKey] is specified, the server will use its + * [primary version][google.cloud.kms.v1.CryptoKey.primary]. + * @param plaintext Required. The data to encrypt. Must be no larger than 64KiB. + *

The maximum size depends on the key version's + * [protection_level][google.cloud.kms.v1.CryptoKeyVersionTemplate.protection_level]. For + * [SOFTWARE][google.cloud.kms.v1.ProtectionLevel.SOFTWARE] keys, the plaintext must be no + * larger than 64KiB. For [HSM][google.cloud.kms.v1.ProtectionLevel.HSM] keys, the combined + * length of the plaintext and additional_authenticated_data fields must be no larger than + * 8KiB. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final EncryptResponse encrypt(String name, ByteString plaintext) { + EncryptRequest request = + EncryptRequest.newBuilder().setName(name).setPlaintext(plaintext).build(); + return encrypt(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Encrypts data, so that it can only be recovered by a call to + * [Decrypt][google.cloud.kms.v1.KeyManagementService.Decrypt]. The + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] must be + * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   EncryptRequest request =
+   *       EncryptRequest.newBuilder()
+   *           .setName(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .setPlaintext(ByteString.EMPTY)
+   *           .setAdditionalAuthenticatedData(ByteString.EMPTY)
+   *           .setPlaintextCrc32C(Int64Value.newBuilder().build())
+   *           .setAdditionalAuthenticatedDataCrc32C(Int64Value.newBuilder().build())
+   *           .build();
+   *   EncryptResponse response = keyManagementServiceClient.encrypt(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final EncryptResponse encrypt(EncryptRequest request) { + return encryptCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Encrypts data, so that it can only be recovered by a call to + * [Decrypt][google.cloud.kms.v1.KeyManagementService.Decrypt]. The + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] must be + * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   EncryptRequest request =
+   *       EncryptRequest.newBuilder()
+   *           .setName(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .setPlaintext(ByteString.EMPTY)
+   *           .setAdditionalAuthenticatedData(ByteString.EMPTY)
+   *           .setPlaintextCrc32C(Int64Value.newBuilder().build())
+   *           .setAdditionalAuthenticatedDataCrc32C(Int64Value.newBuilder().build())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.encryptCallable().futureCall(request);
+   *   // Do something.
+   *   EncryptResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable encryptCallable() { + return stub.encryptCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Decrypts data that was protected by + * [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt]. The + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] must be + * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CryptoKeyName name =
+   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]");
+   *   ByteString ciphertext = ByteString.EMPTY;
+   *   DecryptResponse response = keyManagementServiceClient.decrypt(name, ciphertext);
+   * }
+   * }
+ * + * @param name Required. The resource name of the [CryptoKey][google.cloud.kms.v1.CryptoKey] to + * use for decryption. The server will choose the appropriate version. + * @param ciphertext Required. The encrypted data originally returned in + * [EncryptResponse.ciphertext][google.cloud.kms.v1.EncryptResponse.ciphertext]. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final DecryptResponse decrypt(CryptoKeyName name, ByteString ciphertext) { + DecryptRequest request = + DecryptRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .setCiphertext(ciphertext) + .build(); + return decrypt(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Decrypts data that was protected by + * [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt]. The + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] must be + * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String name =
+   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]").toString();
+   *   ByteString ciphertext = ByteString.EMPTY;
+   *   DecryptResponse response = keyManagementServiceClient.decrypt(name, ciphertext);
+   * }
+   * }
+ * + * @param name Required. The resource name of the [CryptoKey][google.cloud.kms.v1.CryptoKey] to + * use for decryption. The server will choose the appropriate version. + * @param ciphertext Required. The encrypted data originally returned in + * [EncryptResponse.ciphertext][google.cloud.kms.v1.EncryptResponse.ciphertext]. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final DecryptResponse decrypt(String name, ByteString ciphertext) { + DecryptRequest request = + DecryptRequest.newBuilder().setName(name).setCiphertext(ciphertext).build(); + return decrypt(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Decrypts data that was protected by + * [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt]. The + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] must be + * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   DecryptRequest request =
+   *       DecryptRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+   *                   .toString())
+   *           .setCiphertext(ByteString.EMPTY)
+   *           .setAdditionalAuthenticatedData(ByteString.EMPTY)
+   *           .setCiphertextCrc32C(Int64Value.newBuilder().build())
+   *           .setAdditionalAuthenticatedDataCrc32C(Int64Value.newBuilder().build())
+   *           .build();
+   *   DecryptResponse response = keyManagementServiceClient.decrypt(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final DecryptResponse decrypt(DecryptRequest request) { + return decryptCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Decrypts data that was protected by + * [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt]. The + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] must be + * [ENCRYPT_DECRYPT][google.cloud.kms.v1.CryptoKey.CryptoKeyPurpose.ENCRYPT_DECRYPT]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   DecryptRequest request =
+   *       DecryptRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+   *                   .toString())
+   *           .setCiphertext(ByteString.EMPTY)
+   *           .setAdditionalAuthenticatedData(ByteString.EMPTY)
+   *           .setCiphertextCrc32C(Int64Value.newBuilder().build())
+   *           .setAdditionalAuthenticatedDataCrc32C(Int64Value.newBuilder().build())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.decryptCallable().futureCall(request);
+   *   // Do something.
+   *   DecryptResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable decryptCallable() { + return stub.decryptCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Signs data using a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] with + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] ASYMMETRIC_SIGN, producing a + * signature that can be verified with the public key retrieved from + * [GetPublicKey][google.cloud.kms.v1.KeyManagementService.GetPublicKey]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CryptoKeyVersionName name =
+   *       CryptoKeyVersionName.of(
+   *           "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]");
+   *   Digest digest = Digest.newBuilder().build();
+   *   AsymmetricSignResponse response = keyManagementServiceClient.asymmetricSign(name, digest);
+   * }
+   * }
+ * + * @param name Required. The resource name of the + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to use for signing. + * @param digest Required. The digest of the data to sign. The digest must be produced with the + * same digest algorithm as specified by the key version's + * [algorithm][google.cloud.kms.v1.CryptoKeyVersion.algorithm]. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final AsymmetricSignResponse asymmetricSign(CryptoKeyVersionName name, Digest digest) { + AsymmetricSignRequest request = + AsymmetricSignRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .setDigest(digest) + .build(); + return asymmetricSign(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Signs data using a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] with + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] ASYMMETRIC_SIGN, producing a + * signature that can be verified with the public key retrieved from + * [GetPublicKey][google.cloud.kms.v1.KeyManagementService.GetPublicKey]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String name =
+   *       CryptoKeyVersionName.of(
+   *               "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]")
+   *           .toString();
+   *   Digest digest = Digest.newBuilder().build();
+   *   AsymmetricSignResponse response = keyManagementServiceClient.asymmetricSign(name, digest);
+   * }
+   * }
+ * + * @param name Required. The resource name of the + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to use for signing. + * @param digest Required. The digest of the data to sign. The digest must be produced with the + * same digest algorithm as specified by the key version's + * [algorithm][google.cloud.kms.v1.CryptoKeyVersion.algorithm]. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final AsymmetricSignResponse asymmetricSign(String name, Digest digest) { + AsymmetricSignRequest request = + AsymmetricSignRequest.newBuilder().setName(name).setDigest(digest).build(); + return asymmetricSign(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Signs data using a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] with + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] ASYMMETRIC_SIGN, producing a + * signature that can be verified with the public key retrieved from + * [GetPublicKey][google.cloud.kms.v1.KeyManagementService.GetPublicKey]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   AsymmetricSignRequest request =
+   *       AsymmetricSignRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyVersionName.of(
+   *                       "[PROJECT]",
+   *                       "[LOCATION]",
+   *                       "[KEY_RING]",
+   *                       "[CRYPTO_KEY]",
+   *                       "[CRYPTO_KEY_VERSION]")
+   *                   .toString())
+   *           .setDigest(Digest.newBuilder().build())
+   *           .setDigestCrc32C(Int64Value.newBuilder().build())
+   *           .build();
+   *   AsymmetricSignResponse response = keyManagementServiceClient.asymmetricSign(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final AsymmetricSignResponse asymmetricSign(AsymmetricSignRequest request) { + return asymmetricSignCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Signs data using a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] with + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] ASYMMETRIC_SIGN, producing a + * signature that can be verified with the public key retrieved from + * [GetPublicKey][google.cloud.kms.v1.KeyManagementService.GetPublicKey]. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   AsymmetricSignRequest request =
+   *       AsymmetricSignRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyVersionName.of(
+   *                       "[PROJECT]",
+   *                       "[LOCATION]",
+   *                       "[KEY_RING]",
+   *                       "[CRYPTO_KEY]",
+   *                       "[CRYPTO_KEY_VERSION]")
+   *                   .toString())
+   *           .setDigest(Digest.newBuilder().build())
+   *           .setDigestCrc32C(Int64Value.newBuilder().build())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.asymmetricSignCallable().futureCall(request);
+   *   // Do something.
+   *   AsymmetricSignResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable + asymmetricSignCallable() { + return stub.asymmetricSignCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Decrypts data that was encrypted with a public key retrieved from + * [GetPublicKey][google.cloud.kms.v1.KeyManagementService.GetPublicKey] corresponding to a + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] with + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] ASYMMETRIC_DECRYPT. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CryptoKeyVersionName name =
+   *       CryptoKeyVersionName.of(
+   *           "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]");
+   *   ByteString ciphertext = ByteString.EMPTY;
+   *   AsymmetricDecryptResponse response =
+   *       keyManagementServiceClient.asymmetricDecrypt(name, ciphertext);
+   * }
+   * }
+ * + * @param name Required. The resource name of the + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to use for decryption. + * @param ciphertext Required. The data encrypted with the named + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]'s public key using OAEP. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final AsymmetricDecryptResponse asymmetricDecrypt( + CryptoKeyVersionName name, ByteString ciphertext) { + AsymmetricDecryptRequest request = + AsymmetricDecryptRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .setCiphertext(ciphertext) + .build(); + return asymmetricDecrypt(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Decrypts data that was encrypted with a public key retrieved from + * [GetPublicKey][google.cloud.kms.v1.KeyManagementService.GetPublicKey] corresponding to a + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] with + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] ASYMMETRIC_DECRYPT. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String name =
+   *       CryptoKeyVersionName.of(
+   *               "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]")
+   *           .toString();
+   *   ByteString ciphertext = ByteString.EMPTY;
+   *   AsymmetricDecryptResponse response =
+   *       keyManagementServiceClient.asymmetricDecrypt(name, ciphertext);
+   * }
+   * }
+ * + * @param name Required. The resource name of the + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to use for decryption. + * @param ciphertext Required. The data encrypted with the named + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion]'s public key using OAEP. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final AsymmetricDecryptResponse asymmetricDecrypt(String name, ByteString ciphertext) { + AsymmetricDecryptRequest request = + AsymmetricDecryptRequest.newBuilder().setName(name).setCiphertext(ciphertext).build(); + return asymmetricDecrypt(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Decrypts data that was encrypted with a public key retrieved from + * [GetPublicKey][google.cloud.kms.v1.KeyManagementService.GetPublicKey] corresponding to a + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] with + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] ASYMMETRIC_DECRYPT. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   AsymmetricDecryptRequest request =
+   *       AsymmetricDecryptRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyVersionName.of(
+   *                       "[PROJECT]",
+   *                       "[LOCATION]",
+   *                       "[KEY_RING]",
+   *                       "[CRYPTO_KEY]",
+   *                       "[CRYPTO_KEY_VERSION]")
+   *                   .toString())
+   *           .setCiphertext(ByteString.EMPTY)
+   *           .setCiphertextCrc32C(Int64Value.newBuilder().build())
+   *           .build();
+   *   AsymmetricDecryptResponse response = keyManagementServiceClient.asymmetricDecrypt(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final AsymmetricDecryptResponse asymmetricDecrypt(AsymmetricDecryptRequest request) { + return asymmetricDecryptCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Decrypts data that was encrypted with a public key retrieved from + * [GetPublicKey][google.cloud.kms.v1.KeyManagementService.GetPublicKey] corresponding to a + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] with + * [CryptoKey.purpose][google.cloud.kms.v1.CryptoKey.purpose] ASYMMETRIC_DECRYPT. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   AsymmetricDecryptRequest request =
+   *       AsymmetricDecryptRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyVersionName.of(
+   *                       "[PROJECT]",
+   *                       "[LOCATION]",
+   *                       "[KEY_RING]",
+   *                       "[CRYPTO_KEY]",
+   *                       "[CRYPTO_KEY_VERSION]")
+   *                   .toString())
+   *           .setCiphertext(ByteString.EMPTY)
+   *           .setCiphertextCrc32C(Int64Value.newBuilder().build())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.asymmetricDecryptCallable().futureCall(request);
+   *   // Do something.
+   *   AsymmetricDecryptResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable + asymmetricDecryptCallable() { + return stub.asymmetricDecryptCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Update the version of a [CryptoKey][google.cloud.kms.v1.CryptoKey] that will be used in + * [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt]. + * + *

Returns an error if called on an asymmetric key. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CryptoKeyName name =
+   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]");
+   *   String cryptoKeyVersionId = "cryptoKeyVersionId987674581";
+   *   CryptoKey response =
+   *       keyManagementServiceClient.updateCryptoKeyPrimaryVersion(name, cryptoKeyVersionId);
+   * }
+   * }
+ * + * @param name Required. The resource name of the [CryptoKey][google.cloud.kms.v1.CryptoKey] to + * update. + * @param cryptoKeyVersionId Required. The id of the child + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to use as primary. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKey updateCryptoKeyPrimaryVersion( + CryptoKeyName name, String cryptoKeyVersionId) { + UpdateCryptoKeyPrimaryVersionRequest request = + UpdateCryptoKeyPrimaryVersionRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .setCryptoKeyVersionId(cryptoKeyVersionId) + .build(); + return updateCryptoKeyPrimaryVersion(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Update the version of a [CryptoKey][google.cloud.kms.v1.CryptoKey] that will be used in + * [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt]. + * + *

Returns an error if called on an asymmetric key. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String name =
+   *       CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]").toString();
+   *   String cryptoKeyVersionId = "cryptoKeyVersionId987674581";
+   *   CryptoKey response =
+   *       keyManagementServiceClient.updateCryptoKeyPrimaryVersion(name, cryptoKeyVersionId);
+   * }
+   * }
+ * + * @param name Required. The resource name of the [CryptoKey][google.cloud.kms.v1.CryptoKey] to + * update. + * @param cryptoKeyVersionId Required. The id of the child + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to use as primary. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKey updateCryptoKeyPrimaryVersion(String name, String cryptoKeyVersionId) { + UpdateCryptoKeyPrimaryVersionRequest request = + UpdateCryptoKeyPrimaryVersionRequest.newBuilder() + .setName(name) + .setCryptoKeyVersionId(cryptoKeyVersionId) + .build(); + return updateCryptoKeyPrimaryVersion(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Update the version of a [CryptoKey][google.cloud.kms.v1.CryptoKey] that will be used in + * [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt]. + * + *

Returns an error if called on an asymmetric key. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   UpdateCryptoKeyPrimaryVersionRequest request =
+   *       UpdateCryptoKeyPrimaryVersionRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+   *                   .toString())
+   *           .setCryptoKeyVersionId("cryptoKeyVersionId987674581")
+   *           .build();
+   *   CryptoKey response = keyManagementServiceClient.updateCryptoKeyPrimaryVersion(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKey updateCryptoKeyPrimaryVersion( + UpdateCryptoKeyPrimaryVersionRequest request) { + return updateCryptoKeyPrimaryVersionCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Update the version of a [CryptoKey][google.cloud.kms.v1.CryptoKey] that will be used in + * [Encrypt][google.cloud.kms.v1.KeyManagementService.Encrypt]. + * + *

Returns an error if called on an asymmetric key. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   UpdateCryptoKeyPrimaryVersionRequest request =
+   *       UpdateCryptoKeyPrimaryVersionRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+   *                   .toString())
+   *           .setCryptoKeyVersionId("cryptoKeyVersionId987674581")
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.updateCryptoKeyPrimaryVersionCallable().futureCall(request);
+   *   // Do something.
+   *   CryptoKey response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable + updateCryptoKeyPrimaryVersionCallable() { + return stub.updateCryptoKeyPrimaryVersionCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Schedule a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] for destruction. + * + *

Upon calling this method, + * [CryptoKeyVersion.state][google.cloud.kms.v1.CryptoKeyVersion.state] will be set to + * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED] + * and [destroy_time][google.cloud.kms.v1.CryptoKeyVersion.destroy_time] will be set to a time 24 + * hours in the future, at which point the [state][google.cloud.kms.v1.CryptoKeyVersion.state] + * will be changed to + * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED], and the key + * material will be irrevocably destroyed. + * + *

Before the [destroy_time][google.cloud.kms.v1.CryptoKeyVersion.destroy_time] is reached, + * [RestoreCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.RestoreCryptoKeyVersion] may + * be called to reverse the process. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CryptoKeyVersionName name =
+   *       CryptoKeyVersionName.of(
+   *           "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]");
+   *   CryptoKeyVersion response = keyManagementServiceClient.destroyCryptoKeyVersion(name);
+   * }
+   * }
+ * + * @param name Required. The resource name of the + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to destroy. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKeyVersion destroyCryptoKeyVersion(CryptoKeyVersionName name) { + DestroyCryptoKeyVersionRequest request = + DestroyCryptoKeyVersionRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .build(); + return destroyCryptoKeyVersion(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Schedule a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] for destruction. + * + *

Upon calling this method, + * [CryptoKeyVersion.state][google.cloud.kms.v1.CryptoKeyVersion.state] will be set to + * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED] + * and [destroy_time][google.cloud.kms.v1.CryptoKeyVersion.destroy_time] will be set to a time 24 + * hours in the future, at which point the [state][google.cloud.kms.v1.CryptoKeyVersion.state] + * will be changed to + * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED], and the key + * material will be irrevocably destroyed. + * + *

Before the [destroy_time][google.cloud.kms.v1.CryptoKeyVersion.destroy_time] is reached, + * [RestoreCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.RestoreCryptoKeyVersion] may + * be called to reverse the process. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String name =
+   *       CryptoKeyVersionName.of(
+   *               "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]")
+   *           .toString();
+   *   CryptoKeyVersion response = keyManagementServiceClient.destroyCryptoKeyVersion(name);
+   * }
+   * }
+ * + * @param name Required. The resource name of the + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to destroy. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKeyVersion destroyCryptoKeyVersion(String name) { + DestroyCryptoKeyVersionRequest request = + DestroyCryptoKeyVersionRequest.newBuilder().setName(name).build(); + return destroyCryptoKeyVersion(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Schedule a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] for destruction. + * + *

Upon calling this method, + * [CryptoKeyVersion.state][google.cloud.kms.v1.CryptoKeyVersion.state] will be set to + * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED] + * and [destroy_time][google.cloud.kms.v1.CryptoKeyVersion.destroy_time] will be set to a time 24 + * hours in the future, at which point the [state][google.cloud.kms.v1.CryptoKeyVersion.state] + * will be changed to + * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED], and the key + * material will be irrevocably destroyed. + * + *

Before the [destroy_time][google.cloud.kms.v1.CryptoKeyVersion.destroy_time] is reached, + * [RestoreCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.RestoreCryptoKeyVersion] may + * be called to reverse the process. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   DestroyCryptoKeyVersionRequest request =
+   *       DestroyCryptoKeyVersionRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyVersionName.of(
+   *                       "[PROJECT]",
+   *                       "[LOCATION]",
+   *                       "[KEY_RING]",
+   *                       "[CRYPTO_KEY]",
+   *                       "[CRYPTO_KEY_VERSION]")
+   *                   .toString())
+   *           .build();
+   *   CryptoKeyVersion response = keyManagementServiceClient.destroyCryptoKeyVersion(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKeyVersion destroyCryptoKeyVersion(DestroyCryptoKeyVersionRequest request) { + return destroyCryptoKeyVersionCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Schedule a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] for destruction. + * + *

Upon calling this method, + * [CryptoKeyVersion.state][google.cloud.kms.v1.CryptoKeyVersion.state] will be set to + * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED] + * and [destroy_time][google.cloud.kms.v1.CryptoKeyVersion.destroy_time] will be set to a time 24 + * hours in the future, at which point the [state][google.cloud.kms.v1.CryptoKeyVersion.state] + * will be changed to + * [DESTROYED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROYED], and the key + * material will be irrevocably destroyed. + * + *

Before the [destroy_time][google.cloud.kms.v1.CryptoKeyVersion.destroy_time] is reached, + * [RestoreCryptoKeyVersion][google.cloud.kms.v1.KeyManagementService.RestoreCryptoKeyVersion] may + * be called to reverse the process. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   DestroyCryptoKeyVersionRequest request =
+   *       DestroyCryptoKeyVersionRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyVersionName.of(
+   *                       "[PROJECT]",
+   *                       "[LOCATION]",
+   *                       "[KEY_RING]",
+   *                       "[CRYPTO_KEY]",
+   *                       "[CRYPTO_KEY_VERSION]")
+   *                   .toString())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.destroyCryptoKeyVersionCallable().futureCall(request);
+   *   // Do something.
+   *   CryptoKeyVersion response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable + destroyCryptoKeyVersionCallable() { + return stub.destroyCryptoKeyVersionCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Restore a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] in the + * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED] + * state. + * + *

Upon restoration of the CryptoKeyVersion, + * [state][google.cloud.kms.v1.CryptoKeyVersion.state] will be set to + * [DISABLED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DISABLED], and + * [destroy_time][google.cloud.kms.v1.CryptoKeyVersion.destroy_time] will be cleared. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   CryptoKeyVersionName name =
+   *       CryptoKeyVersionName.of(
+   *           "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]");
+   *   CryptoKeyVersion response = keyManagementServiceClient.restoreCryptoKeyVersion(name);
+   * }
+   * }
+ * + * @param name Required. The resource name of the + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to restore. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKeyVersion restoreCryptoKeyVersion(CryptoKeyVersionName name) { + RestoreCryptoKeyVersionRequest request = + RestoreCryptoKeyVersionRequest.newBuilder() + .setName(name == null ? null : name.toString()) + .build(); + return restoreCryptoKeyVersion(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Restore a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] in the + * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED] + * state. + * + *

Upon restoration of the CryptoKeyVersion, + * [state][google.cloud.kms.v1.CryptoKeyVersion.state] will be set to + * [DISABLED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DISABLED], and + * [destroy_time][google.cloud.kms.v1.CryptoKeyVersion.destroy_time] will be cleared. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   String name =
+   *       CryptoKeyVersionName.of(
+   *               "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]")
+   *           .toString();
+   *   CryptoKeyVersion response = keyManagementServiceClient.restoreCryptoKeyVersion(name);
+   * }
+   * }
+ * + * @param name Required. The resource name of the + * [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] to restore. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKeyVersion restoreCryptoKeyVersion(String name) { + RestoreCryptoKeyVersionRequest request = + RestoreCryptoKeyVersionRequest.newBuilder().setName(name).build(); + return restoreCryptoKeyVersion(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Restore a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] in the + * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED] + * state. + * + *

Upon restoration of the CryptoKeyVersion, + * [state][google.cloud.kms.v1.CryptoKeyVersion.state] will be set to + * [DISABLED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DISABLED], and + * [destroy_time][google.cloud.kms.v1.CryptoKeyVersion.destroy_time] will be cleared. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   RestoreCryptoKeyVersionRequest request =
+   *       RestoreCryptoKeyVersionRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyVersionName.of(
+   *                       "[PROJECT]",
+   *                       "[LOCATION]",
+   *                       "[KEY_RING]",
+   *                       "[CRYPTO_KEY]",
+   *                       "[CRYPTO_KEY_VERSION]")
+   *                   .toString())
+   *           .build();
+   *   CryptoKeyVersion response = keyManagementServiceClient.restoreCryptoKeyVersion(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final CryptoKeyVersion restoreCryptoKeyVersion(RestoreCryptoKeyVersionRequest request) { + return restoreCryptoKeyVersionCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Restore a [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] in the + * [DESTROY_SCHEDULED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DESTROY_SCHEDULED] + * state. + * + *

Upon restoration of the CryptoKeyVersion, + * [state][google.cloud.kms.v1.CryptoKeyVersion.state] will be set to + * [DISABLED][google.cloud.kms.v1.CryptoKeyVersion.CryptoKeyVersionState.DISABLED], and + * [destroy_time][google.cloud.kms.v1.CryptoKeyVersion.destroy_time] will be cleared. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   RestoreCryptoKeyVersionRequest request =
+   *       RestoreCryptoKeyVersionRequest.newBuilder()
+   *           .setName(
+   *               CryptoKeyVersionName.of(
+   *                       "[PROJECT]",
+   *                       "[LOCATION]",
+   *                       "[KEY_RING]",
+   *                       "[CRYPTO_KEY]",
+   *                       "[CRYPTO_KEY_VERSION]")
+   *                   .toString())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.restoreCryptoKeyVersionCallable().futureCall(request);
+   *   // Do something.
+   *   CryptoKeyVersion response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable + restoreCryptoKeyVersionCallable() { + return stub.restoreCryptoKeyVersionCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sets the access control policy on the specified resource. Replaces any existing policy. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   SetIamPolicyRequest request =
+   *       SetIamPolicyRequest.newBuilder()
+   *           .setResource(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .setPolicy(Policy.newBuilder().build())
+   *           .build();
+   *   Policy response = keyManagementServiceClient.setIamPolicy(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Policy setIamPolicy(SetIamPolicyRequest request) { + return setIamPolicyCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sets the access control policy on the specified resource. Replaces any existing policy. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   SetIamPolicyRequest request =
+   *       SetIamPolicyRequest.newBuilder()
+   *           .setResource(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .setPolicy(Policy.newBuilder().build())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.setIamPolicyCallable().futureCall(request);
+   *   // Do something.
+   *   Policy response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable setIamPolicyCallable() { + return stub.setIamPolicyCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Gets the access control policy for a resource. Returns an empty policy if the resource exists + * and does not have a policy set. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   GetIamPolicyRequest request =
+   *       GetIamPolicyRequest.newBuilder()
+   *           .setResource(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .setOptions(GetPolicyOptions.newBuilder().build())
+   *           .build();
+   *   Policy response = keyManagementServiceClient.getIamPolicy(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final Policy getIamPolicy(GetIamPolicyRequest request) { + return getIamPolicyCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Gets the access control policy for a resource. Returns an empty policy if the resource exists + * and does not have a policy set. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   GetIamPolicyRequest request =
+   *       GetIamPolicyRequest.newBuilder()
+   *           .setResource(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .setOptions(GetPolicyOptions.newBuilder().build())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.getIamPolicyCallable().futureCall(request);
+   *   // Do something.
+   *   Policy response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable getIamPolicyCallable() { + return stub.getIamPolicyCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns permissions that a caller has on the specified resource. If the resource does not + * exist, this will return an empty set of permissions, not a NOT_FOUND error. + * + *

Note: This operation is designed to be used for building permission-aware UIs and + * command-line tools, not for authorization checking. This operation may "fail open" without + * warning. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   TestIamPermissionsRequest request =
+   *       TestIamPermissionsRequest.newBuilder()
+   *           .setResource(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .addAllPermissions(new ArrayList())
+   *           .build();
+   *   TestIamPermissionsResponse response = keyManagementServiceClient.testIamPermissions(request);
+   * }
+   * }
+ * + * @param request The request object containing all of the parameters for the API call. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final TestIamPermissionsResponse testIamPermissions(TestIamPermissionsRequest request) { + return testIamPermissionsCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Returns permissions that a caller has on the specified resource. If the resource does not + * exist, this will return an empty set of permissions, not a NOT_FOUND error. + * + *

Note: This operation is designed to be used for building permission-aware UIs and + * command-line tools, not for authorization checking. This operation may "fail open" without + * warning. + * + *

Sample code: + * + *

{@code
+   * try (KeyManagementServiceClient keyManagementServiceClient =
+   *     KeyManagementServiceClient.create()) {
+   *   TestIamPermissionsRequest request =
+   *       TestIamPermissionsRequest.newBuilder()
+   *           .setResource(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString())
+   *           .addAllPermissions(new ArrayList())
+   *           .build();
+   *   ApiFuture future =
+   *       keyManagementServiceClient.testIamPermissionsCallable().futureCall(request);
+   *   // Do something.
+   *   TestIamPermissionsResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable + testIamPermissionsCallable() { + return stub.testIamPermissionsCallable(); + } + + @Override + public final void close() { + stub.close(); + } + + @Override + public void shutdown() { + stub.shutdown(); + } + + @Override + public boolean isShutdown() { + return stub.isShutdown(); + } + + @Override + public boolean isTerminated() { + return stub.isTerminated(); + } + + @Override + public void shutdownNow() { + stub.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return stub.awaitTermination(duration, unit); + } + + public static class ListKeyRingsPagedResponse + extends AbstractPagedListResponse< + ListKeyRingsRequest, + ListKeyRingsResponse, + KeyRing, + ListKeyRingsPage, + ListKeyRingsFixedSizeCollection> { + + public static ApiFuture createAsync( + PageContext context, + ApiFuture futureResponse) { + ApiFuture futurePage = + ListKeyRingsPage.createEmptyPage().createPageAsync(context, futureResponse); + return ApiFutures.transform( + futurePage, + new ApiFunction() { + @Override + public ListKeyRingsPagedResponse apply(ListKeyRingsPage input) { + return new ListKeyRingsPagedResponse(input); + } + }, + MoreExecutors.directExecutor()); + } + + private ListKeyRingsPagedResponse(ListKeyRingsPage page) { + super(page, ListKeyRingsFixedSizeCollection.createEmptyCollection()); + } + } + + public static class ListKeyRingsPage + extends AbstractPage { + + private ListKeyRingsPage( + PageContext context, + ListKeyRingsResponse response) { + super(context, response); + } + + private static ListKeyRingsPage createEmptyPage() { + return new ListKeyRingsPage(null, null); + } + + @Override + protected ListKeyRingsPage createPage( + PageContext context, + ListKeyRingsResponse response) { + return new ListKeyRingsPage(context, response); + } + + @Override + public ApiFuture createPageAsync( + PageContext context, + ApiFuture futureResponse) { + return super.createPageAsync(context, futureResponse); + } + } + + public static class ListKeyRingsFixedSizeCollection + extends AbstractFixedSizeCollection< + ListKeyRingsRequest, + ListKeyRingsResponse, + KeyRing, + ListKeyRingsPage, + ListKeyRingsFixedSizeCollection> { + + private ListKeyRingsFixedSizeCollection(List pages, int collectionSize) { + super(pages, collectionSize); + } + + private static ListKeyRingsFixedSizeCollection createEmptyCollection() { + return new ListKeyRingsFixedSizeCollection(null, 0); + } + + @Override + protected ListKeyRingsFixedSizeCollection createCollection( + List pages, int collectionSize) { + return new ListKeyRingsFixedSizeCollection(pages, collectionSize); + } + } + + public static class ListCryptoKeysPagedResponse + extends AbstractPagedListResponse< + ListCryptoKeysRequest, + ListCryptoKeysResponse, + CryptoKey, + ListCryptoKeysPage, + ListCryptoKeysFixedSizeCollection> { + + public static ApiFuture createAsync( + PageContext context, + ApiFuture futureResponse) { + ApiFuture futurePage = + ListCryptoKeysPage.createEmptyPage().createPageAsync(context, futureResponse); + return ApiFutures.transform( + futurePage, + new ApiFunction() { + @Override + public ListCryptoKeysPagedResponse apply(ListCryptoKeysPage input) { + return new ListCryptoKeysPagedResponse(input); + } + }, + MoreExecutors.directExecutor()); + } + + private ListCryptoKeysPagedResponse(ListCryptoKeysPage page) { + super(page, ListCryptoKeysFixedSizeCollection.createEmptyCollection()); + } + } + + public static class ListCryptoKeysPage + extends AbstractPage< + ListCryptoKeysRequest, ListCryptoKeysResponse, CryptoKey, ListCryptoKeysPage> { + + private ListCryptoKeysPage( + PageContext context, + ListCryptoKeysResponse response) { + super(context, response); + } + + private static ListCryptoKeysPage createEmptyPage() { + return new ListCryptoKeysPage(null, null); + } + + @Override + protected ListCryptoKeysPage createPage( + PageContext context, + ListCryptoKeysResponse response) { + return new ListCryptoKeysPage(context, response); + } + + @Override + public ApiFuture createPageAsync( + PageContext context, + ApiFuture futureResponse) { + return super.createPageAsync(context, futureResponse); + } + } + + public static class ListCryptoKeysFixedSizeCollection + extends AbstractFixedSizeCollection< + ListCryptoKeysRequest, + ListCryptoKeysResponse, + CryptoKey, + ListCryptoKeysPage, + ListCryptoKeysFixedSizeCollection> { + + private ListCryptoKeysFixedSizeCollection(List pages, int collectionSize) { + super(pages, collectionSize); + } + + private static ListCryptoKeysFixedSizeCollection createEmptyCollection() { + return new ListCryptoKeysFixedSizeCollection(null, 0); + } + + @Override + protected ListCryptoKeysFixedSizeCollection createCollection( + List pages, int collectionSize) { + return new ListCryptoKeysFixedSizeCollection(pages, collectionSize); + } + } + + public static class ListCryptoKeyVersionsPagedResponse + extends AbstractPagedListResponse< + ListCryptoKeyVersionsRequest, + ListCryptoKeyVersionsResponse, + CryptoKeyVersion, + ListCryptoKeyVersionsPage, + ListCryptoKeyVersionsFixedSizeCollection> { + + public static ApiFuture createAsync( + PageContext + context, + ApiFuture futureResponse) { + ApiFuture futurePage = + ListCryptoKeyVersionsPage.createEmptyPage().createPageAsync(context, futureResponse); + return ApiFutures.transform( + futurePage, + new ApiFunction() { + @Override + public ListCryptoKeyVersionsPagedResponse apply(ListCryptoKeyVersionsPage input) { + return new ListCryptoKeyVersionsPagedResponse(input); + } + }, + MoreExecutors.directExecutor()); + } + + private ListCryptoKeyVersionsPagedResponse(ListCryptoKeyVersionsPage page) { + super(page, ListCryptoKeyVersionsFixedSizeCollection.createEmptyCollection()); + } + } + + public static class ListCryptoKeyVersionsPage + extends AbstractPage< + ListCryptoKeyVersionsRequest, + ListCryptoKeyVersionsResponse, + CryptoKeyVersion, + ListCryptoKeyVersionsPage> { + + private ListCryptoKeyVersionsPage( + PageContext + context, + ListCryptoKeyVersionsResponse response) { + super(context, response); + } + + private static ListCryptoKeyVersionsPage createEmptyPage() { + return new ListCryptoKeyVersionsPage(null, null); + } + + @Override + protected ListCryptoKeyVersionsPage createPage( + PageContext + context, + ListCryptoKeyVersionsResponse response) { + return new ListCryptoKeyVersionsPage(context, response); + } + + @Override + public ApiFuture createPageAsync( + PageContext + context, + ApiFuture futureResponse) { + return super.createPageAsync(context, futureResponse); + } + } + + public static class ListCryptoKeyVersionsFixedSizeCollection + extends AbstractFixedSizeCollection< + ListCryptoKeyVersionsRequest, + ListCryptoKeyVersionsResponse, + CryptoKeyVersion, + ListCryptoKeyVersionsPage, + ListCryptoKeyVersionsFixedSizeCollection> { + + private ListCryptoKeyVersionsFixedSizeCollection( + List pages, int collectionSize) { + super(pages, collectionSize); + } + + private static ListCryptoKeyVersionsFixedSizeCollection createEmptyCollection() { + return new ListCryptoKeyVersionsFixedSizeCollection(null, 0); + } + + @Override + protected ListCryptoKeyVersionsFixedSizeCollection createCollection( + List pages, int collectionSize) { + return new ListCryptoKeyVersionsFixedSizeCollection(pages, collectionSize); + } + } + + public static class ListImportJobsPagedResponse + extends AbstractPagedListResponse< + ListImportJobsRequest, + ListImportJobsResponse, + ImportJob, + ListImportJobsPage, + ListImportJobsFixedSizeCollection> { + + public static ApiFuture createAsync( + PageContext context, + ApiFuture futureResponse) { + ApiFuture futurePage = + ListImportJobsPage.createEmptyPage().createPageAsync(context, futureResponse); + return ApiFutures.transform( + futurePage, + new ApiFunction() { + @Override + public ListImportJobsPagedResponse apply(ListImportJobsPage input) { + return new ListImportJobsPagedResponse(input); + } + }, + MoreExecutors.directExecutor()); + } + + private ListImportJobsPagedResponse(ListImportJobsPage page) { + super(page, ListImportJobsFixedSizeCollection.createEmptyCollection()); + } + } + + public static class ListImportJobsPage + extends AbstractPage< + ListImportJobsRequest, ListImportJobsResponse, ImportJob, ListImportJobsPage> { + + private ListImportJobsPage( + PageContext context, + ListImportJobsResponse response) { + super(context, response); + } + + private static ListImportJobsPage createEmptyPage() { + return new ListImportJobsPage(null, null); + } + + @Override + protected ListImportJobsPage createPage( + PageContext context, + ListImportJobsResponse response) { + return new ListImportJobsPage(context, response); + } + + @Override + public ApiFuture createPageAsync( + PageContext context, + ApiFuture futureResponse) { + return super.createPageAsync(context, futureResponse); + } + } + + public static class ListImportJobsFixedSizeCollection + extends AbstractFixedSizeCollection< + ListImportJobsRequest, + ListImportJobsResponse, + ImportJob, + ListImportJobsPage, + ListImportJobsFixedSizeCollection> { + + private ListImportJobsFixedSizeCollection(List pages, int collectionSize) { + super(pages, collectionSize); + } + + private static ListImportJobsFixedSizeCollection createEmptyCollection() { + return new ListImportJobsFixedSizeCollection(null, 0); + } + + @Override + protected ListImportJobsFixedSizeCollection createCollection( + List pages, int collectionSize) { + return new ListImportJobsFixedSizeCollection(pages, collectionSize); + } + } +} diff --git a/test/integration/goldens/kms/KeyManagementServiceClientTest.java b/test/integration/goldens/kms/KeyManagementServiceClientTest.java new file mode 100644 index 0000000000..e185914bd3 --- /dev/null +++ b/test/integration/goldens/kms/KeyManagementServiceClientTest.java @@ -0,0 +1,2360 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.kms.v1; + +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListCryptoKeyVersionsPagedResponse; +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListCryptoKeysPagedResponse; +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListImportJobsPagedResponse; +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListKeyRingsPagedResponse; + +import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.grpc.GaxGrpcProperties; +import com.google.api.gax.grpc.testing.LocalChannelProvider; +import com.google.api.gax.grpc.testing.MockGrpcService; +import com.google.api.gax.grpc.testing.MockServiceHelper; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.api.resourcenames.ResourceName; +import com.google.common.collect.Lists; +import com.google.iam.v1.Binding; +import com.google.iam.v1.GetIamPolicyRequest; +import com.google.iam.v1.GetPolicyOptions; +import com.google.iam.v1.MockIAMPolicy; +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.AbstractMessage; +import com.google.protobuf.ByteString; +import com.google.protobuf.FieldMask; +import com.google.protobuf.Int64Value; +import com.google.protobuf.Timestamp; +import io.grpc.StatusRuntimeException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; +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 KeyManagementServiceClientTest { + private static MockKeyManagementService mockKeyManagementService; + private static MockServiceHelper mockServiceHelper; + private KeyManagementServiceClient client; + private static MockIAMPolicy mockIAMPolicy; + private LocalChannelProvider channelProvider; + + @BeforeClass + public static void startStaticServer() { + mockKeyManagementService = new MockKeyManagementService(); + mockIAMPolicy = new MockIAMPolicy(); + mockServiceHelper = + new MockServiceHelper( + UUID.randomUUID().toString(), + Arrays.asList(mockKeyManagementService, mockIAMPolicy)); + mockServiceHelper.start(); + } + + @AfterClass + public static void stopServer() { + mockServiceHelper.stop(); + } + + @Before + public void setUp() throws IOException { + mockServiceHelper.reset(); + channelProvider = mockServiceHelper.createChannelProvider(); + KeyManagementServiceSettings settings = + KeyManagementServiceSettings.newBuilder() + .setTransportChannelProvider(channelProvider) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = KeyManagementServiceClient.create(settings); + } + + @After + public void tearDown() throws Exception { + client.close(); + } + + @Test + public void listKeyRingsTest() throws Exception { + KeyRing responsesElement = KeyRing.newBuilder().build(); + ListKeyRingsResponse expectedResponse = + ListKeyRingsResponse.newBuilder() + .setNextPageToken("") + .addAllKeyRings(Arrays.asList(responsesElement)) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); + + ListKeyRingsPagedResponse pagedListResponse = client.listKeyRings(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getKeyRingsList().get(0), resources.get(0)); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListKeyRingsRequest actualRequest = ((ListKeyRingsRequest) actualRequests.get(0)); + + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listKeyRingsExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); + client.listKeyRings(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listKeyRingsTest2() throws Exception { + KeyRing responsesElement = KeyRing.newBuilder().build(); + ListKeyRingsResponse expectedResponse = + ListKeyRingsResponse.newBuilder() + .setNextPageToken("") + .addAllKeyRings(Arrays.asList(responsesElement)) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String parent = "parent-995424086"; + + ListKeyRingsPagedResponse pagedListResponse = client.listKeyRings(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getKeyRingsList().get(0), resources.get(0)); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListKeyRingsRequest actualRequest = ((ListKeyRingsRequest) actualRequests.get(0)); + + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listKeyRingsExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String parent = "parent-995424086"; + client.listKeyRings(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listCryptoKeysTest() throws Exception { + CryptoKey responsesElement = CryptoKey.newBuilder().build(); + ListCryptoKeysResponse expectedResponse = + ListCryptoKeysResponse.newBuilder() + .setNextPageToken("") + .addAllCryptoKeys(Arrays.asList(responsesElement)) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + KeyRingName parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]"); + + ListCryptoKeysPagedResponse pagedListResponse = client.listCryptoKeys(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getCryptoKeysList().get(0), resources.get(0)); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListCryptoKeysRequest actualRequest = ((ListCryptoKeysRequest) actualRequests.get(0)); + + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listCryptoKeysExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + KeyRingName parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]"); + client.listCryptoKeys(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listCryptoKeysTest2() throws Exception { + CryptoKey responsesElement = CryptoKey.newBuilder().build(); + ListCryptoKeysResponse expectedResponse = + ListCryptoKeysResponse.newBuilder() + .setNextPageToken("") + .addAllCryptoKeys(Arrays.asList(responsesElement)) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String parent = "parent-995424086"; + + ListCryptoKeysPagedResponse pagedListResponse = client.listCryptoKeys(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getCryptoKeysList().get(0), resources.get(0)); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListCryptoKeysRequest actualRequest = ((ListCryptoKeysRequest) actualRequests.get(0)); + + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listCryptoKeysExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String parent = "parent-995424086"; + client.listCryptoKeys(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listCryptoKeyVersionsTest() throws Exception { + CryptoKeyVersion responsesElement = CryptoKeyVersion.newBuilder().build(); + ListCryptoKeyVersionsResponse expectedResponse = + ListCryptoKeyVersionsResponse.newBuilder() + .setNextPageToken("") + .addAllCryptoKeyVersions(Arrays.asList(responsesElement)) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + CryptoKeyName parent = + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + + ListCryptoKeyVersionsPagedResponse pagedListResponse = client.listCryptoKeyVersions(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getCryptoKeyVersionsList().get(0), resources.get(0)); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListCryptoKeyVersionsRequest actualRequest = + ((ListCryptoKeyVersionsRequest) actualRequests.get(0)); + + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listCryptoKeyVersionsExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + CryptoKeyName parent = + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + client.listCryptoKeyVersions(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listCryptoKeyVersionsTest2() throws Exception { + CryptoKeyVersion responsesElement = CryptoKeyVersion.newBuilder().build(); + ListCryptoKeyVersionsResponse expectedResponse = + ListCryptoKeyVersionsResponse.newBuilder() + .setNextPageToken("") + .addAllCryptoKeyVersions(Arrays.asList(responsesElement)) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String parent = "parent-995424086"; + + ListCryptoKeyVersionsPagedResponse pagedListResponse = client.listCryptoKeyVersions(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getCryptoKeyVersionsList().get(0), resources.get(0)); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListCryptoKeyVersionsRequest actualRequest = + ((ListCryptoKeyVersionsRequest) actualRequests.get(0)); + + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listCryptoKeyVersionsExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String parent = "parent-995424086"; + client.listCryptoKeyVersions(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listImportJobsTest() throws Exception { + ImportJob responsesElement = ImportJob.newBuilder().build(); + ListImportJobsResponse expectedResponse = + ListImportJobsResponse.newBuilder() + .setNextPageToken("") + .addAllImportJobs(Arrays.asList(responsesElement)) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + KeyRingName parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]"); + + ListImportJobsPagedResponse pagedListResponse = client.listImportJobs(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getImportJobsList().get(0), resources.get(0)); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListImportJobsRequest actualRequest = ((ListImportJobsRequest) actualRequests.get(0)); + + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listImportJobsExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + KeyRingName parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]"); + client.listImportJobs(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listImportJobsTest2() throws Exception { + ImportJob responsesElement = ImportJob.newBuilder().build(); + ListImportJobsResponse expectedResponse = + ListImportJobsResponse.newBuilder() + .setNextPageToken("") + .addAllImportJobs(Arrays.asList(responsesElement)) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String parent = "parent-995424086"; + + ListImportJobsPagedResponse pagedListResponse = client.listImportJobs(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getImportJobsList().get(0), resources.get(0)); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListImportJobsRequest actualRequest = ((ListImportJobsRequest) actualRequests.get(0)); + + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listImportJobsExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String parent = "parent-995424086"; + client.listImportJobs(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getKeyRingTest() throws Exception { + KeyRing expectedResponse = + KeyRing.newBuilder() + .setName(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString()) + .setCreateTime(Timestamp.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + KeyRingName name = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]"); + + KeyRing actualResponse = client.getKeyRing(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetKeyRingRequest actualRequest = ((GetKeyRingRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getKeyRingExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + KeyRingName name = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]"); + client.getKeyRing(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getKeyRingTest2() throws Exception { + KeyRing expectedResponse = + KeyRing.newBuilder() + .setName(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString()) + .setCreateTime(Timestamp.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String name = "name3373707"; + + KeyRing actualResponse = client.getKeyRing(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetKeyRingRequest actualRequest = ((GetKeyRingRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getKeyRingExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String name = "name3373707"; + client.getKeyRing(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getCryptoKeyTest() throws Exception { + CryptoKey expectedResponse = + CryptoKey.newBuilder() + .setName( + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]") + .toString()) + .setPrimary(CryptoKeyVersion.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setNextRotationTime(Timestamp.newBuilder().build()) + .setVersionTemplate(CryptoKeyVersionTemplate.newBuilder().build()) + .putAllLabels(new HashMap()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + CryptoKeyName name = CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + + CryptoKey actualResponse = client.getCryptoKey(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetCryptoKeyRequest actualRequest = ((GetCryptoKeyRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getCryptoKeyExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + CryptoKeyName name = + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + client.getCryptoKey(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getCryptoKeyTest2() throws Exception { + CryptoKey expectedResponse = + CryptoKey.newBuilder() + .setName( + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]") + .toString()) + .setPrimary(CryptoKeyVersion.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setNextRotationTime(Timestamp.newBuilder().build()) + .setVersionTemplate(CryptoKeyVersionTemplate.newBuilder().build()) + .putAllLabels(new HashMap()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String name = "name3373707"; + + CryptoKey actualResponse = client.getCryptoKey(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetCryptoKeyRequest actualRequest = ((GetCryptoKeyRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getCryptoKeyExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String name = "name3373707"; + client.getCryptoKey(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getCryptoKeyVersionTest() throws Exception { + CryptoKeyVersion expectedResponse = + CryptoKeyVersion.newBuilder() + .setName( + CryptoKeyVersionName.of( + "[PROJECT]", + "[LOCATION]", + "[KEY_RING]", + "[CRYPTO_KEY]", + "[CRYPTO_KEY_VERSION]") + .toString()) + .setProtectionLevel(ProtectionLevel.forNumber(0)) + .setAttestation(KeyOperationAttestation.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setGenerateTime(Timestamp.newBuilder().build()) + .setDestroyTime(Timestamp.newBuilder().build()) + .setDestroyEventTime(Timestamp.newBuilder().build()) + .setImportJob("importJob-208547368") + .setImportTime(Timestamp.newBuilder().build()) + .setImportFailureReason("importFailureReason985493705") + .setExternalProtectionLevelOptions(ExternalProtectionLevelOptions.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + CryptoKeyVersionName name = + CryptoKeyVersionName.of( + "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]"); + + CryptoKeyVersion actualResponse = client.getCryptoKeyVersion(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetCryptoKeyVersionRequest actualRequest = ((GetCryptoKeyVersionRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getCryptoKeyVersionExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + CryptoKeyVersionName name = + CryptoKeyVersionName.of( + "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]"); + client.getCryptoKeyVersion(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getCryptoKeyVersionTest2() throws Exception { + CryptoKeyVersion expectedResponse = + CryptoKeyVersion.newBuilder() + .setName( + CryptoKeyVersionName.of( + "[PROJECT]", + "[LOCATION]", + "[KEY_RING]", + "[CRYPTO_KEY]", + "[CRYPTO_KEY_VERSION]") + .toString()) + .setProtectionLevel(ProtectionLevel.forNumber(0)) + .setAttestation(KeyOperationAttestation.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setGenerateTime(Timestamp.newBuilder().build()) + .setDestroyTime(Timestamp.newBuilder().build()) + .setDestroyEventTime(Timestamp.newBuilder().build()) + .setImportJob("importJob-208547368") + .setImportTime(Timestamp.newBuilder().build()) + .setImportFailureReason("importFailureReason985493705") + .setExternalProtectionLevelOptions(ExternalProtectionLevelOptions.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String name = "name3373707"; + + CryptoKeyVersion actualResponse = client.getCryptoKeyVersion(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetCryptoKeyVersionRequest actualRequest = ((GetCryptoKeyVersionRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getCryptoKeyVersionExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String name = "name3373707"; + client.getCryptoKeyVersion(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getPublicKeyTest() throws Exception { + PublicKey expectedResponse = + PublicKey.newBuilder() + .setPem("pem110872") + .setPemCrc32C(Int64Value.newBuilder().build()) + .setName( + PublicKeyName.of( + "[PROJECT]", + "[LOCATION]", + "[KEY_RING]", + "[CRYPTO_KEY]", + "[CRYPTO_KEY_VERSION]") + .toString()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + CryptoKeyVersionName name = + CryptoKeyVersionName.of( + "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]"); + + PublicKey actualResponse = client.getPublicKey(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetPublicKeyRequest actualRequest = ((GetPublicKeyRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getPublicKeyExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + CryptoKeyVersionName name = + CryptoKeyVersionName.of( + "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]"); + client.getPublicKey(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getPublicKeyTest2() throws Exception { + PublicKey expectedResponse = + PublicKey.newBuilder() + .setPem("pem110872") + .setPemCrc32C(Int64Value.newBuilder().build()) + .setName( + PublicKeyName.of( + "[PROJECT]", + "[LOCATION]", + "[KEY_RING]", + "[CRYPTO_KEY]", + "[CRYPTO_KEY_VERSION]") + .toString()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String name = "name3373707"; + + PublicKey actualResponse = client.getPublicKey(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetPublicKeyRequest actualRequest = ((GetPublicKeyRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getPublicKeyExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String name = "name3373707"; + client.getPublicKey(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getImportJobTest() throws Exception { + ImportJob expectedResponse = + ImportJob.newBuilder() + .setName( + ImportJobName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[IMPORT_JOB]") + .toString()) + .setProtectionLevel(ProtectionLevel.forNumber(0)) + .setCreateTime(Timestamp.newBuilder().build()) + .setGenerateTime(Timestamp.newBuilder().build()) + .setExpireTime(Timestamp.newBuilder().build()) + .setExpireEventTime(Timestamp.newBuilder().build()) + .setPublicKey(ImportJob.WrappingPublicKey.newBuilder().build()) + .setAttestation(KeyOperationAttestation.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + ImportJobName name = ImportJobName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[IMPORT_JOB]"); + + ImportJob actualResponse = client.getImportJob(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetImportJobRequest actualRequest = ((GetImportJobRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getImportJobExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + ImportJobName name = + ImportJobName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[IMPORT_JOB]"); + client.getImportJob(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void getImportJobTest2() throws Exception { + ImportJob expectedResponse = + ImportJob.newBuilder() + .setName( + ImportJobName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[IMPORT_JOB]") + .toString()) + .setProtectionLevel(ProtectionLevel.forNumber(0)) + .setCreateTime(Timestamp.newBuilder().build()) + .setGenerateTime(Timestamp.newBuilder().build()) + .setExpireTime(Timestamp.newBuilder().build()) + .setExpireEventTime(Timestamp.newBuilder().build()) + .setPublicKey(ImportJob.WrappingPublicKey.newBuilder().build()) + .setAttestation(KeyOperationAttestation.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String name = "name3373707"; + + ImportJob actualResponse = client.getImportJob(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetImportJobRequest actualRequest = ((GetImportJobRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getImportJobExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String name = "name3373707"; + client.getImportJob(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void createKeyRingTest() throws Exception { + KeyRing expectedResponse = + KeyRing.newBuilder() + .setName(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString()) + .setCreateTime(Timestamp.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); + String keyRingId = "keyRingId-2027180374"; + KeyRing keyRing = KeyRing.newBuilder().build(); + + KeyRing actualResponse = client.createKeyRing(parent, keyRingId, keyRing); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CreateKeyRingRequest actualRequest = ((CreateKeyRingRequest) actualRequests.get(0)); + + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertEquals(keyRingId, actualRequest.getKeyRingId()); + Assert.assertEquals(keyRing, actualRequest.getKeyRing()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void createKeyRingExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + LocationName parent = LocationName.of("[PROJECT]", "[LOCATION]"); + String keyRingId = "keyRingId-2027180374"; + KeyRing keyRing = KeyRing.newBuilder().build(); + client.createKeyRing(parent, keyRingId, keyRing); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void createKeyRingTest2() throws Exception { + KeyRing expectedResponse = + KeyRing.newBuilder() + .setName(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString()) + .setCreateTime(Timestamp.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String parent = "parent-995424086"; + String keyRingId = "keyRingId-2027180374"; + KeyRing keyRing = KeyRing.newBuilder().build(); + + KeyRing actualResponse = client.createKeyRing(parent, keyRingId, keyRing); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CreateKeyRingRequest actualRequest = ((CreateKeyRingRequest) actualRequests.get(0)); + + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertEquals(keyRingId, actualRequest.getKeyRingId()); + Assert.assertEquals(keyRing, actualRequest.getKeyRing()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void createKeyRingExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String parent = "parent-995424086"; + String keyRingId = "keyRingId-2027180374"; + KeyRing keyRing = KeyRing.newBuilder().build(); + client.createKeyRing(parent, keyRingId, keyRing); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void createCryptoKeyTest() throws Exception { + CryptoKey expectedResponse = + CryptoKey.newBuilder() + .setName( + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]") + .toString()) + .setPrimary(CryptoKeyVersion.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setNextRotationTime(Timestamp.newBuilder().build()) + .setVersionTemplate(CryptoKeyVersionTemplate.newBuilder().build()) + .putAllLabels(new HashMap()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + KeyRingName parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]"); + String cryptoKeyId = "cryptoKeyId-1643185255"; + CryptoKey cryptoKey = CryptoKey.newBuilder().build(); + + CryptoKey actualResponse = client.createCryptoKey(parent, cryptoKeyId, cryptoKey); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CreateCryptoKeyRequest actualRequest = ((CreateCryptoKeyRequest) actualRequests.get(0)); + + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertEquals(cryptoKeyId, actualRequest.getCryptoKeyId()); + Assert.assertEquals(cryptoKey, actualRequest.getCryptoKey()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void createCryptoKeyExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + KeyRingName parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]"); + String cryptoKeyId = "cryptoKeyId-1643185255"; + CryptoKey cryptoKey = CryptoKey.newBuilder().build(); + client.createCryptoKey(parent, cryptoKeyId, cryptoKey); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void createCryptoKeyTest2() throws Exception { + CryptoKey expectedResponse = + CryptoKey.newBuilder() + .setName( + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]") + .toString()) + .setPrimary(CryptoKeyVersion.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setNextRotationTime(Timestamp.newBuilder().build()) + .setVersionTemplate(CryptoKeyVersionTemplate.newBuilder().build()) + .putAllLabels(new HashMap()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String parent = "parent-995424086"; + String cryptoKeyId = "cryptoKeyId-1643185255"; + CryptoKey cryptoKey = CryptoKey.newBuilder().build(); + + CryptoKey actualResponse = client.createCryptoKey(parent, cryptoKeyId, cryptoKey); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CreateCryptoKeyRequest actualRequest = ((CreateCryptoKeyRequest) actualRequests.get(0)); + + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertEquals(cryptoKeyId, actualRequest.getCryptoKeyId()); + Assert.assertEquals(cryptoKey, actualRequest.getCryptoKey()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void createCryptoKeyExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String parent = "parent-995424086"; + String cryptoKeyId = "cryptoKeyId-1643185255"; + CryptoKey cryptoKey = CryptoKey.newBuilder().build(); + client.createCryptoKey(parent, cryptoKeyId, cryptoKey); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void createCryptoKeyVersionTest() throws Exception { + CryptoKeyVersion expectedResponse = + CryptoKeyVersion.newBuilder() + .setName( + CryptoKeyVersionName.of( + "[PROJECT]", + "[LOCATION]", + "[KEY_RING]", + "[CRYPTO_KEY]", + "[CRYPTO_KEY_VERSION]") + .toString()) + .setProtectionLevel(ProtectionLevel.forNumber(0)) + .setAttestation(KeyOperationAttestation.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setGenerateTime(Timestamp.newBuilder().build()) + .setDestroyTime(Timestamp.newBuilder().build()) + .setDestroyEventTime(Timestamp.newBuilder().build()) + .setImportJob("importJob-208547368") + .setImportTime(Timestamp.newBuilder().build()) + .setImportFailureReason("importFailureReason985493705") + .setExternalProtectionLevelOptions(ExternalProtectionLevelOptions.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + CryptoKeyName parent = + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + CryptoKeyVersion cryptoKeyVersion = CryptoKeyVersion.newBuilder().build(); + + CryptoKeyVersion actualResponse = client.createCryptoKeyVersion(parent, cryptoKeyVersion); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CreateCryptoKeyVersionRequest actualRequest = + ((CreateCryptoKeyVersionRequest) actualRequests.get(0)); + + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertEquals(cryptoKeyVersion, actualRequest.getCryptoKeyVersion()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void createCryptoKeyVersionExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + CryptoKeyName parent = + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + CryptoKeyVersion cryptoKeyVersion = CryptoKeyVersion.newBuilder().build(); + client.createCryptoKeyVersion(parent, cryptoKeyVersion); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void createCryptoKeyVersionTest2() throws Exception { + CryptoKeyVersion expectedResponse = + CryptoKeyVersion.newBuilder() + .setName( + CryptoKeyVersionName.of( + "[PROJECT]", + "[LOCATION]", + "[KEY_RING]", + "[CRYPTO_KEY]", + "[CRYPTO_KEY_VERSION]") + .toString()) + .setProtectionLevel(ProtectionLevel.forNumber(0)) + .setAttestation(KeyOperationAttestation.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setGenerateTime(Timestamp.newBuilder().build()) + .setDestroyTime(Timestamp.newBuilder().build()) + .setDestroyEventTime(Timestamp.newBuilder().build()) + .setImportJob("importJob-208547368") + .setImportTime(Timestamp.newBuilder().build()) + .setImportFailureReason("importFailureReason985493705") + .setExternalProtectionLevelOptions(ExternalProtectionLevelOptions.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String parent = "parent-995424086"; + CryptoKeyVersion cryptoKeyVersion = CryptoKeyVersion.newBuilder().build(); + + CryptoKeyVersion actualResponse = client.createCryptoKeyVersion(parent, cryptoKeyVersion); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CreateCryptoKeyVersionRequest actualRequest = + ((CreateCryptoKeyVersionRequest) actualRequests.get(0)); + + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertEquals(cryptoKeyVersion, actualRequest.getCryptoKeyVersion()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void createCryptoKeyVersionExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String parent = "parent-995424086"; + CryptoKeyVersion cryptoKeyVersion = CryptoKeyVersion.newBuilder().build(); + client.createCryptoKeyVersion(parent, cryptoKeyVersion); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void importCryptoKeyVersionTest() throws Exception { + CryptoKeyVersion expectedResponse = + CryptoKeyVersion.newBuilder() + .setName( + CryptoKeyVersionName.of( + "[PROJECT]", + "[LOCATION]", + "[KEY_RING]", + "[CRYPTO_KEY]", + "[CRYPTO_KEY_VERSION]") + .toString()) + .setProtectionLevel(ProtectionLevel.forNumber(0)) + .setAttestation(KeyOperationAttestation.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setGenerateTime(Timestamp.newBuilder().build()) + .setDestroyTime(Timestamp.newBuilder().build()) + .setDestroyEventTime(Timestamp.newBuilder().build()) + .setImportJob("importJob-208547368") + .setImportTime(Timestamp.newBuilder().build()) + .setImportFailureReason("importFailureReason985493705") + .setExternalProtectionLevelOptions(ExternalProtectionLevelOptions.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + ImportCryptoKeyVersionRequest request = + ImportCryptoKeyVersionRequest.newBuilder() + .setParent( + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]") + .toString()) + .setImportJob("importJob-208547368") + .build(); + + CryptoKeyVersion actualResponse = client.importCryptoKeyVersion(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ImportCryptoKeyVersionRequest actualRequest = + ((ImportCryptoKeyVersionRequest) actualRequests.get(0)); + + Assert.assertEquals(request.getParent(), actualRequest.getParent()); + Assert.assertEquals(request.getAlgorithm(), actualRequest.getAlgorithm()); + Assert.assertEquals(request.getImportJob(), actualRequest.getImportJob()); + Assert.assertEquals(request.getRsaAesWrappedKey(), actualRequest.getRsaAesWrappedKey()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void importCryptoKeyVersionExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + ImportCryptoKeyVersionRequest request = + ImportCryptoKeyVersionRequest.newBuilder() + .setParent( + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]") + .toString()) + .setImportJob("importJob-208547368") + .build(); + client.importCryptoKeyVersion(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void createImportJobTest() throws Exception { + ImportJob expectedResponse = + ImportJob.newBuilder() + .setName( + ImportJobName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[IMPORT_JOB]") + .toString()) + .setProtectionLevel(ProtectionLevel.forNumber(0)) + .setCreateTime(Timestamp.newBuilder().build()) + .setGenerateTime(Timestamp.newBuilder().build()) + .setExpireTime(Timestamp.newBuilder().build()) + .setExpireEventTime(Timestamp.newBuilder().build()) + .setPublicKey(ImportJob.WrappingPublicKey.newBuilder().build()) + .setAttestation(KeyOperationAttestation.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + KeyRingName parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]"); + String importJobId = "importJobId1449444627"; + ImportJob importJob = ImportJob.newBuilder().build(); + + ImportJob actualResponse = client.createImportJob(parent, importJobId, importJob); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CreateImportJobRequest actualRequest = ((CreateImportJobRequest) actualRequests.get(0)); + + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertEquals(importJobId, actualRequest.getImportJobId()); + Assert.assertEquals(importJob, actualRequest.getImportJob()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void createImportJobExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + KeyRingName parent = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]"); + String importJobId = "importJobId1449444627"; + ImportJob importJob = ImportJob.newBuilder().build(); + client.createImportJob(parent, importJobId, importJob); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void createImportJobTest2() throws Exception { + ImportJob expectedResponse = + ImportJob.newBuilder() + .setName( + ImportJobName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[IMPORT_JOB]") + .toString()) + .setProtectionLevel(ProtectionLevel.forNumber(0)) + .setCreateTime(Timestamp.newBuilder().build()) + .setGenerateTime(Timestamp.newBuilder().build()) + .setExpireTime(Timestamp.newBuilder().build()) + .setExpireEventTime(Timestamp.newBuilder().build()) + .setPublicKey(ImportJob.WrappingPublicKey.newBuilder().build()) + .setAttestation(KeyOperationAttestation.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String parent = "parent-995424086"; + String importJobId = "importJobId1449444627"; + ImportJob importJob = ImportJob.newBuilder().build(); + + ImportJob actualResponse = client.createImportJob(parent, importJobId, importJob); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + CreateImportJobRequest actualRequest = ((CreateImportJobRequest) actualRequests.get(0)); + + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertEquals(importJobId, actualRequest.getImportJobId()); + Assert.assertEquals(importJob, actualRequest.getImportJob()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void createImportJobExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String parent = "parent-995424086"; + String importJobId = "importJobId1449444627"; + ImportJob importJob = ImportJob.newBuilder().build(); + client.createImportJob(parent, importJobId, importJob); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void updateCryptoKeyTest() throws Exception { + CryptoKey expectedResponse = + CryptoKey.newBuilder() + .setName( + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]") + .toString()) + .setPrimary(CryptoKeyVersion.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setNextRotationTime(Timestamp.newBuilder().build()) + .setVersionTemplate(CryptoKeyVersionTemplate.newBuilder().build()) + .putAllLabels(new HashMap()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + CryptoKey cryptoKey = CryptoKey.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + + CryptoKey actualResponse = client.updateCryptoKey(cryptoKey, updateMask); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + UpdateCryptoKeyRequest actualRequest = ((UpdateCryptoKeyRequest) actualRequests.get(0)); + + Assert.assertEquals(cryptoKey, actualRequest.getCryptoKey()); + Assert.assertEquals(updateMask, actualRequest.getUpdateMask()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void updateCryptoKeyExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + CryptoKey cryptoKey = CryptoKey.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + client.updateCryptoKey(cryptoKey, updateMask); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void updateCryptoKeyVersionTest() throws Exception { + CryptoKeyVersion expectedResponse = + CryptoKeyVersion.newBuilder() + .setName( + CryptoKeyVersionName.of( + "[PROJECT]", + "[LOCATION]", + "[KEY_RING]", + "[CRYPTO_KEY]", + "[CRYPTO_KEY_VERSION]") + .toString()) + .setProtectionLevel(ProtectionLevel.forNumber(0)) + .setAttestation(KeyOperationAttestation.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setGenerateTime(Timestamp.newBuilder().build()) + .setDestroyTime(Timestamp.newBuilder().build()) + .setDestroyEventTime(Timestamp.newBuilder().build()) + .setImportJob("importJob-208547368") + .setImportTime(Timestamp.newBuilder().build()) + .setImportFailureReason("importFailureReason985493705") + .setExternalProtectionLevelOptions(ExternalProtectionLevelOptions.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + CryptoKeyVersion cryptoKeyVersion = CryptoKeyVersion.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + + CryptoKeyVersion actualResponse = client.updateCryptoKeyVersion(cryptoKeyVersion, updateMask); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + UpdateCryptoKeyVersionRequest actualRequest = + ((UpdateCryptoKeyVersionRequest) actualRequests.get(0)); + + Assert.assertEquals(cryptoKeyVersion, actualRequest.getCryptoKeyVersion()); + Assert.assertEquals(updateMask, actualRequest.getUpdateMask()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void updateCryptoKeyVersionExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + CryptoKeyVersion cryptoKeyVersion = CryptoKeyVersion.newBuilder().build(); + FieldMask updateMask = FieldMask.newBuilder().build(); + client.updateCryptoKeyVersion(cryptoKeyVersion, updateMask); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void encryptTest() throws Exception { + EncryptResponse expectedResponse = + EncryptResponse.newBuilder() + .setName("name3373707") + .setCiphertext(ByteString.EMPTY) + .setCiphertextCrc32C(Int64Value.newBuilder().build()) + .setVerifiedPlaintextCrc32C(true) + .setVerifiedAdditionalAuthenticatedDataCrc32C(true) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + ResourceName name = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]"); + ByteString plaintext = ByteString.EMPTY; + + EncryptResponse actualResponse = client.encrypt(name, plaintext); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + EncryptRequest actualRequest = ((EncryptRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertEquals(plaintext, actualRequest.getPlaintext()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void encryptExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + ResourceName name = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]"); + ByteString plaintext = ByteString.EMPTY; + client.encrypt(name, plaintext); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void encryptTest2() throws Exception { + EncryptResponse expectedResponse = + EncryptResponse.newBuilder() + .setName("name3373707") + .setCiphertext(ByteString.EMPTY) + .setCiphertextCrc32C(Int64Value.newBuilder().build()) + .setVerifiedPlaintextCrc32C(true) + .setVerifiedAdditionalAuthenticatedDataCrc32C(true) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String name = "name3373707"; + ByteString plaintext = ByteString.EMPTY; + + EncryptResponse actualResponse = client.encrypt(name, plaintext); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + EncryptRequest actualRequest = ((EncryptRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertEquals(plaintext, actualRequest.getPlaintext()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void encryptExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String name = "name3373707"; + ByteString plaintext = ByteString.EMPTY; + client.encrypt(name, plaintext); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void decryptTest() throws Exception { + DecryptResponse expectedResponse = + DecryptResponse.newBuilder() + .setPlaintext(ByteString.EMPTY) + .setPlaintextCrc32C(Int64Value.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + CryptoKeyName name = CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + ByteString ciphertext = ByteString.EMPTY; + + DecryptResponse actualResponse = client.decrypt(name, ciphertext); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + DecryptRequest actualRequest = ((DecryptRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertEquals(ciphertext, actualRequest.getCiphertext()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void decryptExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + CryptoKeyName name = + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + ByteString ciphertext = ByteString.EMPTY; + client.decrypt(name, ciphertext); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void decryptTest2() throws Exception { + DecryptResponse expectedResponse = + DecryptResponse.newBuilder() + .setPlaintext(ByteString.EMPTY) + .setPlaintextCrc32C(Int64Value.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String name = "name3373707"; + ByteString ciphertext = ByteString.EMPTY; + + DecryptResponse actualResponse = client.decrypt(name, ciphertext); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + DecryptRequest actualRequest = ((DecryptRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertEquals(ciphertext, actualRequest.getCiphertext()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void decryptExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String name = "name3373707"; + ByteString ciphertext = ByteString.EMPTY; + client.decrypt(name, ciphertext); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void asymmetricSignTest() throws Exception { + AsymmetricSignResponse expectedResponse = + AsymmetricSignResponse.newBuilder() + .setSignature(ByteString.EMPTY) + .setSignatureCrc32C(Int64Value.newBuilder().build()) + .setVerifiedDigestCrc32C(true) + .setName("name3373707") + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + CryptoKeyVersionName name = + CryptoKeyVersionName.of( + "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]"); + Digest digest = Digest.newBuilder().build(); + + AsymmetricSignResponse actualResponse = client.asymmetricSign(name, digest); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + AsymmetricSignRequest actualRequest = ((AsymmetricSignRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertEquals(digest, actualRequest.getDigest()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void asymmetricSignExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + CryptoKeyVersionName name = + CryptoKeyVersionName.of( + "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]"); + Digest digest = Digest.newBuilder().build(); + client.asymmetricSign(name, digest); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void asymmetricSignTest2() throws Exception { + AsymmetricSignResponse expectedResponse = + AsymmetricSignResponse.newBuilder() + .setSignature(ByteString.EMPTY) + .setSignatureCrc32C(Int64Value.newBuilder().build()) + .setVerifiedDigestCrc32C(true) + .setName("name3373707") + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String name = "name3373707"; + Digest digest = Digest.newBuilder().build(); + + AsymmetricSignResponse actualResponse = client.asymmetricSign(name, digest); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + AsymmetricSignRequest actualRequest = ((AsymmetricSignRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertEquals(digest, actualRequest.getDigest()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void asymmetricSignExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String name = "name3373707"; + Digest digest = Digest.newBuilder().build(); + client.asymmetricSign(name, digest); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void asymmetricDecryptTest() throws Exception { + AsymmetricDecryptResponse expectedResponse = + AsymmetricDecryptResponse.newBuilder() + .setPlaintext(ByteString.EMPTY) + .setPlaintextCrc32C(Int64Value.newBuilder().build()) + .setVerifiedCiphertextCrc32C(true) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + CryptoKeyVersionName name = + CryptoKeyVersionName.of( + "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]"); + ByteString ciphertext = ByteString.EMPTY; + + AsymmetricDecryptResponse actualResponse = client.asymmetricDecrypt(name, ciphertext); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + AsymmetricDecryptRequest actualRequest = ((AsymmetricDecryptRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertEquals(ciphertext, actualRequest.getCiphertext()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void asymmetricDecryptExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + CryptoKeyVersionName name = + CryptoKeyVersionName.of( + "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]"); + ByteString ciphertext = ByteString.EMPTY; + client.asymmetricDecrypt(name, ciphertext); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void asymmetricDecryptTest2() throws Exception { + AsymmetricDecryptResponse expectedResponse = + AsymmetricDecryptResponse.newBuilder() + .setPlaintext(ByteString.EMPTY) + .setPlaintextCrc32C(Int64Value.newBuilder().build()) + .setVerifiedCiphertextCrc32C(true) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String name = "name3373707"; + ByteString ciphertext = ByteString.EMPTY; + + AsymmetricDecryptResponse actualResponse = client.asymmetricDecrypt(name, ciphertext); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + AsymmetricDecryptRequest actualRequest = ((AsymmetricDecryptRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertEquals(ciphertext, actualRequest.getCiphertext()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void asymmetricDecryptExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String name = "name3373707"; + ByteString ciphertext = ByteString.EMPTY; + client.asymmetricDecrypt(name, ciphertext); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void updateCryptoKeyPrimaryVersionTest() throws Exception { + CryptoKey expectedResponse = + CryptoKey.newBuilder() + .setName( + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]") + .toString()) + .setPrimary(CryptoKeyVersion.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setNextRotationTime(Timestamp.newBuilder().build()) + .setVersionTemplate(CryptoKeyVersionTemplate.newBuilder().build()) + .putAllLabels(new HashMap()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + CryptoKeyName name = CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + String cryptoKeyVersionId = "cryptoKeyVersionId987674581"; + + CryptoKey actualResponse = client.updateCryptoKeyPrimaryVersion(name, cryptoKeyVersionId); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + UpdateCryptoKeyPrimaryVersionRequest actualRequest = + ((UpdateCryptoKeyPrimaryVersionRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertEquals(cryptoKeyVersionId, actualRequest.getCryptoKeyVersionId()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void updateCryptoKeyPrimaryVersionExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + CryptoKeyName name = + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]"); + String cryptoKeyVersionId = "cryptoKeyVersionId987674581"; + client.updateCryptoKeyPrimaryVersion(name, cryptoKeyVersionId); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void updateCryptoKeyPrimaryVersionTest2() throws Exception { + CryptoKey expectedResponse = + CryptoKey.newBuilder() + .setName( + CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]") + .toString()) + .setPrimary(CryptoKeyVersion.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setNextRotationTime(Timestamp.newBuilder().build()) + .setVersionTemplate(CryptoKeyVersionTemplate.newBuilder().build()) + .putAllLabels(new HashMap()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String name = "name3373707"; + String cryptoKeyVersionId = "cryptoKeyVersionId987674581"; + + CryptoKey actualResponse = client.updateCryptoKeyPrimaryVersion(name, cryptoKeyVersionId); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + UpdateCryptoKeyPrimaryVersionRequest actualRequest = + ((UpdateCryptoKeyPrimaryVersionRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertEquals(cryptoKeyVersionId, actualRequest.getCryptoKeyVersionId()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void updateCryptoKeyPrimaryVersionExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String name = "name3373707"; + String cryptoKeyVersionId = "cryptoKeyVersionId987674581"; + client.updateCryptoKeyPrimaryVersion(name, cryptoKeyVersionId); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void destroyCryptoKeyVersionTest() throws Exception { + CryptoKeyVersion expectedResponse = + CryptoKeyVersion.newBuilder() + .setName( + CryptoKeyVersionName.of( + "[PROJECT]", + "[LOCATION]", + "[KEY_RING]", + "[CRYPTO_KEY]", + "[CRYPTO_KEY_VERSION]") + .toString()) + .setProtectionLevel(ProtectionLevel.forNumber(0)) + .setAttestation(KeyOperationAttestation.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setGenerateTime(Timestamp.newBuilder().build()) + .setDestroyTime(Timestamp.newBuilder().build()) + .setDestroyEventTime(Timestamp.newBuilder().build()) + .setImportJob("importJob-208547368") + .setImportTime(Timestamp.newBuilder().build()) + .setImportFailureReason("importFailureReason985493705") + .setExternalProtectionLevelOptions(ExternalProtectionLevelOptions.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + CryptoKeyVersionName name = + CryptoKeyVersionName.of( + "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]"); + + CryptoKeyVersion actualResponse = client.destroyCryptoKeyVersion(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + DestroyCryptoKeyVersionRequest actualRequest = + ((DestroyCryptoKeyVersionRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void destroyCryptoKeyVersionExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + CryptoKeyVersionName name = + CryptoKeyVersionName.of( + "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]"); + client.destroyCryptoKeyVersion(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void destroyCryptoKeyVersionTest2() throws Exception { + CryptoKeyVersion expectedResponse = + CryptoKeyVersion.newBuilder() + .setName( + CryptoKeyVersionName.of( + "[PROJECT]", + "[LOCATION]", + "[KEY_RING]", + "[CRYPTO_KEY]", + "[CRYPTO_KEY_VERSION]") + .toString()) + .setProtectionLevel(ProtectionLevel.forNumber(0)) + .setAttestation(KeyOperationAttestation.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setGenerateTime(Timestamp.newBuilder().build()) + .setDestroyTime(Timestamp.newBuilder().build()) + .setDestroyEventTime(Timestamp.newBuilder().build()) + .setImportJob("importJob-208547368") + .setImportTime(Timestamp.newBuilder().build()) + .setImportFailureReason("importFailureReason985493705") + .setExternalProtectionLevelOptions(ExternalProtectionLevelOptions.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String name = "name3373707"; + + CryptoKeyVersion actualResponse = client.destroyCryptoKeyVersion(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + DestroyCryptoKeyVersionRequest actualRequest = + ((DestroyCryptoKeyVersionRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void destroyCryptoKeyVersionExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String name = "name3373707"; + client.destroyCryptoKeyVersion(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void restoreCryptoKeyVersionTest() throws Exception { + CryptoKeyVersion expectedResponse = + CryptoKeyVersion.newBuilder() + .setName( + CryptoKeyVersionName.of( + "[PROJECT]", + "[LOCATION]", + "[KEY_RING]", + "[CRYPTO_KEY]", + "[CRYPTO_KEY_VERSION]") + .toString()) + .setProtectionLevel(ProtectionLevel.forNumber(0)) + .setAttestation(KeyOperationAttestation.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setGenerateTime(Timestamp.newBuilder().build()) + .setDestroyTime(Timestamp.newBuilder().build()) + .setDestroyEventTime(Timestamp.newBuilder().build()) + .setImportJob("importJob-208547368") + .setImportTime(Timestamp.newBuilder().build()) + .setImportFailureReason("importFailureReason985493705") + .setExternalProtectionLevelOptions(ExternalProtectionLevelOptions.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + CryptoKeyVersionName name = + CryptoKeyVersionName.of( + "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]"); + + CryptoKeyVersion actualResponse = client.restoreCryptoKeyVersion(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + RestoreCryptoKeyVersionRequest actualRequest = + ((RestoreCryptoKeyVersionRequest) actualRequests.get(0)); + + Assert.assertEquals(name.toString(), actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void restoreCryptoKeyVersionExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + CryptoKeyVersionName name = + CryptoKeyVersionName.of( + "[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]", "[CRYPTO_KEY_VERSION]"); + client.restoreCryptoKeyVersion(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void restoreCryptoKeyVersionTest2() throws Exception { + CryptoKeyVersion expectedResponse = + CryptoKeyVersion.newBuilder() + .setName( + CryptoKeyVersionName.of( + "[PROJECT]", + "[LOCATION]", + "[KEY_RING]", + "[CRYPTO_KEY]", + "[CRYPTO_KEY_VERSION]") + .toString()) + .setProtectionLevel(ProtectionLevel.forNumber(0)) + .setAttestation(KeyOperationAttestation.newBuilder().build()) + .setCreateTime(Timestamp.newBuilder().build()) + .setGenerateTime(Timestamp.newBuilder().build()) + .setDestroyTime(Timestamp.newBuilder().build()) + .setDestroyEventTime(Timestamp.newBuilder().build()) + .setImportJob("importJob-208547368") + .setImportTime(Timestamp.newBuilder().build()) + .setImportFailureReason("importFailureReason985493705") + .setExternalProtectionLevelOptions(ExternalProtectionLevelOptions.newBuilder().build()) + .build(); + mockKeyManagementService.addResponse(expectedResponse); + + String name = "name3373707"; + + CryptoKeyVersion actualResponse = client.restoreCryptoKeyVersion(name); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockKeyManagementService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + RestoreCryptoKeyVersionRequest actualRequest = + ((RestoreCryptoKeyVersionRequest) actualRequests.get(0)); + + Assert.assertEquals(name, actualRequest.getName()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void restoreCryptoKeyVersionExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockKeyManagementService.addException(exception); + + try { + String name = "name3373707"; + client.restoreCryptoKeyVersion(name); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void setIamPolicyTest() throws Exception { + Policy expectedResponse = + Policy.newBuilder() + .setVersion(351608024) + .addAllBindings(new ArrayList()) + .setEtag(ByteString.EMPTY) + .build(); + mockIAMPolicy.addResponse(expectedResponse); + + SetIamPolicyRequest request = + SetIamPolicyRequest.newBuilder() + .setResource(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString()) + .setPolicy(Policy.newBuilder().build()) + .build(); + + Policy actualResponse = client.setIamPolicy(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockIAMPolicy.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + SetIamPolicyRequest actualRequest = ((SetIamPolicyRequest) actualRequests.get(0)); + + Assert.assertEquals(request.getResource(), actualRequest.getResource()); + Assert.assertEquals(request.getPolicy(), actualRequest.getPolicy()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void setIamPolicyExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockIAMPolicy.addException(exception); + + try { + SetIamPolicyRequest request = + SetIamPolicyRequest.newBuilder() + .setResource(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString()) + .setPolicy(Policy.newBuilder().build()) + .build(); + client.setIamPolicy(request); + 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()) + .setEtag(ByteString.EMPTY) + .build(); + mockIAMPolicy.addResponse(expectedResponse); + + GetIamPolicyRequest request = + GetIamPolicyRequest.newBuilder() + .setResource(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString()) + .setOptions(GetPolicyOptions.newBuilder().build()) + .build(); + + Policy actualResponse = client.getIamPolicy(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockIAMPolicy.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + GetIamPolicyRequest actualRequest = ((GetIamPolicyRequest) actualRequests.get(0)); + + Assert.assertEquals(request.getResource(), actualRequest.getResource()); + Assert.assertEquals(request.getOptions(), actualRequest.getOptions()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void getIamPolicyExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockIAMPolicy.addException(exception); + + try { + GetIamPolicyRequest request = + GetIamPolicyRequest.newBuilder() + .setResource(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString()) + .setOptions(GetPolicyOptions.newBuilder().build()) + .build(); + client.getIamPolicy(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void testIamPermissionsTest() throws Exception { + TestIamPermissionsResponse expectedResponse = + TestIamPermissionsResponse.newBuilder().addAllPermissions(new ArrayList()).build(); + mockIAMPolicy.addResponse(expectedResponse); + + TestIamPermissionsRequest request = + TestIamPermissionsRequest.newBuilder() + .setResource(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString()) + .addAllPermissions(new ArrayList()) + .build(); + + TestIamPermissionsResponse actualResponse = client.testIamPermissions(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockIAMPolicy.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + TestIamPermissionsRequest actualRequest = ((TestIamPermissionsRequest) actualRequests.get(0)); + + Assert.assertEquals(request.getResource(), actualRequest.getResource()); + Assert.assertEquals(request.getPermissionsList(), actualRequest.getPermissionsList()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void testIamPermissionsExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockIAMPolicy.addException(exception); + + try { + TestIamPermissionsRequest request = + TestIamPermissionsRequest.newBuilder() + .setResource(KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]").toString()) + .addAllPermissions(new ArrayList()) + .build(); + client.testIamPermissions(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } +} diff --git a/test/integration/goldens/kms/KeyManagementServiceSettings.java b/test/integration/goldens/kms/KeyManagementServiceSettings.java new file mode 100644 index 0000000000..acc300034d --- /dev/null +++ b/test/integration/goldens/kms/KeyManagementServiceSettings.java @@ -0,0 +1,485 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.kms.v1; + +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListCryptoKeyVersionsPagedResponse; +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListCryptoKeysPagedResponse; +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListImportJobsPagedResponse; +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListKeyRingsPagedResponse; + +import com.google.api.core.ApiFunction; +import com.google.api.core.BetaApi; +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.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.ClientSettings; +import com.google.api.gax.rpc.PagedCallSettings; +import com.google.api.gax.rpc.StubSettings; +import com.google.api.gax.rpc.TransportChannelProvider; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.cloud.kms.v1.stub.KeyManagementServiceStubSettings; +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 java.io.IOException; +import java.util.List; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * Settings class to configure an instance of {@link KeyManagementServiceClient}. + * + *

The default instance has everything set to sensible defaults: + * + *

    + *
  • The default service address (cloudkms.googleapis.com) and default port (443) are used. + *
  • Credentials are acquired automatically through Application Default Credentials. + *
  • Retries are configured for idempotent methods but not for non-idempotent methods. + *
+ * + *

The builder of this class is recursive, so contained classes are themselves builders. When + * build() is called, the tree of builders is called to create the complete settings object. + * + *

For example, to set the total timeout of getKeyRing to 30 seconds: + * + *

{@code
+ * KeyManagementServiceSettings.Builder keyManagementServiceSettingsBuilder =
+ *     KeyManagementServiceSettings.newBuilder();
+ * keyManagementServiceSettingsBuilder
+ *     .getKeyRingSettings()
+ *     .setRetrySettings(
+ *         keyManagementServiceSettingsBuilder
+ *             .getKeyRingSettings()
+ *             .getRetrySettings()
+ *             .toBuilder()
+ *             .setTotalTimeout(Duration.ofSeconds(30))
+ *             .build());
+ * KeyManagementServiceSettings keyManagementServiceSettings =
+ *     keyManagementServiceSettingsBuilder.build();
+ * }
+ */ +@Generated("by gapic-generator-java") +public class KeyManagementServiceSettings extends ClientSettings { + + /** Returns the object with the settings used for calls to listKeyRings. */ + public PagedCallSettings + listKeyRingsSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).listKeyRingsSettings(); + } + + /** Returns the object with the settings used for calls to listCryptoKeys. */ + public PagedCallSettings< + ListCryptoKeysRequest, ListCryptoKeysResponse, ListCryptoKeysPagedResponse> + listCryptoKeysSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).listCryptoKeysSettings(); + } + + /** Returns the object with the settings used for calls to listCryptoKeyVersions. */ + public PagedCallSettings< + ListCryptoKeyVersionsRequest, + ListCryptoKeyVersionsResponse, + ListCryptoKeyVersionsPagedResponse> + listCryptoKeyVersionsSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).listCryptoKeyVersionsSettings(); + } + + /** Returns the object with the settings used for calls to listImportJobs. */ + public PagedCallSettings< + ListImportJobsRequest, ListImportJobsResponse, ListImportJobsPagedResponse> + listImportJobsSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).listImportJobsSettings(); + } + + /** Returns the object with the settings used for calls to getKeyRing. */ + public UnaryCallSettings getKeyRingSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).getKeyRingSettings(); + } + + /** Returns the object with the settings used for calls to getCryptoKey. */ + public UnaryCallSettings getCryptoKeySettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).getCryptoKeySettings(); + } + + /** Returns the object with the settings used for calls to getCryptoKeyVersion. */ + public UnaryCallSettings + getCryptoKeyVersionSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).getCryptoKeyVersionSettings(); + } + + /** Returns the object with the settings used for calls to getPublicKey. */ + public UnaryCallSettings getPublicKeySettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).getPublicKeySettings(); + } + + /** Returns the object with the settings used for calls to getImportJob. */ + public UnaryCallSettings getImportJobSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).getImportJobSettings(); + } + + /** Returns the object with the settings used for calls to createKeyRing. */ + public UnaryCallSettings createKeyRingSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).createKeyRingSettings(); + } + + /** Returns the object with the settings used for calls to createCryptoKey. */ + public UnaryCallSettings createCryptoKeySettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).createCryptoKeySettings(); + } + + /** Returns the object with the settings used for calls to createCryptoKeyVersion. */ + public UnaryCallSettings + createCryptoKeyVersionSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).createCryptoKeyVersionSettings(); + } + + /** Returns the object with the settings used for calls to importCryptoKeyVersion. */ + public UnaryCallSettings + importCryptoKeyVersionSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).importCryptoKeyVersionSettings(); + } + + /** Returns the object with the settings used for calls to createImportJob. */ + public UnaryCallSettings createImportJobSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).createImportJobSettings(); + } + + /** Returns the object with the settings used for calls to updateCryptoKey. */ + public UnaryCallSettings updateCryptoKeySettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).updateCryptoKeySettings(); + } + + /** Returns the object with the settings used for calls to updateCryptoKeyVersion. */ + public UnaryCallSettings + updateCryptoKeyVersionSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).updateCryptoKeyVersionSettings(); + } + + /** Returns the object with the settings used for calls to encrypt. */ + public UnaryCallSettings encryptSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).encryptSettings(); + } + + /** Returns the object with the settings used for calls to decrypt. */ + public UnaryCallSettings decryptSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).decryptSettings(); + } + + /** Returns the object with the settings used for calls to asymmetricSign. */ + public UnaryCallSettings asymmetricSignSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).asymmetricSignSettings(); + } + + /** Returns the object with the settings used for calls to asymmetricDecrypt. */ + public UnaryCallSettings + asymmetricDecryptSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).asymmetricDecryptSettings(); + } + + /** Returns the object with the settings used for calls to updateCryptoKeyPrimaryVersion. */ + public UnaryCallSettings + updateCryptoKeyPrimaryVersionSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()) + .updateCryptoKeyPrimaryVersionSettings(); + } + + /** Returns the object with the settings used for calls to destroyCryptoKeyVersion. */ + public UnaryCallSettings + destroyCryptoKeyVersionSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).destroyCryptoKeyVersionSettings(); + } + + /** Returns the object with the settings used for calls to restoreCryptoKeyVersion. */ + public UnaryCallSettings + restoreCryptoKeyVersionSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).restoreCryptoKeyVersionSettings(); + } + + /** Returns the object with the settings used for calls to setIamPolicy. */ + public UnaryCallSettings setIamPolicySettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).setIamPolicySettings(); + } + + /** Returns the object with the settings used for calls to getIamPolicy. */ + public UnaryCallSettings getIamPolicySettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).getIamPolicySettings(); + } + + /** Returns the object with the settings used for calls to testIamPermissions. */ + public UnaryCallSettings + testIamPermissionsSettings() { + return ((KeyManagementServiceStubSettings) getStubSettings()).testIamPermissionsSettings(); + } + + public static final KeyManagementServiceSettings create(KeyManagementServiceStubSettings stub) + throws IOException { + return new KeyManagementServiceSettings.Builder(stub.toBuilder()).build(); + } + + /** Returns a builder for the default ExecutorProvider for this service. */ + public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { + return KeyManagementServiceStubSettings.defaultExecutorProviderBuilder(); + } + + /** Returns the default service endpoint. */ + public static String getDefaultEndpoint() { + return KeyManagementServiceStubSettings.getDefaultEndpoint(); + } + + /** Returns the default service scopes. */ + public static List getDefaultServiceScopes() { + return KeyManagementServiceStubSettings.getDefaultServiceScopes(); + } + + /** Returns a builder for the default credentials for this service. */ + public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { + return KeyManagementServiceStubSettings.defaultCredentialsProviderBuilder(); + } + + /** Returns a builder for the default ChannelProvider for this service. */ + public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { + return KeyManagementServiceStubSettings.defaultGrpcTransportProviderBuilder(); + } + + public static TransportChannelProvider defaultTransportChannelProvider() { + return KeyManagementServiceStubSettings.defaultTransportChannelProvider(); + } + + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return KeyManagementServiceStubSettings.defaultApiClientHeaderProviderBuilder(); + } + + /** Returns a new builder for this class. */ + public static Builder newBuilder() { + return Builder.createDefault(); + } + + /** Returns a new builder for this class. */ + public static Builder newBuilder(ClientContext clientContext) { + return new Builder(clientContext); + } + + /** Returns a builder containing all the values of this settings class. */ + public Builder toBuilder() { + return new Builder(this); + } + + protected KeyManagementServiceSettings(Builder settingsBuilder) throws IOException { + super(settingsBuilder); + } + + /** Builder for KeyManagementServiceSettings. */ + public static class Builder + extends ClientSettings.Builder { + + protected Builder() throws IOException { + this(((ClientContext) null)); + } + + protected Builder(ClientContext clientContext) { + super(KeyManagementServiceStubSettings.newBuilder(clientContext)); + } + + protected Builder(KeyManagementServiceSettings settings) { + super(settings.getStubSettings().toBuilder()); + } + + protected Builder(KeyManagementServiceStubSettings.Builder stubSettings) { + super(stubSettings); + } + + private static Builder createDefault() { + return new Builder(KeyManagementServiceStubSettings.newBuilder()); + } + + public KeyManagementServiceStubSettings.Builder getStubSettingsBuilder() { + return ((KeyManagementServiceStubSettings.Builder) getStubSettings()); + } + + // NEXT_MAJOR_VER: remove 'throws Exception'. + /** + * Applies the given settings updater function to all of the unary API methods in this service. + * + *

Note: This method does not support applying settings to streaming methods. + */ + public Builder applyToAllUnaryMethods( + ApiFunction, Void> settingsUpdater) throws Exception { + super.applyToAllUnaryMethods( + getStubSettingsBuilder().unaryMethodSettingsBuilders(), settingsUpdater); + return this; + } + + /** Returns the builder for the settings used for calls to listKeyRings. */ + public PagedCallSettings.Builder< + ListKeyRingsRequest, ListKeyRingsResponse, ListKeyRingsPagedResponse> + listKeyRingsSettings() { + return getStubSettingsBuilder().listKeyRingsSettings(); + } + + /** Returns the builder for the settings used for calls to listCryptoKeys. */ + public PagedCallSettings.Builder< + ListCryptoKeysRequest, ListCryptoKeysResponse, ListCryptoKeysPagedResponse> + listCryptoKeysSettings() { + return getStubSettingsBuilder().listCryptoKeysSettings(); + } + + /** Returns the builder for the settings used for calls to listCryptoKeyVersions. */ + public PagedCallSettings.Builder< + ListCryptoKeyVersionsRequest, + ListCryptoKeyVersionsResponse, + ListCryptoKeyVersionsPagedResponse> + listCryptoKeyVersionsSettings() { + return getStubSettingsBuilder().listCryptoKeyVersionsSettings(); + } + + /** Returns the builder for the settings used for calls to listImportJobs. */ + public PagedCallSettings.Builder< + ListImportJobsRequest, ListImportJobsResponse, ListImportJobsPagedResponse> + listImportJobsSettings() { + return getStubSettingsBuilder().listImportJobsSettings(); + } + + /** Returns the builder for the settings used for calls to getKeyRing. */ + public UnaryCallSettings.Builder getKeyRingSettings() { + return getStubSettingsBuilder().getKeyRingSettings(); + } + + /** Returns the builder for the settings used for calls to getCryptoKey. */ + public UnaryCallSettings.Builder getCryptoKeySettings() { + return getStubSettingsBuilder().getCryptoKeySettings(); + } + + /** Returns the builder for the settings used for calls to getCryptoKeyVersion. */ + public UnaryCallSettings.Builder + getCryptoKeyVersionSettings() { + return getStubSettingsBuilder().getCryptoKeyVersionSettings(); + } + + /** Returns the builder for the settings used for calls to getPublicKey. */ + public UnaryCallSettings.Builder getPublicKeySettings() { + return getStubSettingsBuilder().getPublicKeySettings(); + } + + /** Returns the builder for the settings used for calls to getImportJob. */ + public UnaryCallSettings.Builder getImportJobSettings() { + return getStubSettingsBuilder().getImportJobSettings(); + } + + /** Returns the builder for the settings used for calls to createKeyRing. */ + public UnaryCallSettings.Builder createKeyRingSettings() { + return getStubSettingsBuilder().createKeyRingSettings(); + } + + /** Returns the builder for the settings used for calls to createCryptoKey. */ + public UnaryCallSettings.Builder createCryptoKeySettings() { + return getStubSettingsBuilder().createCryptoKeySettings(); + } + + /** Returns the builder for the settings used for calls to createCryptoKeyVersion. */ + public UnaryCallSettings.Builder + createCryptoKeyVersionSettings() { + return getStubSettingsBuilder().createCryptoKeyVersionSettings(); + } + + /** Returns the builder for the settings used for calls to importCryptoKeyVersion. */ + public UnaryCallSettings.Builder + importCryptoKeyVersionSettings() { + return getStubSettingsBuilder().importCryptoKeyVersionSettings(); + } + + /** Returns the builder for the settings used for calls to createImportJob. */ + public UnaryCallSettings.Builder createImportJobSettings() { + return getStubSettingsBuilder().createImportJobSettings(); + } + + /** Returns the builder for the settings used for calls to updateCryptoKey. */ + public UnaryCallSettings.Builder updateCryptoKeySettings() { + return getStubSettingsBuilder().updateCryptoKeySettings(); + } + + /** Returns the builder for the settings used for calls to updateCryptoKeyVersion. */ + public UnaryCallSettings.Builder + updateCryptoKeyVersionSettings() { + return getStubSettingsBuilder().updateCryptoKeyVersionSettings(); + } + + /** Returns the builder for the settings used for calls to encrypt. */ + public UnaryCallSettings.Builder encryptSettings() { + return getStubSettingsBuilder().encryptSettings(); + } + + /** Returns the builder for the settings used for calls to decrypt. */ + public UnaryCallSettings.Builder decryptSettings() { + return getStubSettingsBuilder().decryptSettings(); + } + + /** Returns the builder for the settings used for calls to asymmetricSign. */ + public UnaryCallSettings.Builder + asymmetricSignSettings() { + return getStubSettingsBuilder().asymmetricSignSettings(); + } + + /** Returns the builder for the settings used for calls to asymmetricDecrypt. */ + public UnaryCallSettings.Builder + asymmetricDecryptSettings() { + return getStubSettingsBuilder().asymmetricDecryptSettings(); + } + + /** Returns the builder for the settings used for calls to updateCryptoKeyPrimaryVersion. */ + public UnaryCallSettings.Builder + updateCryptoKeyPrimaryVersionSettings() { + return getStubSettingsBuilder().updateCryptoKeyPrimaryVersionSettings(); + } + + /** Returns the builder for the settings used for calls to destroyCryptoKeyVersion. */ + public UnaryCallSettings.Builder + destroyCryptoKeyVersionSettings() { + return getStubSettingsBuilder().destroyCryptoKeyVersionSettings(); + } + + /** Returns the builder for the settings used for calls to restoreCryptoKeyVersion. */ + public UnaryCallSettings.Builder + restoreCryptoKeyVersionSettings() { + return getStubSettingsBuilder().restoreCryptoKeyVersionSettings(); + } + + /** Returns the builder for the settings used for calls to setIamPolicy. */ + public UnaryCallSettings.Builder setIamPolicySettings() { + return getStubSettingsBuilder().setIamPolicySettings(); + } + + /** Returns the builder for the settings used for calls to getIamPolicy. */ + public UnaryCallSettings.Builder getIamPolicySettings() { + return getStubSettingsBuilder().getIamPolicySettings(); + } + + /** Returns the builder for the settings used for calls to testIamPermissions. */ + public UnaryCallSettings.Builder + testIamPermissionsSettings() { + return getStubSettingsBuilder().testIamPermissionsSettings(); + } + + @Override + public KeyManagementServiceSettings build() throws IOException { + return new KeyManagementServiceSettings(this); + } + } +} diff --git a/test/integration/goldens/kms/KeyManagementServiceStub.java b/test/integration/goldens/kms/KeyManagementServiceStub.java new file mode 100644 index 0000000000..837b4b0bab --- /dev/null +++ b/test/integration/goldens/kms/KeyManagementServiceStub.java @@ -0,0 +1,214 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.kms.v1.stub; + +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListCryptoKeyVersionsPagedResponse; +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListCryptoKeysPagedResponse; +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListImportJobsPagedResponse; +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListKeyRingsPagedResponse; + +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.cloud.kms.v1.AsymmetricDecryptRequest; +import com.google.cloud.kms.v1.AsymmetricDecryptResponse; +import com.google.cloud.kms.v1.AsymmetricSignRequest; +import com.google.cloud.kms.v1.AsymmetricSignResponse; +import com.google.cloud.kms.v1.CreateCryptoKeyRequest; +import com.google.cloud.kms.v1.CreateCryptoKeyVersionRequest; +import com.google.cloud.kms.v1.CreateImportJobRequest; +import com.google.cloud.kms.v1.CreateKeyRingRequest; +import com.google.cloud.kms.v1.CryptoKey; +import com.google.cloud.kms.v1.CryptoKeyVersion; +import com.google.cloud.kms.v1.DecryptRequest; +import com.google.cloud.kms.v1.DecryptResponse; +import com.google.cloud.kms.v1.DestroyCryptoKeyVersionRequest; +import com.google.cloud.kms.v1.EncryptRequest; +import com.google.cloud.kms.v1.EncryptResponse; +import com.google.cloud.kms.v1.GetCryptoKeyRequest; +import com.google.cloud.kms.v1.GetCryptoKeyVersionRequest; +import com.google.cloud.kms.v1.GetImportJobRequest; +import com.google.cloud.kms.v1.GetKeyRingRequest; +import com.google.cloud.kms.v1.GetPublicKeyRequest; +import com.google.cloud.kms.v1.ImportCryptoKeyVersionRequest; +import com.google.cloud.kms.v1.ImportJob; +import com.google.cloud.kms.v1.KeyRing; +import com.google.cloud.kms.v1.ListCryptoKeyVersionsRequest; +import com.google.cloud.kms.v1.ListCryptoKeyVersionsResponse; +import com.google.cloud.kms.v1.ListCryptoKeysRequest; +import com.google.cloud.kms.v1.ListCryptoKeysResponse; +import com.google.cloud.kms.v1.ListImportJobsRequest; +import com.google.cloud.kms.v1.ListImportJobsResponse; +import com.google.cloud.kms.v1.ListKeyRingsRequest; +import com.google.cloud.kms.v1.ListKeyRingsResponse; +import com.google.cloud.kms.v1.PublicKey; +import com.google.cloud.kms.v1.RestoreCryptoKeyVersionRequest; +import com.google.cloud.kms.v1.UpdateCryptoKeyPrimaryVersionRequest; +import com.google.cloud.kms.v1.UpdateCryptoKeyRequest; +import com.google.cloud.kms.v1.UpdateCryptoKeyVersionRequest; +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 javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * Base stub class for the KeyManagementService service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@Generated("by gapic-generator-java") +public abstract class KeyManagementServiceStub implements BackgroundResource { + + public UnaryCallable listKeyRingsPagedCallable() { + throw new UnsupportedOperationException("Not implemented: listKeyRingsPagedCallable()"); + } + + public UnaryCallable listKeyRingsCallable() { + throw new UnsupportedOperationException("Not implemented: listKeyRingsCallable()"); + } + + public UnaryCallable + listCryptoKeysPagedCallable() { + throw new UnsupportedOperationException("Not implemented: listCryptoKeysPagedCallable()"); + } + + public UnaryCallable listCryptoKeysCallable() { + throw new UnsupportedOperationException("Not implemented: listCryptoKeysCallable()"); + } + + public UnaryCallable + listCryptoKeyVersionsPagedCallable() { + throw new UnsupportedOperationException( + "Not implemented: listCryptoKeyVersionsPagedCallable()"); + } + + public UnaryCallable + listCryptoKeyVersionsCallable() { + throw new UnsupportedOperationException("Not implemented: listCryptoKeyVersionsCallable()"); + } + + public UnaryCallable + listImportJobsPagedCallable() { + throw new UnsupportedOperationException("Not implemented: listImportJobsPagedCallable()"); + } + + public UnaryCallable listImportJobsCallable() { + throw new UnsupportedOperationException("Not implemented: listImportJobsCallable()"); + } + + public UnaryCallable getKeyRingCallable() { + throw new UnsupportedOperationException("Not implemented: getKeyRingCallable()"); + } + + public UnaryCallable getCryptoKeyCallable() { + throw new UnsupportedOperationException("Not implemented: getCryptoKeyCallable()"); + } + + public UnaryCallable getCryptoKeyVersionCallable() { + throw new UnsupportedOperationException("Not implemented: getCryptoKeyVersionCallable()"); + } + + public UnaryCallable getPublicKeyCallable() { + throw new UnsupportedOperationException("Not implemented: getPublicKeyCallable()"); + } + + public UnaryCallable getImportJobCallable() { + throw new UnsupportedOperationException("Not implemented: getImportJobCallable()"); + } + + public UnaryCallable createKeyRingCallable() { + throw new UnsupportedOperationException("Not implemented: createKeyRingCallable()"); + } + + public UnaryCallable createCryptoKeyCallable() { + throw new UnsupportedOperationException("Not implemented: createCryptoKeyCallable()"); + } + + public UnaryCallable + createCryptoKeyVersionCallable() { + throw new UnsupportedOperationException("Not implemented: createCryptoKeyVersionCallable()"); + } + + public UnaryCallable + importCryptoKeyVersionCallable() { + throw new UnsupportedOperationException("Not implemented: importCryptoKeyVersionCallable()"); + } + + public UnaryCallable createImportJobCallable() { + throw new UnsupportedOperationException("Not implemented: createImportJobCallable()"); + } + + public UnaryCallable updateCryptoKeyCallable() { + throw new UnsupportedOperationException("Not implemented: updateCryptoKeyCallable()"); + } + + public UnaryCallable + updateCryptoKeyVersionCallable() { + throw new UnsupportedOperationException("Not implemented: updateCryptoKeyVersionCallable()"); + } + + public UnaryCallable encryptCallable() { + throw new UnsupportedOperationException("Not implemented: encryptCallable()"); + } + + public UnaryCallable decryptCallable() { + throw new UnsupportedOperationException("Not implemented: decryptCallable()"); + } + + public UnaryCallable asymmetricSignCallable() { + throw new UnsupportedOperationException("Not implemented: asymmetricSignCallable()"); + } + + public UnaryCallable + asymmetricDecryptCallable() { + throw new UnsupportedOperationException("Not implemented: asymmetricDecryptCallable()"); + } + + public UnaryCallable + updateCryptoKeyPrimaryVersionCallable() { + throw new UnsupportedOperationException( + "Not implemented: updateCryptoKeyPrimaryVersionCallable()"); + } + + public UnaryCallable + destroyCryptoKeyVersionCallable() { + throw new UnsupportedOperationException("Not implemented: destroyCryptoKeyVersionCallable()"); + } + + public UnaryCallable + restoreCryptoKeyVersionCallable() { + throw new UnsupportedOperationException("Not implemented: restoreCryptoKeyVersionCallable()"); + } + + public UnaryCallable setIamPolicyCallable() { + throw new UnsupportedOperationException("Not implemented: setIamPolicyCallable()"); + } + + public UnaryCallable getIamPolicyCallable() { + throw new UnsupportedOperationException("Not implemented: getIamPolicyCallable()"); + } + + public UnaryCallable + testIamPermissionsCallable() { + throw new UnsupportedOperationException("Not implemented: testIamPermissionsCallable()"); + } + + @Override + public abstract void close(); +} diff --git a/test/integration/goldens/kms/KeyManagementServiceStubSettings.java b/test/integration/goldens/kms/KeyManagementServiceStubSettings.java new file mode 100644 index 0000000000..d139077679 --- /dev/null +++ b/test/integration/goldens/kms/KeyManagementServiceStubSettings.java @@ -0,0 +1,1199 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.kms.v1.stub; + +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListCryptoKeyVersionsPagedResponse; +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListCryptoKeysPagedResponse; +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListImportJobsPagedResponse; +import static com.google.cloud.kms.v1.KeyManagementServiceClient.ListKeyRingsPagedResponse; + +import com.google.api.core.ApiFunction; +import com.google.api.core.ApiFuture; +import com.google.api.core.BetaApi; +import com.google.api.gax.core.GaxProperties; +import com.google.api.gax.core.GoogleCredentialsProvider; +import com.google.api.gax.core.InstantiatingExecutorProvider; +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.retrying.RetrySettings; +import com.google.api.gax.rpc.ApiCallContext; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.PageContext; +import com.google.api.gax.rpc.PagedCallSettings; +import com.google.api.gax.rpc.PagedListDescriptor; +import com.google.api.gax.rpc.PagedListResponseFactory; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.StubSettings; +import com.google.api.gax.rpc.TransportChannelProvider; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.cloud.kms.v1.AsymmetricDecryptRequest; +import com.google.cloud.kms.v1.AsymmetricDecryptResponse; +import com.google.cloud.kms.v1.AsymmetricSignRequest; +import com.google.cloud.kms.v1.AsymmetricSignResponse; +import com.google.cloud.kms.v1.CreateCryptoKeyRequest; +import com.google.cloud.kms.v1.CreateCryptoKeyVersionRequest; +import com.google.cloud.kms.v1.CreateImportJobRequest; +import com.google.cloud.kms.v1.CreateKeyRingRequest; +import com.google.cloud.kms.v1.CryptoKey; +import com.google.cloud.kms.v1.CryptoKeyVersion; +import com.google.cloud.kms.v1.DecryptRequest; +import com.google.cloud.kms.v1.DecryptResponse; +import com.google.cloud.kms.v1.DestroyCryptoKeyVersionRequest; +import com.google.cloud.kms.v1.EncryptRequest; +import com.google.cloud.kms.v1.EncryptResponse; +import com.google.cloud.kms.v1.GetCryptoKeyRequest; +import com.google.cloud.kms.v1.GetCryptoKeyVersionRequest; +import com.google.cloud.kms.v1.GetImportJobRequest; +import com.google.cloud.kms.v1.GetKeyRingRequest; +import com.google.cloud.kms.v1.GetPublicKeyRequest; +import com.google.cloud.kms.v1.ImportCryptoKeyVersionRequest; +import com.google.cloud.kms.v1.ImportJob; +import com.google.cloud.kms.v1.KeyRing; +import com.google.cloud.kms.v1.ListCryptoKeyVersionsRequest; +import com.google.cloud.kms.v1.ListCryptoKeyVersionsResponse; +import com.google.cloud.kms.v1.ListCryptoKeysRequest; +import com.google.cloud.kms.v1.ListCryptoKeysResponse; +import com.google.cloud.kms.v1.ListImportJobsRequest; +import com.google.cloud.kms.v1.ListImportJobsResponse; +import com.google.cloud.kms.v1.ListKeyRingsRequest; +import com.google.cloud.kms.v1.ListKeyRingsResponse; +import com.google.cloud.kms.v1.PublicKey; +import com.google.cloud.kms.v1.RestoreCryptoKeyVersionRequest; +import com.google.cloud.kms.v1.UpdateCryptoKeyPrimaryVersionRequest; +import com.google.cloud.kms.v1.UpdateCryptoKeyRequest; +import com.google.cloud.kms.v1.UpdateCryptoKeyVersionRequest; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Lists; +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 java.io.IOException; +import java.util.List; +import javax.annotation.Generated; +import org.threeten.bp.Duration; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * Settings class to configure an instance of {@link KeyManagementServiceStub}. + * + *

The default instance has everything set to sensible defaults: + * + *

    + *
  • The default service address (cloudkms.googleapis.com) and default port (443) are used. + *
  • Credentials are acquired automatically through Application Default Credentials. + *
  • Retries are configured for idempotent methods but not for non-idempotent methods. + *
+ * + *

The builder of this class is recursive, so contained classes are themselves builders. When + * build() is called, the tree of builders is called to create the complete settings object. + * + *

For example, to set the total timeout of getKeyRing to 30 seconds: + * + *

{@code
+ * KeyManagementServiceStubSettings.Builder keyManagementServiceSettingsBuilder =
+ *     KeyManagementServiceStubSettings.newBuilder();
+ * keyManagementServiceSettingsBuilder
+ *     .getKeyRingSettings()
+ *     .setRetrySettings(
+ *         keyManagementServiceSettingsBuilder
+ *             .getKeyRingSettings()
+ *             .getRetrySettings()
+ *             .toBuilder()
+ *             .setTotalTimeout(Duration.ofSeconds(30))
+ *             .build());
+ * KeyManagementServiceStubSettings keyManagementServiceSettings =
+ *     keyManagementServiceSettingsBuilder.build();
+ * }
+ */ +@Generated("by gapic-generator-java") +public class KeyManagementServiceStubSettings + extends StubSettings { + /** The default scopes of the service. */ + private static final ImmutableList DEFAULT_SERVICE_SCOPES = + ImmutableList.builder() + .add("https://www.googleapis.com/auth/cloud-platform") + .add("https://www.googleapis.com/auth/cloudkms") + .build(); + + private final PagedCallSettings< + ListKeyRingsRequest, ListKeyRingsResponse, ListKeyRingsPagedResponse> + listKeyRingsSettings; + private final PagedCallSettings< + ListCryptoKeysRequest, ListCryptoKeysResponse, ListCryptoKeysPagedResponse> + listCryptoKeysSettings; + private final PagedCallSettings< + ListCryptoKeyVersionsRequest, + ListCryptoKeyVersionsResponse, + ListCryptoKeyVersionsPagedResponse> + listCryptoKeyVersionsSettings; + private final PagedCallSettings< + ListImportJobsRequest, ListImportJobsResponse, ListImportJobsPagedResponse> + listImportJobsSettings; + private final UnaryCallSettings getKeyRingSettings; + private final UnaryCallSettings getCryptoKeySettings; + private final UnaryCallSettings + getCryptoKeyVersionSettings; + private final UnaryCallSettings getPublicKeySettings; + private final UnaryCallSettings getImportJobSettings; + private final UnaryCallSettings createKeyRingSettings; + private final UnaryCallSettings createCryptoKeySettings; + private final UnaryCallSettings + createCryptoKeyVersionSettings; + private final UnaryCallSettings + importCryptoKeyVersionSettings; + private final UnaryCallSettings createImportJobSettings; + private final UnaryCallSettings updateCryptoKeySettings; + private final UnaryCallSettings + updateCryptoKeyVersionSettings; + private final UnaryCallSettings encryptSettings; + private final UnaryCallSettings decryptSettings; + private final UnaryCallSettings + asymmetricSignSettings; + private final UnaryCallSettings + asymmetricDecryptSettings; + private final UnaryCallSettings + updateCryptoKeyPrimaryVersionSettings; + private final UnaryCallSettings + destroyCryptoKeyVersionSettings; + private final UnaryCallSettings + restoreCryptoKeyVersionSettings; + private final UnaryCallSettings setIamPolicySettings; + private final UnaryCallSettings getIamPolicySettings; + private final UnaryCallSettings + testIamPermissionsSettings; + + private static final PagedListDescriptor + LIST_KEY_RINGS_PAGE_STR_DESC = + new PagedListDescriptor() { + @Override + public String emptyToken() { + return ""; + } + + @Override + public ListKeyRingsRequest injectToken(ListKeyRingsRequest payload, String token) { + return ListKeyRingsRequest.newBuilder(payload).setPageToken(token).build(); + } + + @Override + public ListKeyRingsRequest injectPageSize(ListKeyRingsRequest payload, int pageSize) { + return ListKeyRingsRequest.newBuilder(payload).setPageSize(pageSize).build(); + } + + @Override + public Integer extractPageSize(ListKeyRingsRequest payload) { + return payload.getPageSize(); + } + + @Override + public String extractNextToken(ListKeyRingsResponse payload) { + return payload.getNextPageToken(); + } + + @Override + public Iterable extractResources(ListKeyRingsResponse payload) { + return payload.getKeyRingsList() == null + ? ImmutableList.of() + : payload.getKeyRingsList(); + } + }; + + private static final PagedListDescriptor + LIST_CRYPTO_KEYS_PAGE_STR_DESC = + new PagedListDescriptor() { + @Override + public String emptyToken() { + return ""; + } + + @Override + public ListCryptoKeysRequest injectToken(ListCryptoKeysRequest payload, String token) { + return ListCryptoKeysRequest.newBuilder(payload).setPageToken(token).build(); + } + + @Override + public ListCryptoKeysRequest injectPageSize( + ListCryptoKeysRequest payload, int pageSize) { + return ListCryptoKeysRequest.newBuilder(payload).setPageSize(pageSize).build(); + } + + @Override + public Integer extractPageSize(ListCryptoKeysRequest payload) { + return payload.getPageSize(); + } + + @Override + public String extractNextToken(ListCryptoKeysResponse payload) { + return payload.getNextPageToken(); + } + + @Override + public Iterable extractResources(ListCryptoKeysResponse payload) { + return payload.getCryptoKeysList() == null + ? ImmutableList.of() + : payload.getCryptoKeysList(); + } + }; + + private static final PagedListDescriptor< + ListCryptoKeyVersionsRequest, ListCryptoKeyVersionsResponse, CryptoKeyVersion> + LIST_CRYPTO_KEY_VERSIONS_PAGE_STR_DESC = + new PagedListDescriptor< + ListCryptoKeyVersionsRequest, ListCryptoKeyVersionsResponse, CryptoKeyVersion>() { + @Override + public String emptyToken() { + return ""; + } + + @Override + public ListCryptoKeyVersionsRequest injectToken( + ListCryptoKeyVersionsRequest payload, String token) { + return ListCryptoKeyVersionsRequest.newBuilder(payload).setPageToken(token).build(); + } + + @Override + public ListCryptoKeyVersionsRequest injectPageSize( + ListCryptoKeyVersionsRequest payload, int pageSize) { + return ListCryptoKeyVersionsRequest.newBuilder(payload).setPageSize(pageSize).build(); + } + + @Override + public Integer extractPageSize(ListCryptoKeyVersionsRequest payload) { + return payload.getPageSize(); + } + + @Override + public String extractNextToken(ListCryptoKeyVersionsResponse payload) { + return payload.getNextPageToken(); + } + + @Override + public Iterable extractResources( + ListCryptoKeyVersionsResponse payload) { + return payload.getCryptoKeyVersionsList() == null + ? ImmutableList.of() + : payload.getCryptoKeyVersionsList(); + } + }; + + private static final PagedListDescriptor + LIST_IMPORT_JOBS_PAGE_STR_DESC = + new PagedListDescriptor() { + @Override + public String emptyToken() { + return ""; + } + + @Override + public ListImportJobsRequest injectToken(ListImportJobsRequest payload, String token) { + return ListImportJobsRequest.newBuilder(payload).setPageToken(token).build(); + } + + @Override + public ListImportJobsRequest injectPageSize( + ListImportJobsRequest payload, int pageSize) { + return ListImportJobsRequest.newBuilder(payload).setPageSize(pageSize).build(); + } + + @Override + public Integer extractPageSize(ListImportJobsRequest payload) { + return payload.getPageSize(); + } + + @Override + public String extractNextToken(ListImportJobsResponse payload) { + return payload.getNextPageToken(); + } + + @Override + public Iterable extractResources(ListImportJobsResponse payload) { + return payload.getImportJobsList() == null + ? ImmutableList.of() + : payload.getImportJobsList(); + } + }; + + private static final PagedListResponseFactory< + ListKeyRingsRequest, ListKeyRingsResponse, ListKeyRingsPagedResponse> + LIST_KEY_RINGS_PAGE_STR_FACT = + new PagedListResponseFactory< + ListKeyRingsRequest, ListKeyRingsResponse, ListKeyRingsPagedResponse>() { + @Override + public ApiFuture getFuturePagedResponse( + UnaryCallable callable, + ListKeyRingsRequest request, + ApiCallContext context, + ApiFuture futureResponse) { + PageContext pageContext = + PageContext.create(callable, LIST_KEY_RINGS_PAGE_STR_DESC, request, context); + return ListKeyRingsPagedResponse.createAsync(pageContext, futureResponse); + } + }; + + private static final PagedListResponseFactory< + ListCryptoKeysRequest, ListCryptoKeysResponse, ListCryptoKeysPagedResponse> + LIST_CRYPTO_KEYS_PAGE_STR_FACT = + new PagedListResponseFactory< + ListCryptoKeysRequest, ListCryptoKeysResponse, ListCryptoKeysPagedResponse>() { + @Override + public ApiFuture getFuturePagedResponse( + UnaryCallable callable, + ListCryptoKeysRequest request, + ApiCallContext context, + ApiFuture futureResponse) { + PageContext pageContext = + PageContext.create(callable, LIST_CRYPTO_KEYS_PAGE_STR_DESC, request, context); + return ListCryptoKeysPagedResponse.createAsync(pageContext, futureResponse); + } + }; + + private static final PagedListResponseFactory< + ListCryptoKeyVersionsRequest, + ListCryptoKeyVersionsResponse, + ListCryptoKeyVersionsPagedResponse> + LIST_CRYPTO_KEY_VERSIONS_PAGE_STR_FACT = + new PagedListResponseFactory< + ListCryptoKeyVersionsRequest, + ListCryptoKeyVersionsResponse, + ListCryptoKeyVersionsPagedResponse>() { + @Override + public ApiFuture getFuturePagedResponse( + UnaryCallable callable, + ListCryptoKeyVersionsRequest request, + ApiCallContext context, + ApiFuture futureResponse) { + PageContext< + ListCryptoKeyVersionsRequest, ListCryptoKeyVersionsResponse, CryptoKeyVersion> + pageContext = + PageContext.create( + callable, LIST_CRYPTO_KEY_VERSIONS_PAGE_STR_DESC, request, context); + return ListCryptoKeyVersionsPagedResponse.createAsync(pageContext, futureResponse); + } + }; + + private static final PagedListResponseFactory< + ListImportJobsRequest, ListImportJobsResponse, ListImportJobsPagedResponse> + LIST_IMPORT_JOBS_PAGE_STR_FACT = + new PagedListResponseFactory< + ListImportJobsRequest, ListImportJobsResponse, ListImportJobsPagedResponse>() { + @Override + public ApiFuture getFuturePagedResponse( + UnaryCallable callable, + ListImportJobsRequest request, + ApiCallContext context, + ApiFuture futureResponse) { + PageContext pageContext = + PageContext.create(callable, LIST_IMPORT_JOBS_PAGE_STR_DESC, request, context); + return ListImportJobsPagedResponse.createAsync(pageContext, futureResponse); + } + }; + + /** Returns the object with the settings used for calls to listKeyRings. */ + public PagedCallSettings + listKeyRingsSettings() { + return listKeyRingsSettings; + } + + /** Returns the object with the settings used for calls to listCryptoKeys. */ + public PagedCallSettings< + ListCryptoKeysRequest, ListCryptoKeysResponse, ListCryptoKeysPagedResponse> + listCryptoKeysSettings() { + return listCryptoKeysSettings; + } + + /** Returns the object with the settings used for calls to listCryptoKeyVersions. */ + public PagedCallSettings< + ListCryptoKeyVersionsRequest, + ListCryptoKeyVersionsResponse, + ListCryptoKeyVersionsPagedResponse> + listCryptoKeyVersionsSettings() { + return listCryptoKeyVersionsSettings; + } + + /** Returns the object with the settings used for calls to listImportJobs. */ + public PagedCallSettings< + ListImportJobsRequest, ListImportJobsResponse, ListImportJobsPagedResponse> + listImportJobsSettings() { + return listImportJobsSettings; + } + + /** Returns the object with the settings used for calls to getKeyRing. */ + public UnaryCallSettings getKeyRingSettings() { + return getKeyRingSettings; + } + + /** Returns the object with the settings used for calls to getCryptoKey. */ + public UnaryCallSettings getCryptoKeySettings() { + return getCryptoKeySettings; + } + + /** Returns the object with the settings used for calls to getCryptoKeyVersion. */ + public UnaryCallSettings + getCryptoKeyVersionSettings() { + return getCryptoKeyVersionSettings; + } + + /** Returns the object with the settings used for calls to getPublicKey. */ + public UnaryCallSettings getPublicKeySettings() { + return getPublicKeySettings; + } + + /** Returns the object with the settings used for calls to getImportJob. */ + public UnaryCallSettings getImportJobSettings() { + return getImportJobSettings; + } + + /** Returns the object with the settings used for calls to createKeyRing. */ + public UnaryCallSettings createKeyRingSettings() { + return createKeyRingSettings; + } + + /** Returns the object with the settings used for calls to createCryptoKey. */ + public UnaryCallSettings createCryptoKeySettings() { + return createCryptoKeySettings; + } + + /** Returns the object with the settings used for calls to createCryptoKeyVersion. */ + public UnaryCallSettings + createCryptoKeyVersionSettings() { + return createCryptoKeyVersionSettings; + } + + /** Returns the object with the settings used for calls to importCryptoKeyVersion. */ + public UnaryCallSettings + importCryptoKeyVersionSettings() { + return importCryptoKeyVersionSettings; + } + + /** Returns the object with the settings used for calls to createImportJob. */ + public UnaryCallSettings createImportJobSettings() { + return createImportJobSettings; + } + + /** Returns the object with the settings used for calls to updateCryptoKey. */ + public UnaryCallSettings updateCryptoKeySettings() { + return updateCryptoKeySettings; + } + + /** Returns the object with the settings used for calls to updateCryptoKeyVersion. */ + public UnaryCallSettings + updateCryptoKeyVersionSettings() { + return updateCryptoKeyVersionSettings; + } + + /** Returns the object with the settings used for calls to encrypt. */ + public UnaryCallSettings encryptSettings() { + return encryptSettings; + } + + /** Returns the object with the settings used for calls to decrypt. */ + public UnaryCallSettings decryptSettings() { + return decryptSettings; + } + + /** Returns the object with the settings used for calls to asymmetricSign. */ + public UnaryCallSettings asymmetricSignSettings() { + return asymmetricSignSettings; + } + + /** Returns the object with the settings used for calls to asymmetricDecrypt. */ + public UnaryCallSettings + asymmetricDecryptSettings() { + return asymmetricDecryptSettings; + } + + /** Returns the object with the settings used for calls to updateCryptoKeyPrimaryVersion. */ + public UnaryCallSettings + updateCryptoKeyPrimaryVersionSettings() { + return updateCryptoKeyPrimaryVersionSettings; + } + + /** Returns the object with the settings used for calls to destroyCryptoKeyVersion. */ + public UnaryCallSettings + destroyCryptoKeyVersionSettings() { + return destroyCryptoKeyVersionSettings; + } + + /** Returns the object with the settings used for calls to restoreCryptoKeyVersion. */ + public UnaryCallSettings + restoreCryptoKeyVersionSettings() { + return restoreCryptoKeyVersionSettings; + } + + /** Returns the object with the settings used for calls to setIamPolicy. */ + public UnaryCallSettings setIamPolicySettings() { + return setIamPolicySettings; + } + + /** Returns the object with the settings used for calls to getIamPolicy. */ + public UnaryCallSettings getIamPolicySettings() { + return getIamPolicySettings; + } + + /** Returns the object with the settings used for calls to testIamPermissions. */ + public UnaryCallSettings + testIamPermissionsSettings() { + return testIamPermissionsSettings; + } + + @BetaApi("A restructuring of stub classes is planned, so this may break in the future") + public KeyManagementServiceStub createStub() throws IOException { + if (getTransportChannelProvider() + .getTransportName() + .equals(GrpcTransportChannel.getGrpcTransportName())) { + return GrpcKeyManagementServiceStub.create(this); + } + throw new UnsupportedOperationException( + String.format( + "Transport not supported: %s", getTransportChannelProvider().getTransportName())); + } + + /** Returns a builder for the default ExecutorProvider for this service. */ + public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { + return InstantiatingExecutorProvider.newBuilder(); + } + + /** Returns the default service endpoint. */ + public static String getDefaultEndpoint() { + return "cloudkms.googleapis.com:443"; + } + + /** Returns the default service scopes. */ + public static List getDefaultServiceScopes() { + return DEFAULT_SERVICE_SCOPES; + } + + /** Returns a builder for the default credentials for this service. */ + public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { + return GoogleCredentialsProvider.newBuilder().setScopesToApply(DEFAULT_SERVICE_SCOPES); + } + + /** Returns a builder for the default ChannelProvider for this service. */ + public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { + return InstantiatingGrpcChannelProvider.newBuilder() + .setMaxInboundMessageSize(Integer.MAX_VALUE); + } + + 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() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken( + "gapic", GaxProperties.getLibraryVersion(KeyManagementServiceStubSettings.class)) + .setTransportToken( + GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); + } + + /** Returns a new builder for this class. */ + public static Builder newBuilder() { + return Builder.createDefault(); + } + + /** Returns a new builder for this class. */ + public static Builder newBuilder(ClientContext clientContext) { + return new Builder(clientContext); + } + + /** Returns a builder containing all the values of this settings class. */ + public Builder toBuilder() { + return new Builder(this); + } + + protected KeyManagementServiceStubSettings(Builder settingsBuilder) throws IOException { + super(settingsBuilder); + + listKeyRingsSettings = settingsBuilder.listKeyRingsSettings().build(); + listCryptoKeysSettings = settingsBuilder.listCryptoKeysSettings().build(); + listCryptoKeyVersionsSettings = settingsBuilder.listCryptoKeyVersionsSettings().build(); + listImportJobsSettings = settingsBuilder.listImportJobsSettings().build(); + getKeyRingSettings = settingsBuilder.getKeyRingSettings().build(); + getCryptoKeySettings = settingsBuilder.getCryptoKeySettings().build(); + getCryptoKeyVersionSettings = settingsBuilder.getCryptoKeyVersionSettings().build(); + getPublicKeySettings = settingsBuilder.getPublicKeySettings().build(); + getImportJobSettings = settingsBuilder.getImportJobSettings().build(); + createKeyRingSettings = settingsBuilder.createKeyRingSettings().build(); + createCryptoKeySettings = settingsBuilder.createCryptoKeySettings().build(); + createCryptoKeyVersionSettings = settingsBuilder.createCryptoKeyVersionSettings().build(); + importCryptoKeyVersionSettings = settingsBuilder.importCryptoKeyVersionSettings().build(); + createImportJobSettings = settingsBuilder.createImportJobSettings().build(); + updateCryptoKeySettings = settingsBuilder.updateCryptoKeySettings().build(); + updateCryptoKeyVersionSettings = settingsBuilder.updateCryptoKeyVersionSettings().build(); + encryptSettings = settingsBuilder.encryptSettings().build(); + decryptSettings = settingsBuilder.decryptSettings().build(); + asymmetricSignSettings = settingsBuilder.asymmetricSignSettings().build(); + asymmetricDecryptSettings = settingsBuilder.asymmetricDecryptSettings().build(); + updateCryptoKeyPrimaryVersionSettings = + settingsBuilder.updateCryptoKeyPrimaryVersionSettings().build(); + destroyCryptoKeyVersionSettings = settingsBuilder.destroyCryptoKeyVersionSettings().build(); + restoreCryptoKeyVersionSettings = settingsBuilder.restoreCryptoKeyVersionSettings().build(); + setIamPolicySettings = settingsBuilder.setIamPolicySettings().build(); + getIamPolicySettings = settingsBuilder.getIamPolicySettings().build(); + testIamPermissionsSettings = settingsBuilder.testIamPermissionsSettings().build(); + } + + /** Builder for KeyManagementServiceStubSettings. */ + public static class Builder + extends StubSettings.Builder { + private final ImmutableList> unaryMethodSettingsBuilders; + private final PagedCallSettings.Builder< + ListKeyRingsRequest, ListKeyRingsResponse, ListKeyRingsPagedResponse> + listKeyRingsSettings; + private final PagedCallSettings.Builder< + ListCryptoKeysRequest, ListCryptoKeysResponse, ListCryptoKeysPagedResponse> + listCryptoKeysSettings; + private final PagedCallSettings.Builder< + ListCryptoKeyVersionsRequest, + ListCryptoKeyVersionsResponse, + ListCryptoKeyVersionsPagedResponse> + listCryptoKeyVersionsSettings; + private final PagedCallSettings.Builder< + ListImportJobsRequest, ListImportJobsResponse, ListImportJobsPagedResponse> + listImportJobsSettings; + private final UnaryCallSettings.Builder getKeyRingSettings; + private final UnaryCallSettings.Builder getCryptoKeySettings; + private final UnaryCallSettings.Builder + getCryptoKeyVersionSettings; + private final UnaryCallSettings.Builder getPublicKeySettings; + private final UnaryCallSettings.Builder getImportJobSettings; + private final UnaryCallSettings.Builder createKeyRingSettings; + private final UnaryCallSettings.Builder + createCryptoKeySettings; + private final UnaryCallSettings.Builder + createCryptoKeyVersionSettings; + private final UnaryCallSettings.Builder + importCryptoKeyVersionSettings; + private final UnaryCallSettings.Builder + createImportJobSettings; + private final UnaryCallSettings.Builder + updateCryptoKeySettings; + private final UnaryCallSettings.Builder + updateCryptoKeyVersionSettings; + private final UnaryCallSettings.Builder encryptSettings; + private final UnaryCallSettings.Builder decryptSettings; + private final UnaryCallSettings.Builder + asymmetricSignSettings; + private final UnaryCallSettings.Builder + asymmetricDecryptSettings; + private final UnaryCallSettings.Builder + updateCryptoKeyPrimaryVersionSettings; + private final UnaryCallSettings.Builder + destroyCryptoKeyVersionSettings; + private final UnaryCallSettings.Builder + restoreCryptoKeyVersionSettings; + private final UnaryCallSettings.Builder setIamPolicySettings; + private final UnaryCallSettings.Builder getIamPolicySettings; + private final UnaryCallSettings.Builder + testIamPermissionsSettings; + private static final ImmutableMap> + RETRYABLE_CODE_DEFINITIONS; + + static { + ImmutableMap.Builder> definitions = + ImmutableMap.builder(); + definitions.put( + "retry_policy_1_codes", + ImmutableSet.copyOf( + Lists.newArrayList( + StatusCode.Code.INTERNAL, + StatusCode.Code.UNAVAILABLE, + StatusCode.Code.DEADLINE_EXCEEDED))); + definitions.put( + "no_retry_0_codes", ImmutableSet.copyOf(Lists.newArrayList())); + RETRYABLE_CODE_DEFINITIONS = definitions.build(); + } + + private static final ImmutableMap RETRY_PARAM_DEFINITIONS; + + static { + ImmutableMap.Builder definitions = ImmutableMap.builder(); + RetrySettings settings = null; + settings = + RetrySettings.newBuilder() + .setInitialRetryDelay(Duration.ofMillis(100L)) + .setRetryDelayMultiplier(1.3) + .setMaxRetryDelay(Duration.ofMillis(60000L)) + .setInitialRpcTimeout(Duration.ofMillis(60000L)) + .setRpcTimeoutMultiplier(1.0) + .setMaxRpcTimeout(Duration.ofMillis(60000L)) + .setTotalTimeout(Duration.ofMillis(60000L)) + .build(); + definitions.put("retry_policy_1_params", settings); + settings = + RetrySettings.newBuilder() + .setInitialRpcTimeout(Duration.ofMillis(60000L)) + .setRpcTimeoutMultiplier(1.0) + .setMaxRpcTimeout(Duration.ofMillis(60000L)) + .setTotalTimeout(Duration.ofMillis(60000L)) + .build(); + definitions.put("no_retry_0_params", settings); + RETRY_PARAM_DEFINITIONS = definitions.build(); + } + + protected Builder() { + this(((ClientContext) null)); + } + + protected Builder(ClientContext clientContext) { + super(clientContext); + + listKeyRingsSettings = PagedCallSettings.newBuilder(LIST_KEY_RINGS_PAGE_STR_FACT); + listCryptoKeysSettings = PagedCallSettings.newBuilder(LIST_CRYPTO_KEYS_PAGE_STR_FACT); + listCryptoKeyVersionsSettings = + PagedCallSettings.newBuilder(LIST_CRYPTO_KEY_VERSIONS_PAGE_STR_FACT); + listImportJobsSettings = PagedCallSettings.newBuilder(LIST_IMPORT_JOBS_PAGE_STR_FACT); + getKeyRingSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + getCryptoKeySettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + getCryptoKeyVersionSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + getPublicKeySettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + getImportJobSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + createKeyRingSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + createCryptoKeySettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + createCryptoKeyVersionSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + importCryptoKeyVersionSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + createImportJobSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + updateCryptoKeySettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + updateCryptoKeyVersionSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + encryptSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + decryptSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + asymmetricSignSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + asymmetricDecryptSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + updateCryptoKeyPrimaryVersionSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + destroyCryptoKeyVersionSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + restoreCryptoKeyVersionSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + setIamPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + getIamPolicySettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + testIamPermissionsSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + + unaryMethodSettingsBuilders = + ImmutableList.>of( + listKeyRingsSettings, + listCryptoKeysSettings, + listCryptoKeyVersionsSettings, + listImportJobsSettings, + getKeyRingSettings, + getCryptoKeySettings, + getCryptoKeyVersionSettings, + getPublicKeySettings, + getImportJobSettings, + createKeyRingSettings, + createCryptoKeySettings, + createCryptoKeyVersionSettings, + importCryptoKeyVersionSettings, + createImportJobSettings, + updateCryptoKeySettings, + updateCryptoKeyVersionSettings, + encryptSettings, + decryptSettings, + asymmetricSignSettings, + asymmetricDecryptSettings, + updateCryptoKeyPrimaryVersionSettings, + destroyCryptoKeyVersionSettings, + restoreCryptoKeyVersionSettings, + setIamPolicySettings, + getIamPolicySettings, + testIamPermissionsSettings); + initDefaults(this); + } + + protected Builder(KeyManagementServiceStubSettings settings) { + super(settings); + + listKeyRingsSettings = settings.listKeyRingsSettings.toBuilder(); + listCryptoKeysSettings = settings.listCryptoKeysSettings.toBuilder(); + listCryptoKeyVersionsSettings = settings.listCryptoKeyVersionsSettings.toBuilder(); + listImportJobsSettings = settings.listImportJobsSettings.toBuilder(); + getKeyRingSettings = settings.getKeyRingSettings.toBuilder(); + getCryptoKeySettings = settings.getCryptoKeySettings.toBuilder(); + getCryptoKeyVersionSettings = settings.getCryptoKeyVersionSettings.toBuilder(); + getPublicKeySettings = settings.getPublicKeySettings.toBuilder(); + getImportJobSettings = settings.getImportJobSettings.toBuilder(); + createKeyRingSettings = settings.createKeyRingSettings.toBuilder(); + createCryptoKeySettings = settings.createCryptoKeySettings.toBuilder(); + createCryptoKeyVersionSettings = settings.createCryptoKeyVersionSettings.toBuilder(); + importCryptoKeyVersionSettings = settings.importCryptoKeyVersionSettings.toBuilder(); + createImportJobSettings = settings.createImportJobSettings.toBuilder(); + updateCryptoKeySettings = settings.updateCryptoKeySettings.toBuilder(); + updateCryptoKeyVersionSettings = settings.updateCryptoKeyVersionSettings.toBuilder(); + encryptSettings = settings.encryptSettings.toBuilder(); + decryptSettings = settings.decryptSettings.toBuilder(); + asymmetricSignSettings = settings.asymmetricSignSettings.toBuilder(); + asymmetricDecryptSettings = settings.asymmetricDecryptSettings.toBuilder(); + updateCryptoKeyPrimaryVersionSettings = + settings.updateCryptoKeyPrimaryVersionSettings.toBuilder(); + destroyCryptoKeyVersionSettings = settings.destroyCryptoKeyVersionSettings.toBuilder(); + restoreCryptoKeyVersionSettings = settings.restoreCryptoKeyVersionSettings.toBuilder(); + setIamPolicySettings = settings.setIamPolicySettings.toBuilder(); + getIamPolicySettings = settings.getIamPolicySettings.toBuilder(); + testIamPermissionsSettings = settings.testIamPermissionsSettings.toBuilder(); + + unaryMethodSettingsBuilders = + ImmutableList.>of( + listKeyRingsSettings, + listCryptoKeysSettings, + listCryptoKeyVersionsSettings, + listImportJobsSettings, + getKeyRingSettings, + getCryptoKeySettings, + getCryptoKeyVersionSettings, + getPublicKeySettings, + getImportJobSettings, + createKeyRingSettings, + createCryptoKeySettings, + createCryptoKeyVersionSettings, + importCryptoKeyVersionSettings, + createImportJobSettings, + updateCryptoKeySettings, + updateCryptoKeyVersionSettings, + encryptSettings, + decryptSettings, + asymmetricSignSettings, + asymmetricDecryptSettings, + updateCryptoKeyPrimaryVersionSettings, + destroyCryptoKeyVersionSettings, + restoreCryptoKeyVersionSettings, + setIamPolicySettings, + getIamPolicySettings, + testIamPermissionsSettings); + } + + private static Builder createDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultTransportChannelProvider()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + + return initDefaults(builder); + } + + private static Builder initDefaults(Builder builder) { + builder + .listKeyRingsSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .listCryptoKeysSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .listCryptoKeyVersionsSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .listImportJobsSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .getKeyRingSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .getCryptoKeySettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .getCryptoKeyVersionSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .getPublicKeySettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .getImportJobSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .createKeyRingSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .createCryptoKeySettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .createCryptoKeyVersionSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_0_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_0_params")); + + builder + .importCryptoKeyVersionSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_0_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_0_params")); + + builder + .createImportJobSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .updateCryptoKeySettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .updateCryptoKeyVersionSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .encryptSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .decryptSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .asymmetricSignSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .asymmetricDecryptSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .updateCryptoKeyPrimaryVersionSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .destroyCryptoKeyVersionSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .restoreCryptoKeyVersionSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .setIamPolicySettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .getIamPolicySettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + builder + .testIamPermissionsSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_1_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_1_params")); + + return builder; + } + + // NEXT_MAJOR_VER: remove 'throws Exception'. + /** + * Applies the given settings updater function to all of the unary API methods in this service. + * + *

Note: This method does not support applying settings to streaming methods. + */ + public Builder applyToAllUnaryMethods( + ApiFunction, Void> settingsUpdater) throws Exception { + super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater); + return this; + } + + public ImmutableList> unaryMethodSettingsBuilders() { + return unaryMethodSettingsBuilders; + } + + /** Returns the builder for the settings used for calls to listKeyRings. */ + public PagedCallSettings.Builder< + ListKeyRingsRequest, ListKeyRingsResponse, ListKeyRingsPagedResponse> + listKeyRingsSettings() { + return listKeyRingsSettings; + } + + /** Returns the builder for the settings used for calls to listCryptoKeys. */ + public PagedCallSettings.Builder< + ListCryptoKeysRequest, ListCryptoKeysResponse, ListCryptoKeysPagedResponse> + listCryptoKeysSettings() { + return listCryptoKeysSettings; + } + + /** Returns the builder for the settings used for calls to listCryptoKeyVersions. */ + public PagedCallSettings.Builder< + ListCryptoKeyVersionsRequest, + ListCryptoKeyVersionsResponse, + ListCryptoKeyVersionsPagedResponse> + listCryptoKeyVersionsSettings() { + return listCryptoKeyVersionsSettings; + } + + /** Returns the builder for the settings used for calls to listImportJobs. */ + public PagedCallSettings.Builder< + ListImportJobsRequest, ListImportJobsResponse, ListImportJobsPagedResponse> + listImportJobsSettings() { + return listImportJobsSettings; + } + + /** Returns the builder for the settings used for calls to getKeyRing. */ + public UnaryCallSettings.Builder getKeyRingSettings() { + return getKeyRingSettings; + } + + /** Returns the builder for the settings used for calls to getCryptoKey. */ + public UnaryCallSettings.Builder getCryptoKeySettings() { + return getCryptoKeySettings; + } + + /** Returns the builder for the settings used for calls to getCryptoKeyVersion. */ + public UnaryCallSettings.Builder + getCryptoKeyVersionSettings() { + return getCryptoKeyVersionSettings; + } + + /** Returns the builder for the settings used for calls to getPublicKey. */ + public UnaryCallSettings.Builder getPublicKeySettings() { + return getPublicKeySettings; + } + + /** Returns the builder for the settings used for calls to getImportJob. */ + public UnaryCallSettings.Builder getImportJobSettings() { + return getImportJobSettings; + } + + /** Returns the builder for the settings used for calls to createKeyRing. */ + public UnaryCallSettings.Builder createKeyRingSettings() { + return createKeyRingSettings; + } + + /** Returns the builder for the settings used for calls to createCryptoKey. */ + public UnaryCallSettings.Builder createCryptoKeySettings() { + return createCryptoKeySettings; + } + + /** Returns the builder for the settings used for calls to createCryptoKeyVersion. */ + public UnaryCallSettings.Builder + createCryptoKeyVersionSettings() { + return createCryptoKeyVersionSettings; + } + + /** Returns the builder for the settings used for calls to importCryptoKeyVersion. */ + public UnaryCallSettings.Builder + importCryptoKeyVersionSettings() { + return importCryptoKeyVersionSettings; + } + + /** Returns the builder for the settings used for calls to createImportJob. */ + public UnaryCallSettings.Builder createImportJobSettings() { + return createImportJobSettings; + } + + /** Returns the builder for the settings used for calls to updateCryptoKey. */ + public UnaryCallSettings.Builder updateCryptoKeySettings() { + return updateCryptoKeySettings; + } + + /** Returns the builder for the settings used for calls to updateCryptoKeyVersion. */ + public UnaryCallSettings.Builder + updateCryptoKeyVersionSettings() { + return updateCryptoKeyVersionSettings; + } + + /** Returns the builder for the settings used for calls to encrypt. */ + public UnaryCallSettings.Builder encryptSettings() { + return encryptSettings; + } + + /** Returns the builder for the settings used for calls to decrypt. */ + public UnaryCallSettings.Builder decryptSettings() { + return decryptSettings; + } + + /** Returns the builder for the settings used for calls to asymmetricSign. */ + public UnaryCallSettings.Builder + asymmetricSignSettings() { + return asymmetricSignSettings; + } + + /** Returns the builder for the settings used for calls to asymmetricDecrypt. */ + public UnaryCallSettings.Builder + asymmetricDecryptSettings() { + return asymmetricDecryptSettings; + } + + /** Returns the builder for the settings used for calls to updateCryptoKeyPrimaryVersion. */ + public UnaryCallSettings.Builder + updateCryptoKeyPrimaryVersionSettings() { + return updateCryptoKeyPrimaryVersionSettings; + } + + /** Returns the builder for the settings used for calls to destroyCryptoKeyVersion. */ + public UnaryCallSettings.Builder + destroyCryptoKeyVersionSettings() { + return destroyCryptoKeyVersionSettings; + } + + /** Returns the builder for the settings used for calls to restoreCryptoKeyVersion. */ + public UnaryCallSettings.Builder + restoreCryptoKeyVersionSettings() { + return restoreCryptoKeyVersionSettings; + } + + /** Returns the builder for the settings used for calls to setIamPolicy. */ + public UnaryCallSettings.Builder setIamPolicySettings() { + return setIamPolicySettings; + } + + /** Returns the builder for the settings used for calls to getIamPolicy. */ + public UnaryCallSettings.Builder getIamPolicySettings() { + return getIamPolicySettings; + } + + /** Returns the builder for the settings used for calls to testIamPermissions. */ + public UnaryCallSettings.Builder + testIamPermissionsSettings() { + return testIamPermissionsSettings; + } + + @Override + public KeyManagementServiceStubSettings build() throws IOException { + return new KeyManagementServiceStubSettings(this); + } + } +} diff --git a/test/integration/goldens/kms/KeyRingName.java b/test/integration/goldens/kms/KeyRingName.java new file mode 100644 index 0000000000..28109b2666 --- /dev/null +++ b/test/integration/goldens/kms/KeyRingName.java @@ -0,0 +1,223 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.kms.v1; + +import com.google.api.pathtemplate.PathTemplate; +import com.google.api.resourcenames.ResourceName; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +@Generated("by gapic-generator-java") +public class KeyRingName implements ResourceName { + private static final PathTemplate PROJECT_LOCATION_KEY_RING = + PathTemplate.createWithoutUrlEncoding( + "projects/{project}/locations/{location}/keyRings/{key_ring}"); + private volatile Map fieldValuesMap; + private final String project; + private final String location; + private final String keyRing; + + @Deprecated + protected KeyRingName() { + project = null; + location = null; + keyRing = null; + } + + private KeyRingName(Builder builder) { + project = Preconditions.checkNotNull(builder.getProject()); + location = Preconditions.checkNotNull(builder.getLocation()); + keyRing = Preconditions.checkNotNull(builder.getKeyRing()); + } + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public String getKeyRing() { + return keyRing; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder(this); + } + + public static KeyRingName of(String project, String location, String keyRing) { + return newBuilder().setProject(project).setLocation(location).setKeyRing(keyRing).build(); + } + + public static String format(String project, String location, String keyRing) { + return newBuilder() + .setProject(project) + .setLocation(location) + .setKeyRing(keyRing) + .build() + .toString(); + } + + public static KeyRingName parse(String formattedString) { + if (formattedString.isEmpty()) { + return null; + } + Map matchMap = + PROJECT_LOCATION_KEY_RING.validatedMatch( + formattedString, "KeyRingName.parse: formattedString not in valid format"); + return of(matchMap.get("project"), matchMap.get("location"), matchMap.get("key_ring")); + } + + public static List parseList(List formattedStrings) { + List list = new ArrayList<>(formattedStrings.size()); + for (String formattedString : formattedStrings) { + list.add(parse(formattedString)); + } + return list; + } + + public static List toStringList(List values) { + List list = new ArrayList<>(values.size()); + for (KeyRingName value : values) { + if (value == null) { + list.add(""); + } else { + list.add(value.toString()); + } + } + return list; + } + + public static boolean isParsableFrom(String formattedString) { + return PROJECT_LOCATION_KEY_RING.matches(formattedString); + } + + @Override + public Map getFieldValuesMap() { + if (fieldValuesMap == null) { + synchronized (this) { + if (fieldValuesMap == null) { + ImmutableMap.Builder fieldMapBuilder = ImmutableMap.builder(); + if (project != null) { + fieldMapBuilder.put("project", project); + } + if (location != null) { + fieldMapBuilder.put("location", location); + } + if (keyRing != null) { + fieldMapBuilder.put("key_ring", keyRing); + } + fieldValuesMap = fieldMapBuilder.build(); + } + } + } + return fieldValuesMap; + } + + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return PROJECT_LOCATION_KEY_RING.instantiate( + "project", project, "location", location, "key_ring", keyRing); + } + + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + if (o != null || getClass() == o.getClass()) { + KeyRingName that = ((KeyRingName) o); + return Objects.equals(this.project, that.project) + && Objects.equals(this.location, that.location) + && Objects.equals(this.keyRing, that.keyRing); + } + return false; + } + + @Override + public int hashCode() { + int h = 1; + h *= 1000003; + h ^= Objects.hashCode(project); + h *= 1000003; + h ^= Objects.hashCode(location); + h *= 1000003; + h ^= Objects.hashCode(keyRing); + return h; + } + + /** Builder for projects/{project}/locations/{location}/keyRings/{key_ring}. */ + public static class Builder { + private String project; + private String location; + private String keyRing; + + protected Builder() {} + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public String getKeyRing() { + return keyRing; + } + + public Builder setProject(String project) { + this.project = project; + return this; + } + + public Builder setLocation(String location) { + this.location = location; + return this; + } + + public Builder setKeyRing(String keyRing) { + this.keyRing = keyRing; + return this; + } + + private Builder(KeyRingName keyRingName) { + project = keyRingName.project; + location = keyRingName.location; + keyRing = keyRingName.keyRing; + } + + public KeyRingName build() { + return new KeyRingName(this); + } + } +} diff --git a/test/integration/goldens/kms/LocationName.java b/test/integration/goldens/kms/LocationName.java new file mode 100644 index 0000000000..007b010334 --- /dev/null +++ b/test/integration/goldens/kms/LocationName.java @@ -0,0 +1,192 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.kms.v1; + +import com.google.api.pathtemplate.PathTemplate; +import com.google.api.resourcenames.ResourceName; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +@Generated("by gapic-generator-java") +public class LocationName implements ResourceName { + private static final PathTemplate PROJECT_LOCATION = + PathTemplate.createWithoutUrlEncoding("projects/{project}/locations/{location}"); + private volatile Map fieldValuesMap; + private final String project; + private final String location; + + @Deprecated + protected LocationName() { + project = null; + location = null; + } + + private LocationName(Builder builder) { + project = Preconditions.checkNotNull(builder.getProject()); + location = Preconditions.checkNotNull(builder.getLocation()); + } + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder(this); + } + + public static LocationName of(String project, String location) { + return newBuilder().setProject(project).setLocation(location).build(); + } + + public static String format(String project, String location) { + return newBuilder().setProject(project).setLocation(location).build().toString(); + } + + public static LocationName parse(String formattedString) { + if (formattedString.isEmpty()) { + return null; + } + Map matchMap = + PROJECT_LOCATION.validatedMatch( + formattedString, "LocationName.parse: formattedString not in valid format"); + return of(matchMap.get("project"), matchMap.get("location")); + } + + public static List parseList(List formattedStrings) { + List list = new ArrayList<>(formattedStrings.size()); + for (String formattedString : formattedStrings) { + list.add(parse(formattedString)); + } + return list; + } + + public static List toStringList(List values) { + List list = new ArrayList<>(values.size()); + for (LocationName value : values) { + if (value == null) { + list.add(""); + } else { + list.add(value.toString()); + } + } + return list; + } + + public static boolean isParsableFrom(String formattedString) { + return PROJECT_LOCATION.matches(formattedString); + } + + @Override + public Map getFieldValuesMap() { + if (fieldValuesMap == null) { + synchronized (this) { + if (fieldValuesMap == null) { + ImmutableMap.Builder fieldMapBuilder = ImmutableMap.builder(); + if (project != null) { + fieldMapBuilder.put("project", project); + } + if (location != null) { + fieldMapBuilder.put("location", location); + } + fieldValuesMap = fieldMapBuilder.build(); + } + } + } + return fieldValuesMap; + } + + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return PROJECT_LOCATION.instantiate("project", project, "location", location); + } + + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + if (o != null || getClass() == o.getClass()) { + LocationName that = ((LocationName) o); + return Objects.equals(this.project, that.project) + && Objects.equals(this.location, that.location); + } + return false; + } + + @Override + public int hashCode() { + int h = 1; + h *= 1000003; + h ^= Objects.hashCode(project); + h *= 1000003; + h ^= Objects.hashCode(location); + return h; + } + + /** Builder for projects/{project}/locations/{location}. */ + public static class Builder { + private String project; + private String location; + + protected Builder() {} + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public Builder setProject(String project) { + this.project = project; + return this; + } + + public Builder setLocation(String location) { + this.location = location; + return this; + } + + private Builder(LocationName locationName) { + project = locationName.project; + location = locationName.location; + } + + public LocationName build() { + return new LocationName(this); + } + } +} diff --git a/test/integration/goldens/kms/MockIAMPolicy.java b/test/integration/goldens/kms/MockIAMPolicy.java new file mode 100644 index 0000000000..b7ebc56b18 --- /dev/null +++ b/test/integration/goldens/kms/MockIAMPolicy.java @@ -0,0 +1,59 @@ +/* + * Copyright 2020 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.iam.v1; + +import com.google.api.core.BetaApi; +import com.google.api.gax.grpc.testing.MockGrpcService; +import com.google.protobuf.AbstractMessage; +import io.grpc.ServerServiceDefinition; +import java.util.List; +import javax.annotation.Generated; + +@BetaApi +@Generated("by gapic-generator-java") +public class MockIAMPolicy implements MockGrpcService { + private final MockIAMPolicyImpl serviceImpl; + + public MockIAMPolicy() { + serviceImpl = new MockIAMPolicyImpl(); + } + + @Override + public List getRequests() { + return serviceImpl.getRequests(); + } + + @Override + public void addResponse(AbstractMessage response) { + serviceImpl.addResponse(response); + } + + @Override + public void addException(Exception exception) { + serviceImpl.addException(exception); + } + + @Override + public ServerServiceDefinition getServiceDefinition() { + return serviceImpl.bindService(); + } + + @Override + public void reset() { + serviceImpl.reset(); + } +} diff --git a/test/integration/goldens/kms/MockIAMPolicyImpl.java b/test/integration/goldens/kms/MockIAMPolicyImpl.java new file mode 100644 index 0000000000..920aec564d --- /dev/null +++ b/test/integration/goldens/kms/MockIAMPolicyImpl.java @@ -0,0 +1,122 @@ +/* + * Copyright 2020 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.iam.v1; + +import com.google.api.core.BetaApi; +import com.google.iam.v1.IAMPolicyGrpc.IAMPolicyImplBase; +import com.google.protobuf.AbstractMessage; +import io.grpc.stub.StreamObserver; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Queue; +import javax.annotation.Generated; + +@BetaApi +@Generated("by gapic-generator-java") +public class MockIAMPolicyImpl extends IAMPolicyImplBase { + private List requests; + private Queue responses; + + public MockIAMPolicyImpl() { + requests = new ArrayList<>(); + responses = new LinkedList<>(); + } + + public List getRequests() { + return requests; + } + + public void addResponse(AbstractMessage response) { + responses.add(response); + } + + public void setResponses(List responses) { + this.responses = new LinkedList(responses); + } + + public void addException(Exception exception) { + responses.add(exception); + } + + public void reset() { + requests = new ArrayList<>(); + responses = new LinkedList<>(); + } + + @Override + public void setIamPolicy(SetIamPolicyRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof Policy) { + requests.add(request); + responseObserver.onNext(((Policy) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method SetIamPolicy, expected %s or %s", + response.getClass().getName(), + Policy.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void getIamPolicy(GetIamPolicyRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof Policy) { + requests.add(request); + responseObserver.onNext(((Policy) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method GetIamPolicy, expected %s or %s", + response.getClass().getName(), + Policy.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void testIamPermissions( + TestIamPermissionsRequest request, + StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof TestIamPermissionsResponse) { + requests.add(request); + responseObserver.onNext(((TestIamPermissionsResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method TestIamPermissions, expected %s or %s", + response.getClass().getName(), + TestIamPermissionsResponse.class.getName(), + Exception.class.getName()))); + } + } +} diff --git a/test/integration/goldens/kms/MockKeyManagementService.java b/test/integration/goldens/kms/MockKeyManagementService.java new file mode 100644 index 0000000000..7558dedbf4 --- /dev/null +++ b/test/integration/goldens/kms/MockKeyManagementService.java @@ -0,0 +1,59 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.kms.v1; + +import com.google.api.core.BetaApi; +import com.google.api.gax.grpc.testing.MockGrpcService; +import com.google.protobuf.AbstractMessage; +import io.grpc.ServerServiceDefinition; +import java.util.List; +import javax.annotation.Generated; + +@BetaApi +@Generated("by gapic-generator-java") +public class MockKeyManagementService implements MockGrpcService { + private final MockKeyManagementServiceImpl serviceImpl; + + public MockKeyManagementService() { + serviceImpl = new MockKeyManagementServiceImpl(); + } + + @Override + public List getRequests() { + return serviceImpl.getRequests(); + } + + @Override + public void addResponse(AbstractMessage response) { + serviceImpl.addResponse(response); + } + + @Override + public void addException(Exception exception) { + serviceImpl.addException(exception); + } + + @Override + public ServerServiceDefinition getServiceDefinition() { + return serviceImpl.bindService(); + } + + @Override + public void reset() { + serviceImpl.reset(); + } +} diff --git a/test/integration/goldens/kms/MockKeyManagementServiceImpl.java b/test/integration/goldens/kms/MockKeyManagementServiceImpl.java new file mode 100644 index 0000000000..d979462264 --- /dev/null +++ b/test/integration/goldens/kms/MockKeyManagementServiceImpl.java @@ -0,0 +1,542 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.kms.v1; + +import com.google.api.core.BetaApi; +import com.google.cloud.kms.v1.KeyManagementServiceGrpc.KeyManagementServiceImplBase; +import com.google.protobuf.AbstractMessage; +import io.grpc.stub.StreamObserver; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Queue; +import javax.annotation.Generated; + +@BetaApi +@Generated("by gapic-generator-java") +public class MockKeyManagementServiceImpl extends KeyManagementServiceImplBase { + private List requests; + private Queue responses; + + public MockKeyManagementServiceImpl() { + requests = new ArrayList<>(); + responses = new LinkedList<>(); + } + + public List getRequests() { + return requests; + } + + public void addResponse(AbstractMessage response) { + responses.add(response); + } + + public void setResponses(List responses) { + this.responses = new LinkedList(responses); + } + + public void addException(Exception exception) { + responses.add(exception); + } + + public void reset() { + requests = new ArrayList<>(); + responses = new LinkedList<>(); + } + + @Override + public void listKeyRings( + ListKeyRingsRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof ListKeyRingsResponse) { + requests.add(request); + responseObserver.onNext(((ListKeyRingsResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method ListKeyRings, expected %s or %s", + response.getClass().getName(), + ListKeyRingsResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void listCryptoKeys( + ListCryptoKeysRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof ListCryptoKeysResponse) { + requests.add(request); + responseObserver.onNext(((ListCryptoKeysResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method ListCryptoKeys, expected %s or %s", + response.getClass().getName(), + ListCryptoKeysResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void listCryptoKeyVersions( + ListCryptoKeyVersionsRequest request, + StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof ListCryptoKeyVersionsResponse) { + requests.add(request); + responseObserver.onNext(((ListCryptoKeyVersionsResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method ListCryptoKeyVersions, expected %s or %s", + response.getClass().getName(), + ListCryptoKeyVersionsResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void listImportJobs( + ListImportJobsRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof ListImportJobsResponse) { + requests.add(request); + responseObserver.onNext(((ListImportJobsResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method ListImportJobs, expected %s or %s", + response.getClass().getName(), + ListImportJobsResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void getKeyRing(GetKeyRingRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof KeyRing) { + requests.add(request); + responseObserver.onNext(((KeyRing) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method GetKeyRing, expected %s or %s", + response.getClass().getName(), + KeyRing.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void getCryptoKey( + GetCryptoKeyRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof CryptoKey) { + requests.add(request); + responseObserver.onNext(((CryptoKey) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method GetCryptoKey, expected %s or %s", + response.getClass().getName(), + CryptoKey.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void getCryptoKeyVersion( + GetCryptoKeyVersionRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof CryptoKeyVersion) { + requests.add(request); + responseObserver.onNext(((CryptoKeyVersion) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method GetCryptoKeyVersion, expected %s or %s", + response.getClass().getName(), + CryptoKeyVersion.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void getPublicKey( + GetPublicKeyRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof PublicKey) { + requests.add(request); + responseObserver.onNext(((PublicKey) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method GetPublicKey, expected %s or %s", + response.getClass().getName(), + PublicKey.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void getImportJob( + GetImportJobRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof ImportJob) { + requests.add(request); + responseObserver.onNext(((ImportJob) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method GetImportJob, expected %s or %s", + response.getClass().getName(), + ImportJob.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void createKeyRing( + CreateKeyRingRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof KeyRing) { + requests.add(request); + responseObserver.onNext(((KeyRing) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method CreateKeyRing, expected %s or %s", + response.getClass().getName(), + KeyRing.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void createCryptoKey( + CreateCryptoKeyRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof CryptoKey) { + requests.add(request); + responseObserver.onNext(((CryptoKey) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method CreateCryptoKey, expected %s or %s", + response.getClass().getName(), + CryptoKey.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void createCryptoKeyVersion( + CreateCryptoKeyVersionRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof CryptoKeyVersion) { + requests.add(request); + responseObserver.onNext(((CryptoKeyVersion) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method CreateCryptoKeyVersion, expected %s or %s", + response.getClass().getName(), + CryptoKeyVersion.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void importCryptoKeyVersion( + ImportCryptoKeyVersionRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof CryptoKeyVersion) { + requests.add(request); + responseObserver.onNext(((CryptoKeyVersion) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method ImportCryptoKeyVersion, expected %s or %s", + response.getClass().getName(), + CryptoKeyVersion.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void createImportJob( + CreateImportJobRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof ImportJob) { + requests.add(request); + responseObserver.onNext(((ImportJob) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method CreateImportJob, expected %s or %s", + response.getClass().getName(), + ImportJob.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void updateCryptoKey( + UpdateCryptoKeyRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof CryptoKey) { + requests.add(request); + responseObserver.onNext(((CryptoKey) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method UpdateCryptoKey, expected %s or %s", + response.getClass().getName(), + CryptoKey.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void updateCryptoKeyVersion( + UpdateCryptoKeyVersionRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof CryptoKeyVersion) { + requests.add(request); + responseObserver.onNext(((CryptoKeyVersion) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method UpdateCryptoKeyVersion, expected %s or %s", + response.getClass().getName(), + CryptoKeyVersion.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void encrypt(EncryptRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof EncryptResponse) { + requests.add(request); + responseObserver.onNext(((EncryptResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method Encrypt, expected %s or %s", + response.getClass().getName(), + EncryptResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void decrypt(DecryptRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof DecryptResponse) { + requests.add(request); + responseObserver.onNext(((DecryptResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method Decrypt, expected %s or %s", + response.getClass().getName(), + DecryptResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void asymmetricSign( + AsymmetricSignRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof AsymmetricSignResponse) { + requests.add(request); + responseObserver.onNext(((AsymmetricSignResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method AsymmetricSign, expected %s or %s", + response.getClass().getName(), + AsymmetricSignResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void asymmetricDecrypt( + AsymmetricDecryptRequest request, + StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof AsymmetricDecryptResponse) { + requests.add(request); + responseObserver.onNext(((AsymmetricDecryptResponse) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method AsymmetricDecrypt, expected %s or %s", + response.getClass().getName(), + AsymmetricDecryptResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void updateCryptoKeyPrimaryVersion( + UpdateCryptoKeyPrimaryVersionRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof CryptoKey) { + requests.add(request); + responseObserver.onNext(((CryptoKey) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method UpdateCryptoKeyPrimaryVersion, expected %s or %s", + response.getClass().getName(), + CryptoKey.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void destroyCryptoKeyVersion( + DestroyCryptoKeyVersionRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof CryptoKeyVersion) { + requests.add(request); + responseObserver.onNext(((CryptoKeyVersion) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method DestroyCryptoKeyVersion, expected %s or %s", + response.getClass().getName(), + CryptoKeyVersion.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void restoreCryptoKeyVersion( + RestoreCryptoKeyVersionRequest request, StreamObserver responseObserver) { + Object response = responses.remove(); + if (response instanceof CryptoKeyVersion) { + requests.add(request); + responseObserver.onNext(((CryptoKeyVersion) response)); + responseObserver.onCompleted(); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method RestoreCryptoKeyVersion, expected %s or %s", + response.getClass().getName(), + CryptoKeyVersion.class.getName(), + Exception.class.getName()))); + } + } +} diff --git a/test/integration/goldens/kms/PublicKeyName.java b/test/integration/goldens/kms/PublicKeyName.java new file mode 100644 index 0000000000..4518c2a4fb --- /dev/null +++ b/test/integration/goldens/kms/PublicKeyName.java @@ -0,0 +1,298 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.kms.v1; + +import com.google.api.pathtemplate.PathTemplate; +import com.google.api.resourcenames.ResourceName; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +@Generated("by gapic-generator-java") +public class PublicKeyName implements ResourceName { + private static final PathTemplate PROJECT_LOCATION_KEY_RING_CRYPTO_KEY_CRYPTO_KEY_VERSION = + PathTemplate.createWithoutUrlEncoding( + "projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}/publicKey"); + private volatile Map fieldValuesMap; + private final String project; + private final String location; + private final String keyRing; + private final String cryptoKey; + private final String cryptoKeyVersion; + + @Deprecated + protected PublicKeyName() { + project = null; + location = null; + keyRing = null; + cryptoKey = null; + cryptoKeyVersion = null; + } + + private PublicKeyName(Builder builder) { + project = Preconditions.checkNotNull(builder.getProject()); + location = Preconditions.checkNotNull(builder.getLocation()); + keyRing = Preconditions.checkNotNull(builder.getKeyRing()); + cryptoKey = Preconditions.checkNotNull(builder.getCryptoKey()); + cryptoKeyVersion = Preconditions.checkNotNull(builder.getCryptoKeyVersion()); + } + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public String getKeyRing() { + return keyRing; + } + + public String getCryptoKey() { + return cryptoKey; + } + + public String getCryptoKeyVersion() { + return cryptoKeyVersion; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder(this); + } + + public static PublicKeyName of( + String project, String location, String keyRing, String cryptoKey, String cryptoKeyVersion) { + return newBuilder() + .setProject(project) + .setLocation(location) + .setKeyRing(keyRing) + .setCryptoKey(cryptoKey) + .setCryptoKeyVersion(cryptoKeyVersion) + .build(); + } + + public static String format( + String project, String location, String keyRing, String cryptoKey, String cryptoKeyVersion) { + return newBuilder() + .setProject(project) + .setLocation(location) + .setKeyRing(keyRing) + .setCryptoKey(cryptoKey) + .setCryptoKeyVersion(cryptoKeyVersion) + .build() + .toString(); + } + + public static PublicKeyName parse(String formattedString) { + if (formattedString.isEmpty()) { + return null; + } + Map matchMap = + PROJECT_LOCATION_KEY_RING_CRYPTO_KEY_CRYPTO_KEY_VERSION.validatedMatch( + formattedString, "PublicKeyName.parse: formattedString not in valid format"); + return of( + matchMap.get("project"), + matchMap.get("location"), + matchMap.get("key_ring"), + matchMap.get("crypto_key"), + matchMap.get("crypto_key_version")); + } + + public static List parseList(List formattedStrings) { + List list = new ArrayList<>(formattedStrings.size()); + for (String formattedString : formattedStrings) { + list.add(parse(formattedString)); + } + return list; + } + + public static List toStringList(List values) { + List list = new ArrayList<>(values.size()); + for (PublicKeyName value : values) { + if (value == null) { + list.add(""); + } else { + list.add(value.toString()); + } + } + return list; + } + + public static boolean isParsableFrom(String formattedString) { + return PROJECT_LOCATION_KEY_RING_CRYPTO_KEY_CRYPTO_KEY_VERSION.matches(formattedString); + } + + @Override + public Map getFieldValuesMap() { + if (fieldValuesMap == null) { + synchronized (this) { + if (fieldValuesMap == null) { + ImmutableMap.Builder fieldMapBuilder = ImmutableMap.builder(); + if (project != null) { + fieldMapBuilder.put("project", project); + } + if (location != null) { + fieldMapBuilder.put("location", location); + } + if (keyRing != null) { + fieldMapBuilder.put("key_ring", keyRing); + } + if (cryptoKey != null) { + fieldMapBuilder.put("crypto_key", cryptoKey); + } + if (cryptoKeyVersion != null) { + fieldMapBuilder.put("crypto_key_version", cryptoKeyVersion); + } + fieldValuesMap = fieldMapBuilder.build(); + } + } + } + return fieldValuesMap; + } + + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return PROJECT_LOCATION_KEY_RING_CRYPTO_KEY_CRYPTO_KEY_VERSION.instantiate( + "project", + project, + "location", + location, + "key_ring", + keyRing, + "crypto_key", + cryptoKey, + "crypto_key_version", + cryptoKeyVersion); + } + + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + if (o != null || getClass() == o.getClass()) { + PublicKeyName that = ((PublicKeyName) o); + return Objects.equals(this.project, that.project) + && Objects.equals(this.location, that.location) + && Objects.equals(this.keyRing, that.keyRing) + && Objects.equals(this.cryptoKey, that.cryptoKey) + && Objects.equals(this.cryptoKeyVersion, that.cryptoKeyVersion); + } + return false; + } + + @Override + public int hashCode() { + int h = 1; + h *= 1000003; + h ^= Objects.hashCode(project); + h *= 1000003; + h ^= Objects.hashCode(location); + h *= 1000003; + h ^= Objects.hashCode(keyRing); + h *= 1000003; + h ^= Objects.hashCode(cryptoKey); + h *= 1000003; + h ^= Objects.hashCode(cryptoKeyVersion); + return h; + } + + /** + * Builder for + * projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}/cryptoKeyVersions/{crypto_key_version}/publicKey. + */ + public static class Builder { + private String project; + private String location; + private String keyRing; + private String cryptoKey; + private String cryptoKeyVersion; + + protected Builder() {} + + public String getProject() { + return project; + } + + public String getLocation() { + return location; + } + + public String getKeyRing() { + return keyRing; + } + + public String getCryptoKey() { + return cryptoKey; + } + + public String getCryptoKeyVersion() { + return cryptoKeyVersion; + } + + public Builder setProject(String project) { + this.project = project; + return this; + } + + public Builder setLocation(String location) { + this.location = location; + return this; + } + + public Builder setKeyRing(String keyRing) { + this.keyRing = keyRing; + return this; + } + + public Builder setCryptoKey(String cryptoKey) { + this.cryptoKey = cryptoKey; + return this; + } + + public Builder setCryptoKeyVersion(String cryptoKeyVersion) { + this.cryptoKeyVersion = cryptoKeyVersion; + return this; + } + + private Builder(PublicKeyName publicKeyName) { + project = publicKeyName.project; + location = publicKeyName.location; + keyRing = publicKeyName.keyRing; + cryptoKey = publicKeyName.cryptoKey; + cryptoKeyVersion = publicKeyName.cryptoKeyVersion; + } + + public PublicKeyName build() { + return new PublicKeyName(this); + } + } +} diff --git a/test/integration/goldens/kms/package-info.java b/test/integration/goldens/kms/package-info.java new file mode 100644 index 0000000000..679e42f4cb --- /dev/null +++ b/test/integration/goldens/kms/package-info.java @@ -0,0 +1,52 @@ +/* + * Copyright 2020 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. + */ + +/** + * A client to Cloud Key Management Service (KMS) API + * + *

The interfaces provided are listed below, along with usage samples. + * + *

======================= KeyManagementServiceClient ======================= + * + *

Service Description: Google Cloud Key Management Service + * + *

Manages cryptographic keys and operations using those keys. Implements a REST model with the + * following objects: + * + *

    + *
  • [KeyRing][google.cloud.kms.v1.KeyRing] + *
  • [CryptoKey][google.cloud.kms.v1.CryptoKey] + *
  • [CryptoKeyVersion][google.cloud.kms.v1.CryptoKeyVersion] + *
  • [ImportJob][google.cloud.kms.v1.ImportJob] + *
+ * + *

If you are using manual gRPC libraries, see [Using gRPC with Cloud + * KMS](https://cloud.google.com/kms/docs/grpc). + * + *

Sample for KeyManagementServiceClient: + * + *

{@code
+ * try (KeyManagementServiceClient keyManagementServiceClient =
+ *     KeyManagementServiceClient.create()) {
+ *   KeyRingName name = KeyRingName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]");
+ *   KeyRing response = keyManagementServiceClient.getKeyRing(name);
+ * }
+ * }
+ */ +@Generated("by gapic-generator-java") +package com.google.cloud.kms.v1; + +import javax.annotation.Generated; From 0d165d8fd5c4d6c34c9e97013dbd64171c1763ca Mon Sep 17 00:00:00 2001 From: Mira Leung Date: Wed, 17 Feb 2021 10:16:10 -0800 Subject: [PATCH 2/3] fix: comment typo Co-authored-by: Noah Dietz --- rules_java_gapic/java_gapic.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rules_java_gapic/java_gapic.bzl b/rules_java_gapic/java_gapic.bzl index 46881d59e6..86db28aae0 100644 --- a/rules_java_gapic/java_gapic.bzl +++ b/rules_java_gapic/java_gapic.bzl @@ -142,7 +142,7 @@ def java_gapic_library( # Check the allow-list. # Open this up after mixins are published, and gate on - # the allowlisted "mised-in" APIs present in Java. + # the allowlisted "mixed-in" APIs present in Java. if service_yaml: service_yaml_in_allowlist = False for keyword in SERVICE_YAML_ALLOWLIST: From 1fa0a5510e83751b484cf8ccd9563b2299cd180f Mon Sep 17 00:00:00 2001 From: Mira Leung Date: Wed, 17 Feb 2021 10:20:12 -0800 Subject: [PATCH 3/3] fix: add TODO --- rules_java_gapic/java_gapic.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rules_java_gapic/java_gapic.bzl b/rules_java_gapic/java_gapic.bzl index 86db28aae0..04d988cf81 100644 --- a/rules_java_gapic/java_gapic.bzl +++ b/rules_java_gapic/java_gapic.bzl @@ -141,7 +141,7 @@ def java_gapic_library( file_args_dict[gapic_yaml] = "gapic-config" # Check the allow-list. - # Open this up after mixins are published, and gate on + # TODO: Open this up after mixins are published, and gate on # the allowlisted "mixed-in" APIs present in Java. if service_yaml: service_yaml_in_allowlist = False