From d13b388d6ce2a6144e9c0f9347069a36b09e9fc3 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 4 Jan 2023 14:03:06 -0500 Subject: [PATCH 01/63] feat: Add callable getter methods for REST --- ...ractTransportServiceStubClassComposer.java | 73 +++++++++++++++---- .../grpcrest/goldens/HttpJsonEchoStub.golden | 13 ++++ 2 files changed, 73 insertions(+), 13 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java index c2f4fb7473..6b907dd19c 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java @@ -59,6 +59,7 @@ import com.google.api.generator.gapic.model.Message; import com.google.api.generator.gapic.model.Method; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -126,7 +127,8 @@ private static TypeStore createStaticTypes() { RequestParamsExtractor.class, ServerStreamingCallable.class, TimeUnit.class, - UnaryCallable.class); + UnaryCallable.class, + UnsupportedOperationException.class); return new TypeStore(concreteClazzes); } @@ -190,6 +192,20 @@ public GapicClass generate(GapicContext context, Service service) { messageTypes, context.restNumericEnumsEnabled()); + List methodDefinitions = + createClassMethods( + context, + service, + typeStore, + classMemberVarExprs, + callableClassMemberVarExprs, + protoMethodNameToDescriptorVarExprs, + classStatements); + methodDefinitions.addAll(createInvalidClassMethods(service)); + methodDefinitions.addAll( + createStubOverrideMethods( + classMemberVarExprs.get(BACKGROUND_RESOURCES_MEMBER_NAME), service)); + StubCommentComposer commentComposer = new StubCommentComposer(getTransportContext().transportNames().get(0)); @@ -204,20 +220,54 @@ public GapicClass generate(GapicContext context, Service service) { .setName(className) .setExtendsType( typeStore.get(getTransportContext().classNames().getServiceStubClassName(service))) - .setMethods( - createClassMethods( - context, - service, - typeStore, - classMemberVarExprs, - callableClassMemberVarExprs, - protoMethodNameToDescriptorVarExprs, - classStatements)) + .setMethods(methodDefinitions) .setStatements(classStatements) .build(); return GapicClass.create(kind, classDef); } + private String getUnsupportedOperationExceptionReason(String callableName, Method protoMethod) { + if (protoMethod.stream() == Method.Stream.BIDI + || protoMethod.stream() == Method.Stream.CLIENT) { + return String.format( + "Not implemented: %s(). %s is not implemented for %s", + callableName, protoMethod.stream(), Transport.REST); + } else if (protoMethod.httpBindings() == null) { + return String.format( + "Not implemented: %s(). RPC is not enabled for %s", callableName, Transport.REST); + } else { + return String.format("Not implemented: %s()", callableName); + } + } + + private List createInvalidClassMethods(Service service) { + List methodDefinitions = new ArrayList<>(); + for (Method protoMethod : service.methods()) { + if (!isSupportedMethod(protoMethod)) { + String javaStyleProtoMethodName = JavaStyle.toLowerCamelCase(protoMethod.name()); + String callableName = + String.format(CALLABLE_CLASS_MEMBER_PATTERN, javaStyleProtoMethodName); + methodDefinitions.add( + MethodDefinition.builder() + .setIsOverride(true) + .setScope(ScopeNode.PUBLIC) + .setName(callableName) + .setReturnType(getCallableType(protoMethod)) + .setBody( + Arrays.asList( + ExprStatement.withExpr( + ThrowExpr.builder() + .setType(FIXED_TYPESTORE.get("UnsupportedOperationException")) + .setMessageExpr( + getUnsupportedOperationExceptionReason( + callableName, protoMethod)) + .build()))) + .build()); + } + } + return methodDefinitions; + } + protected boolean isSupportedMethod(Method method) { return true; } @@ -470,9 +520,6 @@ protected List createClassMethods( service, classMemberVarExprs.get(getTransportContext().transportOperationsStubNames().get(0)))); javaMethods.addAll(createCallableGetterMethods(callableClassMemberVarExprs)); - javaMethods.addAll( - createStubOverrideMethods( - classMemberVarExprs.get(BACKGROUND_RESOURCES_MEMBER_NAME), service)); return javaMethods; } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden index 6d6d179d9b..2913af8832 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden @@ -16,6 +16,7 @@ import com.google.api.gax.httpjson.ProtoMessageResponseParser; import com.google.api.gax.httpjson.ProtoRestSerializer; import com.google.api.gax.httpjson.longrunning.stub.HttpJsonOperationsStub; import com.google.api.gax.longrunning.OperationSnapshot; +import com.google.api.gax.rpc.BidiStreamingCallable; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.OperationCallable; import com.google.api.gax.rpc.ServerStreamingCallable; @@ -544,6 +545,18 @@ public class HttpJsonEchoStub extends EchoStub { return nestedBindingCallable; } + @Override + public BidiStreamingCallable chatCallable() { + throw new UnsupportedOperationException( + "Not implemented: chatCallable(). BIDI is not implemented for REST"); + } + + @Override + public UnaryCallable noBindingCallable() { + throw new UnsupportedOperationException( + "Not implemented: noBindingCallable(). RPC is not enabled for REST"); + } + @Override public final void close() { try { From 1fc3cc71f89bc0eddc7a6acdf06cad71d522f778 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 4 Jan 2023 15:51:53 -0500 Subject: [PATCH 02/63] chore: Update showcase tests --- .../showcase/v1beta1/stub/HttpJsonEchoStub.java | 14 ++++++++++++++ .../v1beta1/stub/HttpJsonMessagingStub.java | 16 ++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java index 3ddb5d3570..64653683bb 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java @@ -32,7 +32,9 @@ import com.google.api.gax.httpjson.ProtoRestSerializer; import com.google.api.gax.httpjson.longrunning.stub.HttpJsonOperationsStub; import com.google.api.gax.longrunning.OperationSnapshot; +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.OperationCallable; import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.UnaryCallable; @@ -524,6 +526,18 @@ public UnaryCallable blockCallable() { return blockCallable; } + @Override + public ClientStreamingCallable collectCallable() { + throw new UnsupportedOperationException( + "Not implemented: collectCallable(). CLIENT is not implemented for REST"); + } + + @Override + public BidiStreamingCallable chatCallable() { + throw new UnsupportedOperationException( + "Not implemented: chatCallable(). BIDI is not implemented for REST"); + } + @Override public final void close() { try { diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java index 41ac603817..b6d778d975 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java @@ -32,7 +32,9 @@ import com.google.api.gax.httpjson.ProtoRestSerializer; import com.google.api.gax.httpjson.longrunning.stub.HttpJsonOperationsStub; import com.google.api.gax.longrunning.OperationSnapshot; +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.OperationCallable; import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.UnaryCallable; @@ -40,6 +42,7 @@ import com.google.protobuf.Empty; import com.google.protobuf.TypeRegistry; import com.google.showcase.v1beta1.Blurb; +import com.google.showcase.v1beta1.ConnectRequest; import com.google.showcase.v1beta1.CreateBlurbRequest; import com.google.showcase.v1beta1.CreateRoomRequest; import com.google.showcase.v1beta1.DeleteBlurbRequest; @@ -54,6 +57,7 @@ import com.google.showcase.v1beta1.SearchBlurbsMetadata; import com.google.showcase.v1beta1.SearchBlurbsRequest; import com.google.showcase.v1beta1.SearchBlurbsResponse; +import com.google.showcase.v1beta1.SendBlurbsResponse; import com.google.showcase.v1beta1.StreamBlurbsRequest; import com.google.showcase.v1beta1.StreamBlurbsResponse; import com.google.showcase.v1beta1.UpdateBlurbRequest; @@ -785,6 +789,18 @@ public ServerStreamingCallable stream return streamBlurbsCallable; } + @Override + public ClientStreamingCallable sendBlurbsCallable() { + throw new UnsupportedOperationException( + "Not implemented: sendBlurbsCallable(). CLIENT is not implemented for REST"); + } + + @Override + public BidiStreamingCallable connectCallable() { + throw new UnsupportedOperationException( + "Not implemented: connectCallable(). BIDI is not implemented for REST"); + } + @Override public final void close() { try { From 516e2e825fd50beeae346709ae8b38a32eb871d8 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 4 Jan 2023 21:06:17 -0500 Subject: [PATCH 03/63] chore: Update error message --- ...bstractTransportServiceStubClassComposer.java | 15 ++------------- .../rest/HttpJsonServiceStubClassComposer.java | 16 ++++++++++++++++ .../grpcrest/goldens/HttpJsonEchoStub.golden | 4 ++-- .../showcase/v1beta1/stub/HttpJsonEchoStub.java | 4 ++-- .../v1beta1/stub/HttpJsonMessagingStub.java | 4 ++-- 5 files changed, 24 insertions(+), 19 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java index 6b907dd19c..4cf6b1a6f6 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java @@ -59,7 +59,6 @@ import com.google.api.generator.gapic.model.Message; import com.google.api.generator.gapic.model.Method; import com.google.api.generator.gapic.model.Service; -import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -226,18 +225,8 @@ public GapicClass generate(GapicContext context, Service service) { return GapicClass.create(kind, classDef); } - private String getUnsupportedOperationExceptionReason(String callableName, Method protoMethod) { - if (protoMethod.stream() == Method.Stream.BIDI - || protoMethod.stream() == Method.Stream.CLIENT) { - return String.format( - "Not implemented: %s(). %s is not implemented for %s", - callableName, protoMethod.stream(), Transport.REST); - } else if (protoMethod.httpBindings() == null) { - return String.format( - "Not implemented: %s(). RPC is not enabled for %s", callableName, Transport.REST); - } else { - return String.format("Not implemented: %s()", callableName); - } + protected String getUnsupportedOperationExceptionReason(String callableName, Method protoMethod) { + return String.format("Not implemented: %s()", callableName); } private List createInvalidClassMethods(Service service) { diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index 67e003f50f..065dfd6a2c 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -58,6 +58,7 @@ import com.google.api.generator.gapic.model.Method.Stream; import com.google.api.generator.gapic.model.OperationResponse; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.BiMap; @@ -121,6 +122,21 @@ protected boolean isSupportedMethod(Method method) { && method.stream() != Stream.CLIENT; } + protected String getUnsupportedOperationExceptionReason(String callableName, Method protoMethod) { + if (protoMethod.stream() == Method.Stream.BIDI + || protoMethod.stream() == Method.Stream.CLIENT) { + return String.format( + "Not supported: %s(). %s streaming is not implemented for %s", + callableName, protoMethod.stream(), Transport.REST); + } else if (protoMethod.httpBindings() == null) { + return String.format( + "Not implemented: %s(). %s transport is not supported for this method yet", + callableName, Transport.REST); + } else { + return String.format("Not implemented: %s()", callableName); + } + } + @Override protected boolean generateOperationsStubLogic(Service service) { return service.hasLroMethods(); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden index 2913af8832..1e1f0e16df 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden @@ -548,13 +548,13 @@ public class HttpJsonEchoStub extends EchoStub { @Override public BidiStreamingCallable chatCallable() { throw new UnsupportedOperationException( - "Not implemented: chatCallable(). BIDI is not implemented for REST"); + "Not supported: chatCallable(). BIDI streaming is not implemented for REST"); } @Override public UnaryCallable noBindingCallable() { throw new UnsupportedOperationException( - "Not implemented: noBindingCallable(). RPC is not enabled for REST"); + "Not implemented: noBindingCallable(). REST transport is not supported for this method yet"); } @Override diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java index 64653683bb..e92fea7944 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java @@ -529,13 +529,13 @@ public UnaryCallable blockCallable() { @Override public ClientStreamingCallable collectCallable() { throw new UnsupportedOperationException( - "Not implemented: collectCallable(). CLIENT is not implemented for REST"); + "Not supported: collectCallable(). CLIENT streaming is not implemented for REST"); } @Override public BidiStreamingCallable chatCallable() { throw new UnsupportedOperationException( - "Not implemented: chatCallable(). BIDI is not implemented for REST"); + "Not supported: chatCallable(). BIDI streaming is not implemented for REST"); } @Override diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java index b6d778d975..caf59606ff 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java @@ -792,13 +792,13 @@ public ServerStreamingCallable stream @Override public ClientStreamingCallable sendBlurbsCallable() { throw new UnsupportedOperationException( - "Not implemented: sendBlurbsCallable(). CLIENT is not implemented for REST"); + "Not supported: sendBlurbsCallable(). CLIENT streaming is not implemented for REST"); } @Override public BidiStreamingCallable connectCallable() { throw new UnsupportedOperationException( - "Not implemented: connectCallable(). BIDI is not implemented for REST"); + "Not supported: connectCallable(). BIDI streaming is not implemented for REST"); } @Override From 3ad09dcca5f0be60ac41691fbab81638d75568da Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 5 Jan 2023 15:49:14 -0500 Subject: [PATCH 04/63] feat: Move httpjson specific logic to sub composer --- ...ractTransportServiceStubClassComposer.java | 53 +++++-------------- .../HttpJsonServiceStubClassComposer.java | 44 +++++++++++++++ 2 files changed, 56 insertions(+), 41 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java index 4cf6b1a6f6..d022b4a86a 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java @@ -82,18 +82,18 @@ public abstract class AbstractTransportServiceStubClassComposer implements ClassComposer { private static final Statement EMPTY_LINE_STATEMENT = EmptyLineStatement.create(); - private static final String METHOD_DESCRIPTOR_NAME_PATTERN = "%sMethodDescriptor"; - private static final String PAGED_RESPONSE_TYPE_NAME_PATTERN = "%sPagedResponse"; - private static final String PAGED_CALLABLE_CLASS_MEMBER_PATTERN = "%sPagedCallable"; - - private static final String BACKGROUND_RESOURCES_MEMBER_NAME = "backgroundResources"; - private static final String CALLABLE_NAME = "Callable"; - private static final String CALLABLE_FACTORY_MEMBER_NAME = "callableFactory"; - private static final String CALLABLE_CLASS_MEMBER_PATTERN = "%sCallable"; - private static final String OPERATION_CALLABLE_CLASS_MEMBER_PATTERN = "%sOperationCallable"; - private static final String OPERATION_CALLABLE_NAME = "OperationCallable"; + protected static final String METHOD_DESCRIPTOR_NAME_PATTERN = "%sMethodDescriptor"; + protected static final String PAGED_RESPONSE_TYPE_NAME_PATTERN = "%sPagedResponse"; + protected static final String PAGED_CALLABLE_CLASS_MEMBER_PATTERN = "%sPagedCallable"; + + protected static final String BACKGROUND_RESOURCES_MEMBER_NAME = "backgroundResources"; + protected static final String CALLABLE_NAME = "Callable"; + protected static final String CALLABLE_FACTORY_MEMBER_NAME = "callableFactory"; + protected static final String CALLABLE_CLASS_MEMBER_PATTERN = "%sCallable"; + protected static final String OPERATION_CALLABLE_CLASS_MEMBER_PATTERN = "%sOperationCallable"; + protected static final String OPERATION_CALLABLE_NAME = "OperationCallable"; // private static final String OPERATIONS_STUB_MEMBER_NAME = "operationsStub"; - private static final String PAGED_CALLABLE_NAME = "PagedCallable"; + protected static final String PAGED_CALLABLE_NAME = "PagedCallable"; protected static final TypeStore FIXED_TYPESTORE = createStaticTypes(); @@ -200,7 +200,6 @@ public GapicClass generate(GapicContext context, Service service) { callableClassMemberVarExprs, protoMethodNameToDescriptorVarExprs, classStatements); - methodDefinitions.addAll(createInvalidClassMethods(service)); methodDefinitions.addAll( createStubOverrideMethods( classMemberVarExprs.get(BACKGROUND_RESOURCES_MEMBER_NAME), service)); @@ -229,34 +228,6 @@ protected String getUnsupportedOperationExceptionReason(String callableName, Met return String.format("Not implemented: %s()", callableName); } - private List createInvalidClassMethods(Service service) { - List methodDefinitions = new ArrayList<>(); - for (Method protoMethod : service.methods()) { - if (!isSupportedMethod(protoMethod)) { - String javaStyleProtoMethodName = JavaStyle.toLowerCamelCase(protoMethod.name()); - String callableName = - String.format(CALLABLE_CLASS_MEMBER_PATTERN, javaStyleProtoMethodName); - methodDefinitions.add( - MethodDefinition.builder() - .setIsOverride(true) - .setScope(ScopeNode.PUBLIC) - .setName(callableName) - .setReturnType(getCallableType(protoMethod)) - .setBody( - Arrays.asList( - ExprStatement.withExpr( - ThrowExpr.builder() - .setType(FIXED_TYPESTORE.get("UnsupportedOperationException")) - .setMessageExpr( - getUnsupportedOperationExceptionReason( - callableName, protoMethod)) - .build()))) - .build()); - } - } - return methodDefinitions; - } - protected boolean isSupportedMethod(Method method) { return true; } @@ -1139,7 +1110,7 @@ private TypeStore createDynamicTypes(Service service, String stubPakkage) { return typeStore; } - private static TypeNode getCallableType(Method protoMethod) { + protected static TypeNode getCallableType(Method protoMethod) { TypeNode callableType = FIXED_TYPESTORE.get("UnaryCallable"); switch (protoMethod.stream()) { case CLIENT: diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index 065dfd6a2c..65504c600b 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -45,6 +45,7 @@ import com.google.api.generator.engine.ast.Statement; import com.google.api.generator.engine.ast.StringObjectValue; import com.google.api.generator.engine.ast.ThisObjectValue; +import com.google.api.generator.engine.ast.ThrowExpr; import com.google.api.generator.engine.ast.TypeNode; import com.google.api.generator.engine.ast.ValueExpr; import com.google.api.generator.engine.ast.VaporReference; @@ -52,6 +53,7 @@ import com.google.api.generator.engine.ast.VariableExpr; import com.google.api.generator.gapic.composer.common.AbstractTransportServiceStubClassComposer; import com.google.api.generator.gapic.composer.store.TypeStore; +import com.google.api.generator.gapic.model.GapicContext; import com.google.api.generator.gapic.model.HttpBindings.HttpBinding; import com.google.api.generator.gapic.model.Message; import com.google.api.generator.gapic.model.Method; @@ -1264,4 +1266,46 @@ protected List createTypeRegistry(Service service) { .setValueExpr(typeRegistryBuilderExpr) .build())); } + + protected List createClassMethods( + GapicContext context, + Service service, + TypeStore typeStore, + Map classMemberVarExprs, + Map callableClassMemberVarExprs, + Map protoMethodNameToDescriptorVarExprs, + List classStatements) { + List javaMethods = new ArrayList<>(); + javaMethods.addAll(super.createClassMethods(context, service, typeStore, classMemberVarExprs, callableClassMemberVarExprs, protoMethodNameToDescriptorVarExprs, classStatements)); + javaMethods.addAll(createInvalidClassMethods(service)); + return javaMethods; + } + + private List createInvalidClassMethods(Service service) { + List methodDefinitions = new ArrayList<>(); + for (Method protoMethod : service.methods()) { + if (!isSupportedMethod(protoMethod)) { + String javaStyleProtoMethodName = JavaStyle.toLowerCamelCase(protoMethod.name()); + String callableName = + String.format(CALLABLE_CLASS_MEMBER_PATTERN, javaStyleProtoMethodName); + methodDefinitions.add( + MethodDefinition.builder() + .setIsOverride(true) + .setScope(ScopeNode.PUBLIC) + .setName(callableName) + .setReturnType(getCallableType(protoMethod)) + .setBody( + Arrays.asList( + ExprStatement.withExpr( + ThrowExpr.builder() + .setType(FIXED_TYPESTORE.get("UnsupportedOperationException")) + .setMessageExpr( + getUnsupportedOperationExceptionReason( + callableName, protoMethod)) + .build()))) + .build()); + } + } + return methodDefinitions; + } } From edf088a928d8cdd9f5a266b33014a68bef4564e1 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 5 Jan 2023 16:04:11 -0500 Subject: [PATCH 05/63] feat: Move method supported logic to Method --- .../AbstractTransportServiceStubClassComposer.java | 4 +--- .../grpc/GrpcServiceStubClassComposer.java | 5 +++++ .../rest/HttpJsonServiceStubClassComposer.java | 12 ++++-------- .../google/api/generator/gapic/model/Method.java | 14 ++++++++++++++ 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java index d022b4a86a..84cc79d141 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java @@ -228,9 +228,7 @@ protected String getUnsupportedOperationExceptionReason(String callableName, Met return String.format("Not implemented: %s()", callableName); } - protected boolean isSupportedMethod(Method method) { - return true; - } + protected abstract boolean isSupportedMethod(Method method); protected abstract Statement createMethodDescriptorVariableDecl( Service service, diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/GrpcServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/GrpcServiceStubClassComposer.java index d6eedb9987..10aa89582a 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/GrpcServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/GrpcServiceStubClassComposer.java @@ -41,6 +41,7 @@ import com.google.api.generator.gapic.model.Method; import com.google.api.generator.gapic.model.RoutingHeaderRule.RoutingHeaderParam; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.api.pathtemplate.PathTemplate; import com.google.common.base.Splitter; @@ -90,6 +91,10 @@ private static TypeStore createStaticTypes() { return new TypeStore(concreteClazzes); } + protected boolean isSupportedMethod(Method method) { + return method.isMethodSupportedByTransport(Transport.GRPC); + } + @Override protected Statement createMethodDescriptorVariableDecl( Service service, diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index 65504c600b..2d3c65c90b 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -119,23 +119,19 @@ private static TypeStore createStaticTypes() { } protected boolean isSupportedMethod(Method method) { - return method.httpBindings() != null - && method.stream() != Stream.BIDI - && method.stream() != Stream.CLIENT; + return method.isMethodSupportedByTransport(Transport.REST); } protected String getUnsupportedOperationExceptionReason(String callableName, Method protoMethod) { if (protoMethod.stream() == Method.Stream.BIDI || protoMethod.stream() == Method.Stream.CLIENT) { return String.format( - "Not supported: %s(). %s streaming is not implemented for %s", + "Not supported: %s(). %s streaming is not supported for %s", callableName, protoMethod.stream(), Transport.REST); - } else if (protoMethod.httpBindings() == null) { + } else { return String.format( - "Not implemented: %s(). %s transport is not supported for this method yet", + "Not implemented: %s(). %s transport is not implemented for this method yet", callableName, Transport.REST); - } else { - return String.format("Not implemented: %s()", callableName); } } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java index dc2452f2d5..1102d05b93 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java @@ -99,6 +99,20 @@ public boolean isOperationPollingMethod() { return operationPollingMethod(); } + public boolean isRESTEnabled() { + return httpBindings() != null && stream() != Stream.BIDI && stream() != Stream.CLIENT; + } + + public boolean isMethodSupportedByTransport(Transport transport) { + if (transport == Transport.REST) { + return isRESTEnabled(); + } else if (transport == Transport.GRPC) { + return true; + } else { + throw new IllegalArgumentException("GRPC+REST Transport is not allowed."); + } + } + public abstract Builder toBuilder(); public static Builder builder() { From 66423e7f4f1b2fbbc438add219fa093bd4702c2d Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 5 Jan 2023 16:24:22 -0500 Subject: [PATCH 06/63] feat: Move method supported logic to Method --- .../common/AbstractTransportServiceStubClassComposer.java | 4 +++- .../gapic/composer/grpc/GrpcServiceStubClassComposer.java | 4 ---- .../composer/rest/HttpJsonServiceStubClassComposer.java | 3 +-- .../java/com/google/api/generator/gapic/model/Method.java | 8 +++----- .../composer/grpcrest/goldens/HttpJsonEchoStub.golden | 4 ++-- .../google/showcase/v1beta1/stub/HttpJsonEchoStub.java | 4 ++-- .../showcase/v1beta1/stub/HttpJsonMessagingStub.java | 4 ++-- 7 files changed, 13 insertions(+), 18 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java index 84cc79d141..d022b4a86a 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java @@ -228,7 +228,9 @@ protected String getUnsupportedOperationExceptionReason(String callableName, Met return String.format("Not implemented: %s()", callableName); } - protected abstract boolean isSupportedMethod(Method method); + protected boolean isSupportedMethod(Method method) { + return true; + } protected abstract Statement createMethodDescriptorVariableDecl( Service service, diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/GrpcServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/GrpcServiceStubClassComposer.java index 10aa89582a..68a5dc0aed 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/GrpcServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/GrpcServiceStubClassComposer.java @@ -91,10 +91,6 @@ private static TypeStore createStaticTypes() { return new TypeStore(concreteClazzes); } - protected boolean isSupportedMethod(Method method) { - return method.isMethodSupportedByTransport(Transport.GRPC); - } - @Override protected Statement createMethodDescriptorVariableDecl( Service service, diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index 2d3c65c90b..10b8f4344a 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -57,7 +57,6 @@ import com.google.api.generator.gapic.model.HttpBindings.HttpBinding; import com.google.api.generator.gapic.model.Message; import com.google.api.generator.gapic.model.Method; -import com.google.api.generator.gapic.model.Method.Stream; import com.google.api.generator.gapic.model.OperationResponse; import com.google.api.generator.gapic.model.Service; import com.google.api.generator.gapic.model.Transport; @@ -119,7 +118,7 @@ private static TypeStore createStaticTypes() { } protected boolean isSupportedMethod(Method method) { - return method.isMethodSupportedByTransport(Transport.REST); + return method.isSupportedByTransport(Transport.REST); } protected String getUnsupportedOperationExceptionReason(String callableName, Method protoMethod) { diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java index 1102d05b93..ffe96336f7 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java @@ -99,17 +99,15 @@ public boolean isOperationPollingMethod() { return operationPollingMethod(); } - public boolean isRESTEnabled() { + private boolean isRESTEnabled() { return httpBindings() != null && stream() != Stream.BIDI && stream() != Stream.CLIENT; } - public boolean isMethodSupportedByTransport(Transport transport) { + public boolean isSupportedByTransport(Transport transport) { if (transport == Transport.REST) { return isRESTEnabled(); - } else if (transport == Transport.GRPC) { - return true; } else { - throw new IllegalArgumentException("GRPC+REST Transport is not allowed."); + return true; } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden index 1e1f0e16df..2ea385ba79 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden @@ -548,13 +548,13 @@ public class HttpJsonEchoStub extends EchoStub { @Override public BidiStreamingCallable chatCallable() { throw new UnsupportedOperationException( - "Not supported: chatCallable(). BIDI streaming is not implemented for REST"); + "Not supported: chatCallable(). BIDI streaming is not supported for REST"); } @Override public UnaryCallable noBindingCallable() { throw new UnsupportedOperationException( - "Not implemented: noBindingCallable(). REST transport is not supported for this method yet"); + "Not implemented: noBindingCallable(). REST transport is not implemented for this method yet"); } @Override diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java index e92fea7944..21ed125c11 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java @@ -529,13 +529,13 @@ public UnaryCallable blockCallable() { @Override public ClientStreamingCallable collectCallable() { throw new UnsupportedOperationException( - "Not supported: collectCallable(). CLIENT streaming is not implemented for REST"); + "Not supported: collectCallable(). CLIENT streaming is not supported for REST"); } @Override public BidiStreamingCallable chatCallable() { throw new UnsupportedOperationException( - "Not supported: chatCallable(). BIDI streaming is not implemented for REST"); + "Not supported: chatCallable(). BIDI streaming is not supported for REST"); } @Override diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java index caf59606ff..7305de7c02 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java @@ -792,13 +792,13 @@ public ServerStreamingCallable stream @Override public ClientStreamingCallable sendBlurbsCallable() { throw new UnsupportedOperationException( - "Not supported: sendBlurbsCallable(). CLIENT streaming is not implemented for REST"); + "Not supported: sendBlurbsCallable(). CLIENT streaming is not supported for REST"); } @Override public BidiStreamingCallable connectCallable() { throw new UnsupportedOperationException( - "Not supported: connectCallable(). BIDI streaming is not implemented for REST"); + "Not supported: connectCallable(). BIDI streaming is not supported for REST"); } @Override From dc6f0cd57f1e4b8af581926be9d8f6179a0001b2 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 5 Jan 2023 16:27:51 -0500 Subject: [PATCH 07/63] chore: Format the files --- .../grpc/GrpcServiceStubClassComposer.java | 1 - .../HttpJsonServiceStubClassComposer.java | 56 +++++++++++-------- 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/GrpcServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/GrpcServiceStubClassComposer.java index 68a5dc0aed..d6eedb9987 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/GrpcServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/GrpcServiceStubClassComposer.java @@ -41,7 +41,6 @@ import com.google.api.generator.gapic.model.Method; import com.google.api.generator.gapic.model.RoutingHeaderRule.RoutingHeaderParam; import com.google.api.generator.gapic.model.Service; -import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.api.pathtemplate.PathTemplate; import com.google.common.base.Splitter; diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index 10b8f4344a..09538a19fc 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -1263,15 +1263,23 @@ protected List createTypeRegistry(Service service) { } protected List createClassMethods( - GapicContext context, - Service service, - TypeStore typeStore, - Map classMemberVarExprs, - Map callableClassMemberVarExprs, - Map protoMethodNameToDescriptorVarExprs, - List classStatements) { + GapicContext context, + Service service, + TypeStore typeStore, + Map classMemberVarExprs, + Map callableClassMemberVarExprs, + Map protoMethodNameToDescriptorVarExprs, + List classStatements) { List javaMethods = new ArrayList<>(); - javaMethods.addAll(super.createClassMethods(context, service, typeStore, classMemberVarExprs, callableClassMemberVarExprs, protoMethodNameToDescriptorVarExprs, classStatements)); + javaMethods.addAll( + super.createClassMethods( + context, + service, + typeStore, + classMemberVarExprs, + callableClassMemberVarExprs, + protoMethodNameToDescriptorVarExprs, + classStatements)); javaMethods.addAll(createInvalidClassMethods(service)); return javaMethods; } @@ -1282,23 +1290,23 @@ private List createInvalidClassMethods(Service service) { if (!isSupportedMethod(protoMethod)) { String javaStyleProtoMethodName = JavaStyle.toLowerCamelCase(protoMethod.name()); String callableName = - String.format(CALLABLE_CLASS_MEMBER_PATTERN, javaStyleProtoMethodName); + String.format(CALLABLE_CLASS_MEMBER_PATTERN, javaStyleProtoMethodName); methodDefinitions.add( - MethodDefinition.builder() - .setIsOverride(true) - .setScope(ScopeNode.PUBLIC) - .setName(callableName) - .setReturnType(getCallableType(protoMethod)) - .setBody( - Arrays.asList( - ExprStatement.withExpr( - ThrowExpr.builder() - .setType(FIXED_TYPESTORE.get("UnsupportedOperationException")) - .setMessageExpr( - getUnsupportedOperationExceptionReason( - callableName, protoMethod)) - .build()))) - .build()); + MethodDefinition.builder() + .setIsOverride(true) + .setScope(ScopeNode.PUBLIC) + .setName(callableName) + .setReturnType(getCallableType(protoMethod)) + .setBody( + Arrays.asList( + ExprStatement.withExpr( + ThrowExpr.builder() + .setType(FIXED_TYPESTORE.get("UnsupportedOperationException")) + .setMessageExpr( + getUnsupportedOperationExceptionReason( + callableName, protoMethod)) + .build()))) + .build()); } } return methodDefinitions; From 1940216a2424995ed6f9fde967ddec5cee756b19 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 5 Jan 2023 17:42:56 -0500 Subject: [PATCH 08/63] chore: Cleanup Abstract composer --- ...ractTransportServiceStubClassComposer.java | 19 ++++++++++--------- .../HttpJsonServiceStubClassComposer.java | 7 ++++--- .../api/generator/gapic/model/Method.java | 6 +----- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java index d022b4a86a..18563a7329 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java @@ -59,6 +59,7 @@ import com.google.api.generator.gapic.model.Message; import com.google.api.generator.gapic.model.Method; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -228,8 +229,8 @@ protected String getUnsupportedOperationExceptionReason(String callableName, Met return String.format("Not implemented: %s()", callableName); } - protected boolean isSupportedMethod(Method method) { - return true; + protected Transport getTransport() { + return Transport.GRPC; } protected abstract Statement createMethodDescriptorVariableDecl( @@ -317,7 +318,7 @@ protected List createMethodDescriptorVariableDecls( Map messageTypes, boolean restNumericEnumsEnabled) { return service.methods().stream() - .filter(this::isSupportedMethod) + .filter(x -> x.isSupportedByTransport(getTransport())) .map( m -> createMethodDescriptorVariableDecl( @@ -346,7 +347,7 @@ private static List createClassMemberFieldDeclarations( protected Map createProtoMethodNameToDescriptorClassMembers( Service service, Class descriptorClass) { return service.methods().stream() - .filter(this::isSupportedMethod) + .filter(x -> x.isSupportedByTransport(getTransport())) .collect( Collectors.toMap( Method::name, @@ -378,7 +379,7 @@ private Map createCallableClassMembers( Map callableClassMembers = new LinkedHashMap<>(); // Using a for-loop because the output cardinality is not a 1:1 mapping to the input set. for (Method protoMethod : service.methods()) { - if (!isSupportedMethod(protoMethod)) { + if (!protoMethod.isSupportedByTransport(getTransport())) { continue; } String javaStyleProtoMethodName = JavaStyle.toLowerCamelCase(protoMethod.name()); @@ -667,7 +668,7 @@ protected List createConstructorMethods( // Transport settings local variables. Map javaStyleMethodNameToTransportSettingsVarExprs = service.methods().stream() - .filter(this::isSupportedMethod) + .filter(x -> x.isSupportedByTransport(getTransport())) .collect( Collectors.toMap( m -> JavaStyle.toLowerCamelCase(m.name()), @@ -691,7 +692,7 @@ protected List createConstructorMethods( secondCtorExprs.addAll( service.methods().stream() - .filter(this::isSupportedMethod) + .filter(x -> x.isSupportedByTransport(getTransport())) .map( m -> createTransportSettingsInitExpr( @@ -1062,7 +1063,7 @@ private List createStubOverrideMethods( private boolean checkOperationPollingMethod(Service service) { return service.methods().stream() - .filter(this::isSupportedMethod) + .filter(x -> x.isSupportedByTransport(getTransport())) .anyMatch(Method::isOperationPollingMethod); } @@ -1101,7 +1102,7 @@ private TypeStore createDynamicTypes(Service service, String stubPakkage) { typeStore.putAll( service.pakkage(), service.methods().stream() - .filter(this::isSupportedMethod) + .filter(x -> x.isSupportedByTransport(getTransport())) .filter(Method::isPaged) .map(m -> String.format(PAGED_RESPONSE_TYPE_NAME_PATTERN, m.name())) .collect(Collectors.toList()), diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index 09538a19fc..5177bb07b2 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -117,8 +117,9 @@ private static TypeStore createStaticTypes() { TypeRegistry.class)); } - protected boolean isSupportedMethod(Method method) { - return method.isSupportedByTransport(Transport.REST); + @Override + protected Transport getTransport() { + return Transport.REST; } protected String getUnsupportedOperationExceptionReason(String callableName, Method protoMethod) { @@ -1287,7 +1288,7 @@ protected List createClassMethods( private List createInvalidClassMethods(Service service) { List methodDefinitions = new ArrayList<>(); for (Method protoMethod : service.methods()) { - if (!isSupportedMethod(protoMethod)) { + if (!protoMethod.isSupportedByTransport(getTransport())) { String javaStyleProtoMethodName = JavaStyle.toLowerCamelCase(protoMethod.name()); String callableName = String.format(CALLABLE_CLASS_MEMBER_PATTERN, javaStyleProtoMethodName); diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java index ffe96336f7..174213ef20 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java @@ -99,13 +99,9 @@ public boolean isOperationPollingMethod() { return operationPollingMethod(); } - private boolean isRESTEnabled() { - return httpBindings() != null && stream() != Stream.BIDI && stream() != Stream.CLIENT; - } - public boolean isSupportedByTransport(Transport transport) { if (transport == Transport.REST) { - return isRESTEnabled(); + return httpBindings() != null && stream() != Stream.BIDI && stream() != Stream.CLIENT; } else { return true; } From eb372638d21d7985a7a2bd658d929998c020af96 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 5 Jan 2023 17:51:30 -0500 Subject: [PATCH 09/63] chore: Move code to httpjson composer --- .../common/AbstractTransportServiceStubClassComposer.java | 4 ---- .../gapic/composer/rest/HttpJsonServiceStubClassComposer.java | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java index 18563a7329..d48e85ee09 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java @@ -225,10 +225,6 @@ public GapicClass generate(GapicContext context, Service service) { return GapicClass.create(kind, classDef); } - protected String getUnsupportedOperationExceptionReason(String callableName, Method protoMethod) { - return String.format("Not implemented: %s()", callableName); - } - protected Transport getTransport() { return Transport.GRPC; } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index 5177bb07b2..2edff85353 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -122,7 +122,7 @@ protected Transport getTransport() { return Transport.REST; } - protected String getUnsupportedOperationExceptionReason(String callableName, Method protoMethod) { + private String getUnsupportedOperationExceptionReason(String callableName, Method protoMethod) { if (protoMethod.stream() == Method.Stream.BIDI || protoMethod.stream() == Method.Stream.CLIENT) { return String.format( From 5a3515f01ee6f61bcd93b1f79f51ecb6d4b05cf2 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 5 Jan 2023 18:03:13 -0500 Subject: [PATCH 10/63] chore: Resolve code smell --- .../gapic/composer/rest/HttpJsonServiceStubClassComposer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index 2edff85353..f5d086b173 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -1263,6 +1263,7 @@ protected List createTypeRegistry(Service service) { .build())); } + @Override protected List createClassMethods( GapicContext context, Service service, From 0169f6a6afa85b3571fb1b11de270138bc4b22b4 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Fri, 6 Jan 2023 14:47:49 -0500 Subject: [PATCH 11/63] feat: Use generic error message --- .../rest/HttpJsonServiceStubClassComposer.java | 16 +--------------- .../grpcrest/goldens/HttpJsonEchoStub.golden | 2 +- .../showcase/v1beta1/stub/HttpJsonEchoStub.java | 4 ++-- .../v1beta1/stub/HttpJsonMessagingStub.java | 4 ++-- 4 files changed, 6 insertions(+), 20 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index f5d086b173..a25e940602 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -122,19 +122,6 @@ protected Transport getTransport() { return Transport.REST; } - private String getUnsupportedOperationExceptionReason(String callableName, Method protoMethod) { - if (protoMethod.stream() == Method.Stream.BIDI - || protoMethod.stream() == Method.Stream.CLIENT) { - return String.format( - "Not supported: %s(). %s streaming is not supported for %s", - callableName, protoMethod.stream(), Transport.REST); - } else { - return String.format( - "Not implemented: %s(). %s transport is not implemented for this method yet", - callableName, Transport.REST); - } - } - @Override protected boolean generateOperationsStubLogic(Service service) { return service.hasLroMethods(); @@ -1305,8 +1292,7 @@ private List createInvalidClassMethods(Service service) { ThrowExpr.builder() .setType(FIXED_TYPESTORE.get("UnsupportedOperationException")) .setMessageExpr( - getUnsupportedOperationExceptionReason( - callableName, protoMethod)) + String.format("Not implemented: %s(). %s transport is not implemented for this method yet", callableName, getTransport())) .build()))) .build()); } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden index 2ea385ba79..862df7c3a5 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden @@ -548,7 +548,7 @@ public class HttpJsonEchoStub extends EchoStub { @Override public BidiStreamingCallable chatCallable() { throw new UnsupportedOperationException( - "Not supported: chatCallable(). BIDI streaming is not supported for REST"); + "Not implemented: chatCallable(). REST transport is not implemented for this method yet"); } @Override diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java index 21ed125c11..f8101c7f42 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java @@ -529,13 +529,13 @@ public UnaryCallable blockCallable() { @Override public ClientStreamingCallable collectCallable() { throw new UnsupportedOperationException( - "Not supported: collectCallable(). CLIENT streaming is not supported for REST"); + "Not implemented: collectCallable(). REST transport is not implemented for this method yet"); } @Override public BidiStreamingCallable chatCallable() { throw new UnsupportedOperationException( - "Not supported: chatCallable(). BIDI streaming is not supported for REST"); + "Not implemented: chatCallable(). REST transport is not implemented for this method yet"); } @Override diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java index 7305de7c02..0c21679e6a 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java @@ -792,13 +792,13 @@ public ServerStreamingCallable stream @Override public ClientStreamingCallable sendBlurbsCallable() { throw new UnsupportedOperationException( - "Not supported: sendBlurbsCallable(). CLIENT streaming is not supported for REST"); + "Not implemented: sendBlurbsCallable(). REST transport is not implemented for this method yet"); } @Override public BidiStreamingCallable connectCallable() { throw new UnsupportedOperationException( - "Not supported: connectCallable(). BIDI streaming is not supported for REST"); + "Not implemented: connectCallable(). REST transport is not implemented for this method yet"); } @Override From 44e75806dc6fbb84a776aa044a2230daf1716231 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Fri, 6 Jan 2023 14:59:18 -0500 Subject: [PATCH 12/63] chore: Fix format issues --- .../gapic/composer/rest/HttpJsonServiceStubClassComposer.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index a25e940602..e05a79003b 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -1292,7 +1292,9 @@ private List createInvalidClassMethods(Service service) { ThrowExpr.builder() .setType(FIXED_TYPESTORE.get("UnsupportedOperationException")) .setMessageExpr( - String.format("Not implemented: %s(). %s transport is not implemented for this method yet", callableName, getTransport())) + String.format( + "Not implemented: %s(). %s transport is not implemented for this method yet", + callableName, getTransport())) .build()))) .build()); } From 37088069324c7ccdf52aa2f7e34ef20e52eddd02 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Mon, 9 Jan 2023 16:30:44 -0500 Subject: [PATCH 13/63] feat: Add tests for Method.isSupportedByTransport() --- .../api/generator/gapic/model/Method.java | 13 ++++- .../api/generator/gapic/model/MethodTest.java | 55 +++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java index 174213ef20..98e34efe6c 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java @@ -99,11 +99,22 @@ public boolean isOperationPollingMethod() { return operationPollingMethod(); } + /** + * Determines if method is both eligible and enabled for the Transport. GRPC+REST Transport is not + * supported as each transport's sub composers will invoke this method the specific transport + * (GRPC or REST) + * + * @param transport Expects either GRPC or REST Transport + * @return boolean is method should be generated for the transport + */ public boolean isSupportedByTransport(Transport transport) { if (transport == Transport.REST) { return httpBindings() != null && stream() != Stream.BIDI && stream() != Stream.CLIENT; - } else { + } else if (transport == Transport.GRPC) { return true; + } else { + throw new IllegalArgumentException( + String.format("Invalid Transport: %s. Expecting GRPC or REST", transport.name())); } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/MethodTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/MethodTest.java index cecee806f9..547def5a8c 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/MethodTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/MethodTest.java @@ -112,4 +112,59 @@ public void shouldSetParamsExtractor_shouldReturnFalseIfHasNoHttpBindingsAndNoRo Method method = METHOD.toBuilder().setHttpBindings(null).setRoutingHeaderRule(null).build(); assertThat(method.shouldSetParamsExtractor()).isFalse(); } + + @Test + public void + isSupportedByTransport_shouldReturnTrueIfHasHttpBindingsAndIsRESTEligibleForRESTTransport() { + Method methodNoStreaming = + METHOD.toBuilder().setHttpBindings(HTTP_BINDINGS).setStream(Method.Stream.NONE).build(); + assertThat(methodNoStreaming.isSupportedByTransport(Transport.REST)).isTrue(); + Method methodServerSideStreaming = + METHOD.toBuilder().setHttpBindings(HTTP_BINDINGS).setStream(Method.Stream.SERVER).build(); + assertThat(methodServerSideStreaming.isSupportedByTransport(Transport.REST)).isTrue(); + } + + @Test + public void isSupportedByTransport_shouldReturnFalseIfNoHttpBindingsForRESTTransport() { + Method methodNoStreaming = + METHOD.toBuilder().setHttpBindings(null).setStream(Method.Stream.NONE).build(); + assertThat(methodNoStreaming.isSupportedByTransport(Transport.REST)).isFalse(); + Method methodServerSideStreaming = + METHOD.toBuilder().setHttpBindings(null).setStream(Method.Stream.SERVER).build(); + assertThat(methodServerSideStreaming.isSupportedByTransport(Transport.REST)).isFalse(); + } + + @Test + public void + isSupportedByTransport_shouldReturnFalseIfHasHttpBindingsAndIsNotRESTEligibleForRESTTransport() { + Method methodClientSideStreaming = + METHOD.toBuilder().setHttpBindings(HTTP_BINDINGS).setStream(Method.Stream.CLIENT).build(); + assertThat(methodClientSideStreaming.isSupportedByTransport(Transport.REST)).isFalse(); + Method methodBiDiStreaming = + METHOD.toBuilder().setHttpBindings(HTTP_BINDINGS).setStream(Method.Stream.BIDI).build(); + assertThat(methodBiDiStreaming.isSupportedByTransport(Transport.REST)).isFalse(); + } + + @Test + public void isSupportedByTransport_shouldReturnTrueForGRPCTransport() { + Method methodNoStreaming = + METHOD.toBuilder().setHttpBindings(HTTP_BINDINGS).setStream(Method.Stream.NONE).build(); + assertThat(methodNoStreaming.isSupportedByTransport(Transport.GRPC)).isTrue(); + Method methodBiDiStreaming = + METHOD.toBuilder().setHttpBindings(HTTP_BINDINGS).setStream(Method.Stream.BIDI).build(); + assertThat(methodBiDiStreaming.isSupportedByTransport(Transport.GRPC)).isTrue(); + Method methodNoStreamingNoHttpBindings = + METHOD.toBuilder().setStream(Method.Stream.NONE).build(); + assertThat(methodNoStreamingNoHttpBindings.isSupportedByTransport(Transport.GRPC)).isTrue(); + Method methodBiDiStreamingNoHttpBindings = + METHOD.toBuilder().setStream(Method.Stream.BIDI).build(); + assertThat(methodBiDiStreamingNoHttpBindings.isSupportedByTransport(Transport.GRPC)).isTrue(); + } + + @Test(expected = IllegalArgumentException.class) + public void isSupportedByTransport_shouldThrowExceptionIfPassedGRPCRESTTransport() { + Method methodClientStreaming = + METHOD.toBuilder().setHttpBindings(HTTP_BINDINGS).setStream(Method.Stream.CLIENT).build(); + methodClientStreaming.isSupportedByTransport(Transport.GRPC_REST); + } } From e05b385f50dbb07ea1662dd4f0e4713925bedcf5 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 10 Jan 2023 14:32:41 -0500 Subject: [PATCH 14/63] feat: Resolve PR comments --- .../HttpJsonServiceStubClassComposer.java | 42 +++++++++---------- .../grpcrest/goldens/HttpJsonEchoStub.golden | 4 +- .../api/generator/gapic/model/MethodTest.java | 7 +++- .../v1beta1/stub/HttpJsonEchoStub.java | 4 +- .../v1beta1/stub/HttpJsonMessagingStub.java | 4 +- 5 files changed, 32 insertions(+), 29 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index e05a79003b..29ffcb8a07 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -1276,28 +1276,28 @@ protected List createClassMethods( private List createInvalidClassMethods(Service service) { List methodDefinitions = new ArrayList<>(); for (Method protoMethod : service.methods()) { - if (!protoMethod.isSupportedByTransport(getTransport())) { - String javaStyleProtoMethodName = JavaStyle.toLowerCamelCase(protoMethod.name()); - String callableName = - String.format(CALLABLE_CLASS_MEMBER_PATTERN, javaStyleProtoMethodName); - methodDefinitions.add( - MethodDefinition.builder() - .setIsOverride(true) - .setScope(ScopeNode.PUBLIC) - .setName(callableName) - .setReturnType(getCallableType(protoMethod)) - .setBody( - Arrays.asList( - ExprStatement.withExpr( - ThrowExpr.builder() - .setType(FIXED_TYPESTORE.get("UnsupportedOperationException")) - .setMessageExpr( - String.format( - "Not implemented: %s(). %s transport is not implemented for this method yet", - callableName, getTransport())) - .build()))) - .build()); + if (protoMethod.isSupportedByTransport(getTransport())) { + continue; } + String javaStyleProtoMethodName = JavaStyle.toLowerCamelCase(protoMethod.name()); + String callableName = String.format(CALLABLE_CLASS_MEMBER_PATTERN, javaStyleProtoMethodName); + methodDefinitions.add( + MethodDefinition.builder() + .setIsOverride(true) + .setScope(ScopeNode.PUBLIC) + .setName(callableName) + .setReturnType(getCallableType(protoMethod)) + .setBody( + Arrays.asList( + ExprStatement.withExpr( + ThrowExpr.builder() + .setType(FIXED_TYPESTORE.get("UnsupportedOperationException")) + .setMessageExpr( + String.format( + "Not implemented: %s(). %s transport is not implemented for this method yet. It is either not enabled or not supported (BIDI or Client Streaming)", + callableName, getTransport())) + .build()))) + .build()); } return methodDefinitions; } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden index 862df7c3a5..8c5b26c81e 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden @@ -548,13 +548,13 @@ public class HttpJsonEchoStub extends EchoStub { @Override public BidiStreamingCallable chatCallable() { throw new UnsupportedOperationException( - "Not implemented: chatCallable(). REST transport is not implemented for this method yet"); + "Not implemented: chatCallable(). REST transport is not implemented for this method yet. It is either not enabled or not supported (BIDI or Client Streaming)"); } @Override public UnaryCallable noBindingCallable() { throw new UnsupportedOperationException( - "Not implemented: noBindingCallable(). REST transport is not implemented for this method yet"); + "Not implemented: noBindingCallable(). REST transport is not implemented for this method yet. It is either not enabled or not supported (BIDI or Client Streaming)"); } @Override diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/MethodTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/MethodTest.java index 547def5a8c..00754113ae 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/MethodTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/MethodTest.java @@ -15,6 +15,7 @@ package com.google.api.generator.gapic.model; import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; import com.google.api.generator.engine.ast.TypeNode; import com.google.api.generator.gapic.model.HttpBindings.HttpBinding; @@ -161,10 +162,12 @@ public void isSupportedByTransport_shouldReturnTrueForGRPCTransport() { assertThat(methodBiDiStreamingNoHttpBindings.isSupportedByTransport(Transport.GRPC)).isTrue(); } - @Test(expected = IllegalArgumentException.class) + @Test public void isSupportedByTransport_shouldThrowExceptionIfPassedGRPCRESTTransport() { Method methodClientStreaming = METHOD.toBuilder().setHttpBindings(HTTP_BINDINGS).setStream(Method.Stream.CLIENT).build(); - methodClientStreaming.isSupportedByTransport(Transport.GRPC_REST); + assertThrows( + IllegalArgumentException.class, + () -> methodClientStreaming.isSupportedByTransport(Transport.GRPC_REST)); } } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java index f8101c7f42..6e147c8de3 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java @@ -529,13 +529,13 @@ public UnaryCallable blockCallable() { @Override public ClientStreamingCallable collectCallable() { throw new UnsupportedOperationException( - "Not implemented: collectCallable(). REST transport is not implemented for this method yet"); + "Not implemented: collectCallable(). REST transport is not implemented for this method yet. It is either not enabled or not supported (BIDI or Client Streaming)"); } @Override public BidiStreamingCallable chatCallable() { throw new UnsupportedOperationException( - "Not implemented: chatCallable(). REST transport is not implemented for this method yet"); + "Not implemented: chatCallable(). REST transport is not implemented for this method yet. It is either not enabled or not supported (BIDI or Client Streaming)"); } @Override diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java index 0c21679e6a..0d3f77a118 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java @@ -792,13 +792,13 @@ public ServerStreamingCallable stream @Override public ClientStreamingCallable sendBlurbsCallable() { throw new UnsupportedOperationException( - "Not implemented: sendBlurbsCallable(). REST transport is not implemented for this method yet"); + "Not implemented: sendBlurbsCallable(). REST transport is not implemented for this method yet. It is either not enabled or not supported (BIDI or Client Streaming)"); } @Override public BidiStreamingCallable connectCallable() { throw new UnsupportedOperationException( - "Not implemented: connectCallable(). REST transport is not implemented for this method yet"); + "Not implemented: connectCallable(). REST transport is not implemented for this method yet. It is either not enabled or not supported (BIDI or Client Streaming)"); } @Override From 738200ffd8705c77b9138ffc7fa6f39adec08da3 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 10 Jan 2023 15:01:11 -0500 Subject: [PATCH 15/63] feat: Update back to private --- ...tractTransportServiceStubClassComposer.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java index d48e85ee09..ebbaac698f 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java @@ -83,18 +83,18 @@ public abstract class AbstractTransportServiceStubClassComposer implements ClassComposer { private static final Statement EMPTY_LINE_STATEMENT = EmptyLineStatement.create(); - protected static final String METHOD_DESCRIPTOR_NAME_PATTERN = "%sMethodDescriptor"; - protected static final String PAGED_RESPONSE_TYPE_NAME_PATTERN = "%sPagedResponse"; - protected static final String PAGED_CALLABLE_CLASS_MEMBER_PATTERN = "%sPagedCallable"; + private static final String METHOD_DESCRIPTOR_NAME_PATTERN = "%sMethodDescriptor"; + private static final String PAGED_RESPONSE_TYPE_NAME_PATTERN = "%sPagedResponse"; + private static final String PAGED_CALLABLE_CLASS_MEMBER_PATTERN = "%sPagedCallable"; - protected static final String BACKGROUND_RESOURCES_MEMBER_NAME = "backgroundResources"; - protected static final String CALLABLE_NAME = "Callable"; - protected static final String CALLABLE_FACTORY_MEMBER_NAME = "callableFactory"; + private static final String BACKGROUND_RESOURCES_MEMBER_NAME = "backgroundResources"; + private static final String CALLABLE_NAME = "Callable"; + private static final String CALLABLE_FACTORY_MEMBER_NAME = "callableFactory"; protected static final String CALLABLE_CLASS_MEMBER_PATTERN = "%sCallable"; - protected static final String OPERATION_CALLABLE_CLASS_MEMBER_PATTERN = "%sOperationCallable"; - protected static final String OPERATION_CALLABLE_NAME = "OperationCallable"; + private static final String OPERATION_CALLABLE_CLASS_MEMBER_PATTERN = "%sOperationCallable"; + private static final String OPERATION_CALLABLE_NAME = "OperationCallable"; // private static final String OPERATIONS_STUB_MEMBER_NAME = "operationsStub"; - protected static final String PAGED_CALLABLE_NAME = "PagedCallable"; + private static final String PAGED_CALLABLE_NAME = "PagedCallable"; protected static final TypeStore FIXED_TYPESTORE = createStaticTypes(); From cc0d97b9ac00f6398d4305c50f741134d2b17a0f Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 10 Jan 2023 15:38:10 -0500 Subject: [PATCH 16/63] feat: Update error message --- .../gapic/composer/rest/HttpJsonServiceStubClassComposer.java | 2 +- .../gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden | 4 ++-- .../com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java | 4 ++-- .../google/showcase/v1beta1/stub/HttpJsonMessagingStub.java | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index 29ffcb8a07..277a5f2c7e 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -1294,7 +1294,7 @@ private List createInvalidClassMethods(Service service) { .setType(FIXED_TYPESTORE.get("UnsupportedOperationException")) .setMessageExpr( String.format( - "Not implemented: %s(). %s transport is not implemented for this method yet. It is either not enabled or not supported (BIDI or Client Streaming)", + "Not implemented: %s(). %s transport is not implemented for this method yet.", callableName, getTransport())) .build()))) .build()); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden index 8c5b26c81e..d027d9ed10 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden @@ -548,13 +548,13 @@ public class HttpJsonEchoStub extends EchoStub { @Override public BidiStreamingCallable chatCallable() { throw new UnsupportedOperationException( - "Not implemented: chatCallable(). REST transport is not implemented for this method yet. It is either not enabled or not supported (BIDI or Client Streaming)"); + "Not implemented: chatCallable(). REST transport is not implemented for this method yet."); } @Override public UnaryCallable noBindingCallable() { throw new UnsupportedOperationException( - "Not implemented: noBindingCallable(). REST transport is not implemented for this method yet. It is either not enabled or not supported (BIDI or Client Streaming)"); + "Not implemented: noBindingCallable(). REST transport is not implemented for this method yet."); } @Override diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java index 6e147c8de3..ed6ea0f01f 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonEchoStub.java @@ -529,13 +529,13 @@ public UnaryCallable blockCallable() { @Override public ClientStreamingCallable collectCallable() { throw new UnsupportedOperationException( - "Not implemented: collectCallable(). REST transport is not implemented for this method yet. It is either not enabled or not supported (BIDI or Client Streaming)"); + "Not implemented: collectCallable(). REST transport is not implemented for this method yet."); } @Override public BidiStreamingCallable chatCallable() { throw new UnsupportedOperationException( - "Not implemented: chatCallable(). REST transport is not implemented for this method yet. It is either not enabled or not supported (BIDI or Client Streaming)"); + "Not implemented: chatCallable(). REST transport is not implemented for this method yet."); } @Override diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java index 0d3f77a118..4eba21b87f 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonMessagingStub.java @@ -792,13 +792,13 @@ public ServerStreamingCallable stream @Override public ClientStreamingCallable sendBlurbsCallable() { throw new UnsupportedOperationException( - "Not implemented: sendBlurbsCallable(). REST transport is not implemented for this method yet. It is either not enabled or not supported (BIDI or Client Streaming)"); + "Not implemented: sendBlurbsCallable(). REST transport is not implemented for this method yet."); } @Override public BidiStreamingCallable connectCallable() { throw new UnsupportedOperationException( - "Not implemented: connectCallable(). REST transport is not implemented for this method yet. It is either not enabled or not supported (BIDI or Client Streaming)"); + "Not implemented: connectCallable(). REST transport is not implemented for this method yet."); } @Override From 14e7d9eaff988690c2af3261f3cbf5e51ab60d35 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 10 Jan 2023 15:40:01 -0500 Subject: [PATCH 17/63] feat: Update javadoc comment --- .../main/java/com/google/api/generator/gapic/model/Method.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java index 98e34efe6c..4fd5c4f384 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Method.java @@ -105,7 +105,7 @@ public boolean isOperationPollingMethod() { * (GRPC or REST) * * @param transport Expects either GRPC or REST Transport - * @return boolean is method should be generated for the transport + * @return boolean if method should be generated for the transport */ public boolean isSupportedByTransport(Transport transport) { if (transport == Transport.REST) { From 246ffeebf2e2f2ea443f1b971251079f2874a689 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 11 Jan 2023 15:16:11 -0500 Subject: [PATCH 18/63] feat: Do not generate Service REST code if there are no matching RPC in a Service --- ...ctServiceCallableFactoryClassComposer.java | 10 ++ .../AbstractServiceSettingsClassComposer.java | 16 ++- ...tractServiceStubSettingsClassComposer.java | 39 +++++-- ...ractTransportServiceStubClassComposer.java | 26 +++-- .../HttpJsonServiceStubClassComposer.java | 7 +- .../ServiceSettingsClassComposer.java | 53 ++++----- .../ServiceStubSettingsClassComposer.java | 68 +++++++----- ...onServiceCallableFactoryClassComposer.java | 6 + .../HttpJsonServiceStubClassComposer.java | 25 ++++- .../ServiceStubSettingsClassComposer.java | 21 ++-- .../api/generator/gapic/model/GapicClass.java | 27 ++++- .../api/generator/gapic/model/Service.java | 16 +++ .../generator/gapic/protowriter/Writer.java | 3 + .../generator/gapic/model/ServiceTest.java | 105 ++++++++++++++++++ 14 files changed, 331 insertions(+), 91 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceCallableFactoryClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceCallableFactoryClassComposer.java index 9fcbaa0f9e..d20900f29d 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceCallableFactoryClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceCallableFactoryClassComposer.java @@ -42,6 +42,7 @@ import com.google.api.generator.gapic.model.GapicClass.Kind; import com.google.api.generator.gapic.model.GapicContext; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -60,8 +61,17 @@ protected TransportContext getTransportContext() { return transportContext; } + protected Transport getTransport() { + return Transport.GRPC; + } + @Override public GapicClass generate(GapicContext context, Service service) { + // Do not generate the Callable Factory if there are no RPCs enabled for the Transport + if (!service.hasAnyEnabledMethodsForTransport(getTransport())) { + return GapicClass.createNonGeneratedGapicClass(); + } + TypeStore typeStore = createTypes(service); String className = diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceSettingsClassComposer.java index fdfa33f471..f108b65a9b 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceSettingsClassComposer.java @@ -63,6 +63,7 @@ import com.google.api.generator.gapic.model.Method.Stream; import com.google.api.generator.gapic.model.Sample; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -385,6 +386,14 @@ private List createDefaultGetterMethods(Service service, TypeS while (providerBuilderNamesIt.hasNext() && channelProviderClassesIt.hasNext() && transportNamesIt.hasNext()) { + String providerBuilderName = providerBuilderNamesIt.next(); + Class channelProviderClass = channelProviderClassesIt.next(); + String transportName = transportNamesIt.next(); + + if (!service.hasAnyEnabledMethodsForTransport(Transport.parse(transportName))) { + continue; + } + List annotations = ImmutableList.of(); // For clients supporting multiple transports (mainly grpc+rest case) make secondary transport @@ -397,16 +406,13 @@ private List createDefaultGetterMethods(Service service, TypeS SettingsCommentComposer.DEFAULT_TRANSPORT_PROVIDER_BUILDER_METHOD_COMMENT; if (getTransportContext().transportNames().size() > 1) { commentStatement = - new SettingsCommentComposer(transportNamesIt.next()) - .getTransportProviderBuilderMethodComment(); + new SettingsCommentComposer(transportName).getTransportProviderBuilderMethodComment(); } javaMethods.add( methodMakerFn.apply( methodStarterFn - .apply( - providerBuilderNamesIt.next(), - typeMakerFn.apply(channelProviderClassesIt.next())) + .apply(providerBuilderName, typeMakerFn.apply(channelProviderClass)) .setAnnotations(annotations), commentStatement)); secondaryTransportProviderBuilder = true; diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java index fe66a11e77..c7d5c672b7 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java @@ -95,6 +95,7 @@ import com.google.api.generator.gapic.model.Method.Stream; import com.google.api.generator.gapic.model.Sample; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -243,7 +244,8 @@ protected MethodDefinition createDefaultCredentialsProviderBuilderMethod() { .build(); } - protected List createDefaultTransportTransportProviderBuilderMethods() { + protected List createDefaultTransportTransportProviderBuilderMethods( + Service service) { // Create the defaultGrpcTransportProviderBuilder method. Iterator> providerClassIt = getTransportContext().instantiatingChannelProviderClasses().iterator(); @@ -259,10 +261,19 @@ protected List createDefaultTransportTransportProviderBuilderM && providerBuilderClassIt.hasNext() && builderNamesIt.hasNext() && transportNamesIt.hasNext()) { + Class providerClass = providerClassIt.next(); + Class providerBuilderClass = providerBuilderClassIt.next(); + String builderName = builderNamesIt.next(); + String transportName = transportNamesIt.next(); + + if (!service.hasAnyEnabledMethodsForTransport(Transport.parse(transportName))) { + continue; + } + TypeNode returnType = - TypeNode.withReference(ConcreteReference.withClazz(providerBuilderClassIt.next())); + TypeNode.withReference(ConcreteReference.withClazz(providerBuilderClass)); TypeNode channelProviderType = - TypeNode.withReference(ConcreteReference.withClazz(providerClassIt.next())); + TypeNode.withReference(ConcreteReference.withClazz(providerClass)); MethodInvocationExpr transportChannelProviderBuilderExpr = MethodInvocationExpr.builder() @@ -281,8 +292,7 @@ protected List createDefaultTransportTransportProviderBuilderM SettingsCommentComposer.DEFAULT_TRANSPORT_PROVIDER_BUILDER_METHOD_COMMENT; if (getTransportContext().transportNames().size() > 1) { commentStatement = - new SettingsCommentComposer(transportNamesIt.next()) - .getTransportProviderBuilderMethodComment(); + new SettingsCommentComposer(transportName).getTransportProviderBuilderMethodComment(); } MethodDefinition method = @@ -292,7 +302,7 @@ protected List createDefaultTransportTransportProviderBuilderM .setScope(ScopeNode.PUBLIC) .setIsStatic(true) .setReturnType(returnType) - .setName(builderNamesIt.next()) + .setName(builderName) .setReturnExpr(returnExpr) .build(); @@ -1047,17 +1057,23 @@ private MethodDefinition createCreateStubMethod(Service service, TypeStore typeS .setMethodName("getTransportName") .build(); + Iterator transportNamesIt = getTransportContext().transportNames().iterator(); Iterator channelTypesIt = getTransportContext().transportChannelTypes().iterator(); Iterator getterNameIt = getTransportContext().transportGetterNames().iterator(); Iterator serivceStubClassNameIt = getTransportContext().classNames().getTransportServiceStubClassNames(service).iterator(); while (channelTypesIt.hasNext() && getterNameIt.hasNext()) { + String transportName = transportNamesIt.next(); TypeNode channelType = channelTypesIt.next(); String getterName = getterNameIt.next(); String serivceStubClassName = serivceStubClassNameIt.next(); - Expr tRansportNameExpr = + if (!service.hasAnyEnabledMethodsForTransport(Transport.parse(transportName))) { + continue; + } + + Expr transportNameExpr = MethodInvocationExpr.builder() .setStaticReferenceType(channelType) .setMethodName(getterName) @@ -1067,7 +1083,7 @@ private MethodDefinition createCreateStubMethod(Service service, TypeStore typeS MethodInvocationExpr.builder() .setExprReferenceExpr(getTransportNameExpr) .setMethodName("equals") - .setArguments(tRansportNameExpr) + .setArguments(transportNameExpr) .setReturnType(TypeNode.BOOLEAN) .build(); @@ -1191,7 +1207,7 @@ private List createDefaultHelperAndGetterMethods( .build()); javaMethods.add(createDefaultCredentialsProviderBuilderMethod()); - javaMethods.addAll(createDefaultTransportTransportProviderBuilderMethods()); + javaMethods.addAll(createDefaultTransportTransportProviderBuilderMethods(service)); javaMethods.add(createDefaultTransportChannelProviderMethod()); javaMethods.addAll(createApiClientHeaderProviderBuilderMethods(service, typeStore)); @@ -1424,7 +1440,7 @@ private List createNestedClassMethods( nestedClassMethods.addAll( createNestedClassConstructorMethods( service, serviceConfig, nestedMethodSettingsMemberVarExprs, typeStore)); - nestedClassMethods.addAll(createNestedClassCreateDefaultMethods(typeStore)); + nestedClassMethods.addAll(createNestedClassCreateDefaultMethods(service, typeStore)); nestedClassMethods.add(createNestedClassInitDefaultsMethod(service, serviceConfig, typeStore)); nestedClassMethods.add(createNestedClassApplyToAllUnaryMethodsMethod(superType, typeStore)); nestedClassMethods.add(createNestedClassUnaryMethodSettingsBuilderGetterMethod()); @@ -1762,7 +1778,8 @@ private static List createNestedClassConstructorMethods( return ctorMethods; } - protected List createNestedClassCreateDefaultMethods(TypeStore typeStore) { + protected List createNestedClassCreateDefaultMethods( + Service service, TypeStore typeStore) { return Collections.singletonList( createNestedClassCreateDefaultMethod( typeStore, diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java index ebbaac698f..d2d649ebd0 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java @@ -83,18 +83,18 @@ public abstract class AbstractTransportServiceStubClassComposer implements ClassComposer { private static final Statement EMPTY_LINE_STATEMENT = EmptyLineStatement.create(); - private static final String METHOD_DESCRIPTOR_NAME_PATTERN = "%sMethodDescriptor"; - private static final String PAGED_RESPONSE_TYPE_NAME_PATTERN = "%sPagedResponse"; - private static final String PAGED_CALLABLE_CLASS_MEMBER_PATTERN = "%sPagedCallable"; + protected static final String METHOD_DESCRIPTOR_NAME_PATTERN = "%sMethodDescriptor"; + protected static final String PAGED_RESPONSE_TYPE_NAME_PATTERN = "%sPagedResponse"; + protected static final String PAGED_CALLABLE_CLASS_MEMBER_PATTERN = "%sPagedCallable"; - private static final String BACKGROUND_RESOURCES_MEMBER_NAME = "backgroundResources"; - private static final String CALLABLE_NAME = "Callable"; - private static final String CALLABLE_FACTORY_MEMBER_NAME = "callableFactory"; + protected static final String BACKGROUND_RESOURCES_MEMBER_NAME = "backgroundResources"; + protected static final String CALLABLE_NAME = "Callable"; + protected static final String CALLABLE_FACTORY_MEMBER_NAME = "callableFactory"; protected static final String CALLABLE_CLASS_MEMBER_PATTERN = "%sCallable"; - private static final String OPERATION_CALLABLE_CLASS_MEMBER_PATTERN = "%sOperationCallable"; - private static final String OPERATION_CALLABLE_NAME = "OperationCallable"; + protected static final String OPERATION_CALLABLE_CLASS_MEMBER_PATTERN = "%sOperationCallable"; + protected static final String OPERATION_CALLABLE_NAME = "OperationCallable"; // private static final String OPERATIONS_STUB_MEMBER_NAME = "operationsStub"; - private static final String PAGED_CALLABLE_NAME = "PagedCallable"; + protected static final String PAGED_CALLABLE_NAME = "PagedCallable"; protected static final TypeStore FIXED_TYPESTORE = createStaticTypes(); @@ -134,6 +134,10 @@ private static TypeStore createStaticTypes() { @Override public GapicClass generate(GapicContext context, Service service) { + if (!service.hasAnyEnabledMethodsForTransport(getTransport())) { + return GapicClass.createNonGeneratedGapicClass(); + } + String pakkage = service.pakkage() + ".stub"; TypeStore typeStore = createDynamicTypes(service, pakkage); String className = getTransportContext().classNames().getTransportServiceStubClassName(service); @@ -225,6 +229,10 @@ public GapicClass generate(GapicContext context, Service service) { return GapicClass.create(kind, classDef); } + protected String getUnsupportedOperationExceptionReason(String callableName, Method protoMethod) { + return String.format("Not implemented: %s()", callableName); + } + protected Transport getTransport() { return Transport.GRPC; } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposer.java index 7f99c81287..28e7d68d14 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposer.java @@ -17,6 +17,8 @@ import com.google.api.generator.engine.ast.MethodDefinition; import com.google.api.generator.gapic.composer.store.TypeStore; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; +import java.util.Collections; import java.util.List; public class HttpJsonServiceStubClassComposer @@ -35,6 +37,9 @@ public static HttpJsonServiceStubClassComposer instance() { @Override protected List createStaticCreatorMethods( Service service, TypeStore typeStore, String newBuilderMethod) { - return super.createStaticCreatorMethods(service, typeStore, "newHttpJsonBuilder"); + if (service.hasAnyEnabledMethodsForTransport(Transport.REST)) { + return super.createStaticCreatorMethods(service, typeStore, "newHttpJsonBuilder"); + } + return Collections.emptyList(); } } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceSettingsClassComposer.java index 3b48a45958..c597be4c8a 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceSettingsClassComposer.java @@ -21,6 +21,7 @@ import com.google.api.generator.gapic.composer.common.AbstractServiceSettingsClassComposer; import com.google.api.generator.gapic.composer.store.TypeStore; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; import com.google.common.collect.ImmutableList; import java.util.ArrayList; import java.util.Iterator; @@ -44,24 +45,25 @@ protected List createNestedBuilderCreatorMethods( String newBuilderMethodName, String createDefaultMethodName, List annotations) { - List methods = new ArrayList<>(); AnnotationNode betaApiAnnotaiton = AnnotationNode.builder().setType(FIXED_TYPESTORE.get("BetaApi")).build(); + List methods = new ArrayList<>(); methods.addAll( super.createNestedBuilderCreatorMethods( service, typeStore, "newBuilder", "createDefault", annotations)); - methods.addAll( - super.createNestedBuilderCreatorMethods( - service, - typeStore, - "newHttpJsonBuilder", - "createHttpJsonDefault", - ImmutableList.builder() - .addAll(annotations) - .add(betaApiAnnotaiton) - .build())); - + if (service.hasAnyEnabledMethodsForTransport(Transport.REST)) { + methods.addAll( + super.createNestedBuilderCreatorMethods( + service, + typeStore, + "newHttpJsonBuilder", + "createHttpJsonDefault", + ImmutableList.builder() + .addAll(annotations) + .add(betaApiAnnotaiton) + .build())); + } return methods; } @@ -89,19 +91,20 @@ protected List createNewBuilderMethods( annotations, new SettingsCommentComposer(transportNames.next()) .getNewTransportBuilderMethodComment())); - methods.addAll( - super.createNewBuilderMethods( - service, - typeStore, - "newHttpJsonBuilder", - "createHttpJsonDefault", - ImmutableList.builder() - .addAll(annotations) - .add(betaApiAnnotaiton) - .build(), - new SettingsCommentComposer(transportNames.next()) - .getNewTransportBuilderMethodComment())); - + if (service.hasAnyEnabledMethodsForTransport(Transport.REST)) { + methods.addAll( + super.createNewBuilderMethods( + service, + typeStore, + "newHttpJsonBuilder", + "createHttpJsonDefault", + ImmutableList.builder() + .addAll(annotations) + .add(betaApiAnnotaiton) + .build(), + new SettingsCommentComposer(transportNames.next()) + .getNewTransportBuilderMethodComment())); + } return methods; } } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java index 84adf3598a..b79c74ed99 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java @@ -34,7 +34,7 @@ import com.google.api.generator.gapic.composer.store.TypeStore; import com.google.api.generator.gapic.composer.utils.ClassNames; import com.google.api.generator.gapic.model.Service; -import com.google.common.collect.ImmutableList; +import com.google.api.generator.gapic.model.Transport; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -118,21 +118,26 @@ protected List createApiClientHeaderProviderBuilderMethods( TypeNode returnType = TypeNode.withReference(ConcreteReference.withClazz(ApiClientHeaderProvider.Builder.class)); - return ImmutableList.of( + List methodDefinitions = new ArrayList<>(); + methodDefinitions.add( createApiClientHeaderProviderBuilderMethod( service, typeStore, "defaultGrpcApiClientHeaderProviderBuilder", TypeNode.withReference(ConcreteReference.withClazz(GaxGrpcProperties.class)), "getGrpcTokenName", - "getGrpcVersion"), - createApiClientHeaderProviderBuilderMethod( - service, - typeStore, - "defaultHttpJsonApiClientHeaderProviderBuilder", - TypeNode.withReference(ConcreteReference.withClazz(GaxHttpJsonProperties.class)), - "getHttpJsonTokenName", - "getHttpJsonVersion"), + "getGrpcVersion")); + if (service.hasAnyEnabledMethodsForTransport(Transport.REST)) { + methodDefinitions.add( + createApiClientHeaderProviderBuilderMethod( + service, + typeStore, + "defaultHttpJsonApiClientHeaderProviderBuilder", + TypeNode.withReference(ConcreteReference.withClazz(GaxHttpJsonProperties.class)), + "getHttpJsonTokenName", + "getHttpJsonVersion")); + } + methodDefinitions.add( MethodDefinition.builder() .setScope(ScopeNode.PUBLIC) .setIsStatic(true) @@ -146,6 +151,7 @@ protected List createApiClientHeaderProviderBuilderMethods( .setReturnType(returnType) .build()) .build()); + return methodDefinitions; } @Override @@ -169,20 +175,26 @@ public MethodDefinition createDefaultTransportChannelProviderMethod() { } @Override - protected List createNestedClassCreateDefaultMethods(TypeStore typeStore) { - return ImmutableList.of( + protected List createNestedClassCreateDefaultMethods( + Service service, TypeStore typeStore) { + List methodDefinitions = new ArrayList<>(); + methodDefinitions.add( createNestedClassCreateDefaultMethod( typeStore, "createDefault", "defaultTransportChannelProvider", null, - "defaultApiClientHeaderProviderBuilder"), - createNestedClassCreateDefaultMethod( - typeStore, - "createHttpJsonDefault", - null, - "defaultHttpJsonTransportProviderBuilder", - "defaultHttpJsonApiClientHeaderProviderBuilder")); + "defaultApiClientHeaderProviderBuilder")); + if (service.hasAnyEnabledMethodsForTransport(Transport.REST)) { + methodDefinitions.add( + createNestedClassCreateDefaultMethod( + typeStore, + "createHttpJsonDefault", + null, + "defaultHttpJsonTransportProviderBuilder", + "defaultHttpJsonApiClientHeaderProviderBuilder")); + } + return methodDefinitions; } @Override @@ -202,14 +214,16 @@ protected List createNewBuilderMethods( "createDefault", new SettingsCommentComposer(transportNames.next()) .getNewTransportBuilderMethodComment())); - methods.addAll( - super.createNewBuilderMethods( - service, - typeStore, - "newHttpJsonBuilder", - "createHttpJsonDefault", - new SettingsCommentComposer(transportNames.next()) - .getNewTransportBuilderMethodComment())); + if (service.hasAnyEnabledMethodsForTransport(Transport.REST)) { + methods.addAll( + super.createNewBuilderMethods( + service, + typeStore, + "newHttpJsonBuilder", + "createHttpJsonDefault", + new SettingsCommentComposer(transportNames.next()) + .getNewTransportBuilderMethodComment())); + } return methods; } } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceCallableFactoryClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceCallableFactoryClassComposer.java index 9a973a2b76..b5b2c4fd4e 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceCallableFactoryClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceCallableFactoryClassComposer.java @@ -33,6 +33,7 @@ import com.google.api.generator.gapic.composer.common.AbstractServiceCallableFactoryClassComposer; import com.google.api.generator.gapic.composer.store.TypeStore; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; import com.google.longrunning.Operation; import java.util.ArrayList; import java.util.Arrays; @@ -55,6 +56,11 @@ public static HttpJsonServiceCallableFactoryClassComposer instance() { return INSTANCE; } + @Override + protected Transport getTransport() { + return Transport.REST; + } + @Override protected List createClassAnnotations(Service service, TypeStore typeStore) { List annotations = super.createClassAnnotations(service, typeStore); diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index 277a5f2c7e..f26091895e 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -1250,7 +1250,6 @@ protected List createTypeRegistry(Service service) { .build())); } - @Override protected List createClassMethods( GapicContext context, Service service, @@ -1276,8 +1275,26 @@ protected List createClassMethods( private List createInvalidClassMethods(Service service) { List methodDefinitions = new ArrayList<>(); for (Method protoMethod : service.methods()) { - if (protoMethod.isSupportedByTransport(getTransport())) { - continue; + if (!protoMethod.isSupportedByTransport(getTransport())) { + String javaStyleProtoMethodName = JavaStyle.toLowerCamelCase(protoMethod.name()); + String callableName = + String.format(CALLABLE_CLASS_MEMBER_PATTERN, javaStyleProtoMethodName); + methodDefinitions.add( + MethodDefinition.builder() + .setIsOverride(true) + .setScope(ScopeNode.PUBLIC) + .setName(callableName) + .setReturnType(getCallableType(protoMethod)) + .setBody( + Arrays.asList( + ExprStatement.withExpr( + ThrowExpr.builder() + .setType(FIXED_TYPESTORE.get("UnsupportedOperationException")) + .setMessageExpr( + getUnsupportedOperationExceptionReason( + callableName, protoMethod)) + .build()))) + .build()); } String javaStyleProtoMethodName = JavaStyle.toLowerCamelCase(protoMethod.name()); String callableName = String.format(CALLABLE_CLASS_MEMBER_PATTERN, javaStyleProtoMethodName); @@ -1294,7 +1311,7 @@ private List createInvalidClassMethods(Service service) { .setType(FIXED_TYPESTORE.get("UnsupportedOperationException")) .setMessageExpr( String.format( - "Not implemented: %s(). %s transport is not implemented for this method yet.", + "Not implemented: %s(). %s transport is not implemented for this method yet. It is either not enabled or not supported (BIDI or Client Streaming)", callableName, getTransport())) .build()))) .build()); diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java index b12528ec3f..68f56604ec 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java @@ -24,6 +24,7 @@ import com.google.api.generator.gapic.composer.common.AbstractServiceStubSettingsClassComposer; import com.google.api.generator.gapic.composer.store.TypeStore; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -53,14 +54,18 @@ private static TypeStore createStaticTypes() { @Override protected List createApiClientHeaderProviderBuilderMethods( Service service, TypeStore typeStore) { - return Collections.singletonList( - createApiClientHeaderProviderBuilderMethod( - service, - typeStore, - "defaultApiClientHeaderProviderBuilder", - FIXED_REST_TYPESTORE.get(GaxHttpJsonProperties.class.getSimpleName()), - "getHttpJsonTokenName", - "getHttpJsonVersion")); + if (service.hasAnyEnabledMethodsForTransport(Transport.REST)) { + return Collections.singletonList( + createApiClientHeaderProviderBuilderMethod( + service, + typeStore, + "defaultApiClientHeaderProviderBuilder", + FIXED_REST_TYPESTORE.get(GaxHttpJsonProperties.class.getSimpleName()), + "getHttpJsonTokenName", + "getHttpJsonVersion")); + } else { + return Collections.emptyList(); + } } @Override diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java index f05e308290..db136452ae 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java @@ -15,6 +15,7 @@ package com.google.api.generator.gapic.model; import com.google.api.generator.engine.ast.ClassDefinition; +import com.google.api.generator.engine.ast.ScopeNode; import com.google.auto.value.AutoValue; import java.util.Collections; import java.util.List; @@ -41,6 +42,27 @@ public enum Kind { // Only used for generating the region tag for samples; therefore only used in select Composers. public abstract String apiVersion(); + public abstract boolean shouldGenerateClass(); + + /** + * Create an empty GapicClass with minimal information. This is intended to be used for + * GapicClasses that will not generate any Java files + * + * @return Minimal GapicClass with setShouldGenerateClass set to False + */ + public static GapicClass createNonGeneratedGapicClass() { + return builder() + .setKind(Kind.STUB) + .setClassDefinition( + ClassDefinition.builder() + .setPackageString("Empty Package") + .setName("Empty Name") + .setScope(ScopeNode.PUBLIC) + .build()) + .setShouldGenerateClass(false) + .build(); + } + public static GapicClass create(Kind kind, ClassDefinition classDefinition) { return builder().setKind(kind).setClassDefinition(classDefinition).build(); } @@ -54,7 +76,8 @@ static Builder builder() { return new AutoValue_GapicClass.Builder() .setSamples(Collections.emptyList()) .setApiShortName("") - .setApiVersion(""); + .setApiVersion("") + .setShouldGenerateClass(true); } abstract Builder toBuilder(); @@ -83,6 +106,8 @@ abstract static class Builder { abstract Builder setApiVersion(String apiVersion); + abstract Builder setShouldGenerateClass(boolean shouldGenerateClass); + abstract GapicClass build(); } } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java index 2e3a6be7df..504a9fbfc3 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java @@ -113,6 +113,22 @@ public boolean hasStandardLroMethods() { return false; } + /** + * Determines if a Service contains any methods that are both eligible and enabled for the + * Transport. GRPC+REST Transport is not supported as each transport's sub composers will invoke + * this method the specific transport (GRPC or REST) + * + * @param transport Expects either GRPC or REST Transport + * @return boolean if service contains any enabled methods for a transport + */ + public boolean hasAnyEnabledMethodsForTransport(Transport transport) { + if (transport == Transport.GRPC_REST) { + throw new IllegalArgumentException( + String.format("Invalid Transport: %s. Expecting GRPC or REST", transport.name())); + } + return methods().stream().anyMatch(x -> x.isSupportedByTransport(transport)); + } + public abstract Builder toBuilder(); public static Builder builder() { diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/protowriter/Writer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/protowriter/Writer.java index 35f9f21fdb..455ca05619 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/protowriter/Writer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/protowriter/Writer.java @@ -57,6 +57,9 @@ public static CodeGeneratorResponse write( } for (GapicClass gapicClazz : clazzes) { + if (!gapicClazz.shouldGenerateClass()) { + continue; + } String classPath = writeClazz(gapicClazz, codeWriter, jos); writeSamples(gapicClazz, getSamplePackage(gapicClazz), classPath, jos); } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/ServiceTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/ServiceTest.java index c6f60b831f..888a4eb6ce 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/ServiceTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/ServiceTest.java @@ -14,8 +14,12 @@ package com.google.api.generator.gapic.model; +import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; +import com.google.api.generator.engine.ast.TypeNode; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import java.util.Arrays; import org.junit.Test; @@ -31,6 +35,21 @@ public class ServiceTest { .setOriginalJavaPackage(SHOWCASE_PACKAGE_NAME) .setOverriddenName("Echo"); + private static final Method.Builder testMethodBuilder = + Method.builder() + .setName("My method") + .setInputType(TypeNode.STRING) + .setOutputType(TypeNode.STRING); + + private static final HttpBindings.Builder testHttpBindingsBuilder = + HttpBindings.builder() + .setPathParameters( + ImmutableSet.of(HttpBindings.HttpBinding.builder().setName("table").build())) + .setPattern("/pattern/test") + .setAdditionalPatterns(Arrays.asList("/extra_pattern/test", "/extra_pattern/hey")) + .setIsAsteriskBody(false) + .setHttpVerb(HttpBindings.HttpVerb.GET); + @Test public void apiShortName_shouldReturnApiShortNameIfHostContainsRegionalEndpoint() { String defaultHost = "us-east1-pubsub.googleapis.com"; @@ -72,4 +91,90 @@ public void apiVersion_shouldReturnEmptyIfNoMatch() { Service testService = testServiceBuilder.setProtoPakkage(protoPackage).build(); assertEquals("", testService.apiVersion()); } + + @Test + public void + hasAnyEnabledMethodsForTransport_shouldReturnFalseForEmptyMethodListForBothTransports() { + Service testService = testServiceBuilder.setMethods(ImmutableList.of()).build(); + assertThat(testService.hasAnyEnabledMethodsForTransport(Transport.GRPC)).isFalse(); + assertThat(testService.hasAnyEnabledMethodsForTransport(Transport.REST)).isFalse(); + } + + @Test + public void + hasAnyEnabledMethodsForTransport_shouldReturnTrueForAnyNonEmptyMethodListGRPCTransport() { + Method testMethod1 = + testMethodBuilder + .setStream(Method.Stream.NONE) + .setHttpBindings(testHttpBindingsBuilder.build()) + .build(); + Service testService1 = testServiceBuilder.setMethods(ImmutableList.of(testMethod1)).build(); + assertThat(testService1.hasAnyEnabledMethodsForTransport(Transport.GRPC)).isTrue(); + + Method testMethod2 = + testMethodBuilder + .setStream(Method.Stream.BIDI) + .setHttpBindings(testHttpBindingsBuilder.build()) + .build(); + Service testService2 = testServiceBuilder.setMethods(ImmutableList.of(testMethod2)).build(); + assertThat(testService2.hasAnyEnabledMethodsForTransport(Transport.GRPC)).isTrue(); + + Service testService3 = + testServiceBuilder.setMethods(ImmutableList.of(testMethod1, testMethod2)).build(); + assertThat(testService3.hasAnyEnabledMethodsForTransport(Transport.GRPC)).isTrue(); + } + + @Test + public void + hasAnyEnabledMethodsForTransport_shouldReturnTrueForAnyNonEmptyAndValidMethodListRESTTransport() { + Method testMethod1 = + testMethodBuilder + .setStream(Method.Stream.NONE) + .setHttpBindings(testHttpBindingsBuilder.build()) + .build(); + Service testService1 = testServiceBuilder.setMethods(ImmutableList.of(testMethod1)).build(); + assertThat(testService1.hasAnyEnabledMethodsForTransport(Transport.REST)).isTrue(); + + Method testMethod2 = + testMethodBuilder + .setStream(Method.Stream.SERVER) + .setHttpBindings(testHttpBindingsBuilder.build()) + .build(); + Service testService2 = testServiceBuilder.setMethods(ImmutableList.of(testMethod2)).build(); + assertThat(testService2.hasAnyEnabledMethodsForTransport(Transport.REST)).isTrue(); + + Service testService3 = + testServiceBuilder.setMethods(ImmutableList.of(testMethod1, testMethod2)).build(); + assertThat(testService3.hasAnyEnabledMethodsForTransport(Transport.REST)).isTrue(); + } + + @Test + public void + hasAnyEnabledMethodsForTransport_shouldReturnFalseForAnyNonEmptyButInvalidMethodListRESTTransport() { + Method testMethod1 = + testMethodBuilder + .setStream(Method.Stream.BIDI) + .setHttpBindings(testHttpBindingsBuilder.build()) + .build(); + Service testService1 = testServiceBuilder.setMethods(ImmutableList.of(testMethod1)).build(); + assertThat(testService1.hasAnyEnabledMethodsForTransport(Transport.REST)).isFalse(); + + Method testMethod2 = + testMethodBuilder + .setStream(Method.Stream.CLIENT) + .setHttpBindings(testHttpBindingsBuilder.build()) + .build(); + Service testService2 = testServiceBuilder.setMethods(ImmutableList.of(testMethod2)).build(); + assertThat(testService2.hasAnyEnabledMethodsForTransport(Transport.REST)).isFalse(); + + Service testService3 = + testServiceBuilder.setMethods(ImmutableList.of(testMethod1, testMethod2)).build(); + assertThat(testService3.hasAnyEnabledMethodsForTransport(Transport.REST)).isFalse(); + } + + @Test(expected = IllegalArgumentException.class) + public void hasAnyEnabledMethodsForTransport_shouldThrowExceptionForGRPCRESTTransport() { + Service testService = testServiceBuilder.build(); + testService.hasAnyEnabledMethodsForTransport(Transport.GRPC_REST); + } } From 168a92518702b96416c9312f08f3448aafca594d Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 11 Jan 2023 15:34:04 -0500 Subject: [PATCH 19/63] chore: Pull in latest part 1 changes --- .../common/AbstractTransportServiceStubClassComposer.java | 7 ------- .../composer/rest/HttpJsonServiceStubClassComposer.java | 3 --- .../com/google/api/generator/gapic/model/Transport.java | 5 +++-- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java index b7ed1d1801..05cd965cfd 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java @@ -229,13 +229,6 @@ public GapicClass generate(GapicContext context, Service service) { return GapicClass.create(kind, classDef); } -<<<<<<< HEAD - protected String getUnsupportedOperationExceptionReason(String callableName, Method protoMethod) { - return String.format("Not implemented: %s()", callableName); - } - -======= ->>>>>>> main-rest_method_generation protected Transport getTransport() { return Transport.GRPC; } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index 7eac52f99b..277a5f2c7e 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -1250,10 +1250,7 @@ protected List createTypeRegistry(Service service) { .build())); } -<<<<<<< HEAD -======= @Override ->>>>>>> main-rest_method_generation protected List createClassMethods( GapicContext context, Service service, diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Transport.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Transport.java index ae7820c8ed..700e23ace5 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Transport.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Transport.java @@ -20,12 +20,13 @@ public enum Transport { GRPC_REST; /** - * Parse command line transport argument in the format `grpc+rest`. + * Parse command line transport argument in the format `grpc+rest`. Convert name String to + * lowercase as `gRPC` is not valid but `grpc` is * * @param name name of the transport. Valid inputs are "grpc", "rest", "grpc+rest" * @return the {@code Transport} enum matching the command line argument */ public static Transport parse(String name) { - return valueOf(name.replace('+', '_').toUpperCase()); + return valueOf(name.toLowerCase().replace('+', '_').toUpperCase()); } } From d7ebc7632998861007cd21dc57a83f1594060dc2 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 11 Jan 2023 16:58:01 -0500 Subject: [PATCH 20/63] fix: Update Kind to NON_GENERATED --- .../api/generator/gapic/model/GapicClass.java | 13 ++++--------- .../api/generator/gapic/protowriter/Writer.java | 2 +- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java index db136452ae..044a1604c8 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java @@ -27,7 +27,8 @@ public enum Kind { MAIN, STUB, TEST, - PROTO + PROTO, + NON_GENERATED }; public abstract Kind kind(); @@ -42,8 +43,6 @@ public enum Kind { // Only used for generating the region tag for samples; therefore only used in select Composers. public abstract String apiVersion(); - public abstract boolean shouldGenerateClass(); - /** * Create an empty GapicClass with minimal information. This is intended to be used for * GapicClasses that will not generate any Java files @@ -52,14 +51,13 @@ public enum Kind { */ public static GapicClass createNonGeneratedGapicClass() { return builder() - .setKind(Kind.STUB) + .setKind(Kind.NON_GENERATED) .setClassDefinition( ClassDefinition.builder() .setPackageString("Empty Package") .setName("Empty Name") .setScope(ScopeNode.PUBLIC) .build()) - .setShouldGenerateClass(false) .build(); } @@ -76,8 +74,7 @@ static Builder builder() { return new AutoValue_GapicClass.Builder() .setSamples(Collections.emptyList()) .setApiShortName("") - .setApiVersion("") - .setShouldGenerateClass(true); + .setApiVersion(""); } abstract Builder toBuilder(); @@ -106,8 +103,6 @@ abstract static class Builder { abstract Builder setApiVersion(String apiVersion); - abstract Builder setShouldGenerateClass(boolean shouldGenerateClass); - abstract GapicClass build(); } } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/protowriter/Writer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/protowriter/Writer.java index 455ca05619..d130b12feb 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/protowriter/Writer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/protowriter/Writer.java @@ -57,7 +57,7 @@ public static CodeGeneratorResponse write( } for (GapicClass gapicClazz : clazzes) { - if (!gapicClazz.shouldGenerateClass()) { + if (gapicClazz.kind() == GapicClass.Kind.NON_GENERATED) { continue; } String classPath = writeClazz(gapicClazz, codeWriter, jos); From 4b5f606bff2892d8d5840d7634693417f721107e Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 11 Jan 2023 23:56:12 -0500 Subject: [PATCH 21/63] feat: Do not generate secondary Transport sample if no rest code is generated --- .../gapic/composer/comment/ServiceClientCommentComposer.java | 5 ++++- .../common/AbstractServiceSettingsClassComposer.java | 3 +-- .../common/AbstractServiceStubSettingsClassComposer.java | 5 ++--- .../java/com/google/api/generator/gapic/model/Service.java | 4 ++++ 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java index 5835c77935..cbe64c0630 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java @@ -22,6 +22,7 @@ import com.google.api.generator.gapic.model.Method; import com.google.api.generator.gapic.model.MethodArgument; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import java.util.ArrayList; import java.util.Arrays; @@ -148,7 +149,9 @@ public static List createClassHeaderComments( classHeaderJavadocBuilder.addSampleCode(credentialsSampleCode); classHeaderJavadocBuilder.addParagraph(SERVICE_DESCRIPTION_ENDPOINT_SUMMARY_STRING); classHeaderJavadocBuilder.addSampleCode(endpointSampleCode); - if (transportSampleCode != null) { + + // Generate Secondary Transport sample if Transport Sample exists and HttpJson code is generated + if (transportSampleCode != null && service.hasAnyEnabledMethodsForTransport(Transport.REST)) { classHeaderJavadocBuilder.addParagraph( String.format( SERVICE_DESCRIPTION_TRANSPORT_SUMMARY_STRING, secondaryTransport, primaryTransport)); diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceSettingsClassComposer.java index f108b65a9b..a395aafd61 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceSettingsClassComposer.java @@ -63,7 +63,6 @@ import com.google.api.generator.gapic.model.Method.Stream; import com.google.api.generator.gapic.model.Sample; import com.google.api.generator.gapic.model.Service; -import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -390,7 +389,7 @@ private List createDefaultGetterMethods(Service service, TypeS Class channelProviderClass = channelProviderClassesIt.next(); String transportName = transportNamesIt.next(); - if (!service.hasAnyEnabledMethodsForTransport(Transport.parse(transportName))) { + if (!service.hasAnyEnabledMethodsForTransport(transportName)) { continue; } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java index c7d5c672b7..442eff07e2 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java @@ -95,7 +95,6 @@ import com.google.api.generator.gapic.model.Method.Stream; import com.google.api.generator.gapic.model.Sample; import com.google.api.generator.gapic.model.Service; -import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -266,7 +265,7 @@ protected List createDefaultTransportTransportProviderBuilderM String builderName = builderNamesIt.next(); String transportName = transportNamesIt.next(); - if (!service.hasAnyEnabledMethodsForTransport(Transport.parse(transportName))) { + if (!service.hasAnyEnabledMethodsForTransport(transportName)) { continue; } @@ -1069,7 +1068,7 @@ private MethodDefinition createCreateStubMethod(Service service, TypeStore typeS String getterName = getterNameIt.next(); String serivceStubClassName = serivceStubClassNameIt.next(); - if (!service.hasAnyEnabledMethodsForTransport(Transport.parse(transportName))) { + if (!service.hasAnyEnabledMethodsForTransport(transportName)) { continue; } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java index 504a9fbfc3..49ffbe2158 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java @@ -113,6 +113,10 @@ public boolean hasStandardLroMethods() { return false; } + public boolean hasAnyEnabledMethodsForTransport(String transportName) { + return hasAnyEnabledMethodsForTransport(Transport.parse(transportName)); + } + /** * Determines if a Service contains any methods that are both eligible and enabled for the * Transport. GRPC+REST Transport is not supported as each transport's sub composers will invoke From 240ee8f6c4ca6fc7b3681f39b283e599fdd7015b Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 12 Jan 2023 00:14:25 -0500 Subject: [PATCH 22/63] feat: Do not generate httpjson tests if no matching RPCs --- .../AbstractServiceClientTestClassComposer.java | 15 ++++++++++----- .../HttpJsonServiceClientTestClassComposer.java | 6 ------ .../rest/ServiceClientTestClassComposer.java | 6 ++++++ 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java index fd6686212f..9479d8e35a 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java @@ -56,6 +56,7 @@ import com.google.api.generator.gapic.model.MethodArgument; import com.google.api.generator.gapic.model.ResourceName; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; @@ -103,12 +104,20 @@ public TransportContext getTransportContext() { return transportContext; } + protected Transport getTransport() { + return Transport.GRPC; + } + @Override public GapicClass generate(GapicContext context, Service service) { return generate(ClassNames.getServiceClientTestClassName(service), context, service); } protected GapicClass generate(String className, GapicContext context, Service service) { + if (!service.hasAnyEnabledMethodsForTransport(getTransport())) { + return GapicClass.createNonGeneratedGapicClass(); + } + Map resourceNames = context.helperResourceNames(); String pakkage = service.pakkage(); TypeStore typeStore = new TypeStore(); @@ -131,10 +140,6 @@ protected GapicClass generate(String className, GapicContext context, Service se return GapicClass.create(kind, classDef); } - protected boolean isSupportedMethod(Method method) { - return true; - } - private List createClassAnnotations() { return Arrays.asList( AnnotationNode.builder() @@ -230,7 +235,7 @@ private List createTestMethods( Map messageTypes = context.messages(); List javaMethods = new ArrayList<>(); for (Method method : service.methods()) { - if (!isSupportedMethod(method)) { + if (!method.isSupportedByTransport(getTransport())) { javaMethods.add(createUnsupportedTestMethod(method)); continue; } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposer.java index 00f76eb75e..2c3e5b9233 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposer.java @@ -46,12 +46,6 @@ protected GapicClass generate(String className, GapicContext context, Service se service); } - protected boolean isSupportedMethod(Method method) { - return method.httpBindings() != null - && method.stream() != Stream.BIDI - && method.stream() != Stream.CLIENT; - } - @Override protected MethodDefinition createStartStaticServerMethod( Service service, diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java index d9fc2843cd..6b76d1220e 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java @@ -47,6 +47,7 @@ import com.google.api.generator.gapic.model.MethodArgument; import com.google.api.generator.gapic.model.ResourceName; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.collect.ImmutableList; import java.util.ArrayList; @@ -91,6 +92,11 @@ private static TypeStore createStaticTypes() { MockHttpService.class)); } + @Override + protected Transport getTransport() { + return Transport.REST; + } + @Override protected Map createClassMemberVarExprs( Service service, GapicContext context, TypeStore typeStore) { From 454123903eb57547fb7452102f8c8bbcb9bed663 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 12 Jan 2023 13:09:21 -0500 Subject: [PATCH 23/63] chore: Run mvn test -DupdateUnitGoldens --- .../composer/grpcrest/goldens/EchoEmpty.golden | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoEmpty.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoEmpty.golden index d9708af4ae..ad2bd517d2 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoEmpty.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoEmpty.golden @@ -76,19 +76,6 @@ import javax.annotation.Generated; * EchoEmpyClient echoEmpyClient = EchoEmpyClient.create(echoEmpySettings); * } * - *

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

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * EchoEmpySettings echoEmpySettings = EchoEmpySettings.newHttpJsonBuilder().build();
- * EchoEmpyClient echoEmpyClient = EchoEmpyClient.create(echoEmpySettings);
- * }
- * *

Please refer to the GitHub repository's samples for more quickstart code snippets. */ @BetaApi From 7b6ade01f9521220412979822b3fc2e814ae7c2c Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 12 Jan 2023 13:12:05 -0500 Subject: [PATCH 24/63] chore: Update formatting --- .../grpcrest/HttpJsonServiceClientTestClassComposer.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposer.java index 2c3e5b9233..9f9bbafc05 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposer.java @@ -21,8 +21,6 @@ import com.google.api.generator.gapic.composer.store.TypeStore; import com.google.api.generator.gapic.model.GapicClass; import com.google.api.generator.gapic.model.GapicContext; -import com.google.api.generator.gapic.model.Method; -import com.google.api.generator.gapic.model.Method.Stream; import com.google.api.generator.gapic.model.Service; import java.util.Map; From 2b40a47b6aa888ac4f9137fbcff5aa5585f31cf1 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 12 Jan 2023 16:34:01 -0500 Subject: [PATCH 25/63] chore: Add apigeeconnect to test REGAPIC --- test/integration/BUILD.bazel | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/integration/BUILD.bazel b/test/integration/BUILD.bazel index 57cd8b2210..4a3409aa0e 100644 --- a/test/integration/BUILD.bazel +++ b/test/integration/BUILD.bazel @@ -34,6 +34,8 @@ API_GAPIC_TARGETS = { "compute": "@com_google_googleapis//google/cloud/compute/v1small:compute_small_java_gapic", # Routing headers. "bigtable": "@com_google_googleapis//google/bigtable/v2:bigtable_java_gapic", + # REGAPIC REST Client Generation + "apigeeconnect": "@com_google_googleapis//google/cloud/apigeeconnect/v1:apigeeconnect_java_gapic", } [filegroup( @@ -135,6 +137,13 @@ java_gapic_test( runtime_deps = ["@com_google_googleapis//google/bigtable/v2:bigtable_java_gapic_test"], ) +# Apigee Connect V1 API +java_gapic_test( + name = "apigeeconnect_java_gapic_test_suite", + test_classes = [], + runtime_deps = ["@com_google_googleapis//google/cloud/apigeeconnect/v1:apigeeconnect_java_gapic_test"], +) + # IAM (for a standalone mixed-in API). java_gapic_library( name = "iam_java_gapic", From 5ea2938f0ead99e54fb0247b693429d3c39d7772 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 12 Jan 2023 16:34:23 -0500 Subject: [PATCH 26/63] chore: Create directory for new modules --- scripts/update_golden.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/update_golden.sh b/scripts/update_golden.sh index 98203b15f2..825ca36dd9 100755 --- a/scripts/update_golden.sh +++ b/scripts/update_golden.sh @@ -11,6 +11,7 @@ cd srcjar_unpacked UNPACK_DIR=$PWD unzip -q -c "../${RAW_SRCJAR}" temp-codegen.srcjar | jar x +mkdir -p ${BUILD_WORKSPACE_DIRECTORY}/test/integration/goldens/${API_NAME} cd ${BUILD_WORKSPACE_DIRECTORY}/test/integration/goldens/${API_NAME} # clear out existing Java and JSON files. From 83473a101302ce042a223b3afb968f6db9cf644b Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 12 Jan 2023 16:45:36 -0500 Subject: [PATCH 27/63] chore: Update googleapis commit to a later version for grpc+rest enabled APIs --- WORKSPACE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index 6e18778edb..b5a186718a 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -26,7 +26,7 @@ load("@com_google_api_gax_java//:repositories.bzl", "com_google_api_gax_java_rep com_google_api_gax_java_repositories() -_googleapis_commit = "44d6bef0ca6db8bba3fb324c8186e694bcc4829c" +_googleapis_commit = "7438480b2a1bc6371d748e974f7a3647f90c4e8d" http_archive( name = "com_google_googleapis", From 58bf7b5aff1974db3364093f5d91482b83e86f2c Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 12 Jan 2023 16:46:00 -0500 Subject: [PATCH 28/63] chore Add in goldens for apigeeconnect --- .../SyncCreateSetCredentialsProvider.java | 45 ++ .../SyncCreateSetCredentialsProvider1.java | 41 ++ .../create/SyncCreateSetEndpoint.java | 42 ++ .../listconnections/AsyncListConnections.java | 54 +++ .../AsyncListConnectionsPaged.java | 62 +++ .../listconnections/SyncListConnections.java | 50 ++ .../SyncListConnectionsEndpointname.java | 44 ++ .../SyncListConnectionsString.java | 44 ++ .../listconnections/SyncListConnections.java | 49 ++ .../listconnections/SyncListConnections.java | 50 ++ .../tetherstubsettings/egress/SyncEgress.java | 48 ++ .../SyncCreateSetCredentialsProvider.java | 44 ++ .../SyncCreateSetCredentialsProvider1.java | 39 ++ .../tether/create/SyncCreateSetEndpoint.java | 40 ++ .../v1/tether/egress/AsyncEgress.java | 59 +++ .../v1/tethersettings/egress/SyncEgress.java | 48 ++ .../v1/ConnectionServiceClient.java | 452 ++++++++++++++++++ .../ConnectionServiceClientHttpJsonTest.java | 177 +++++++ .../v1/ConnectionServiceClientTest.java | 168 +++++++ .../v1/ConnectionServiceSettings.java | 213 +++++++++ .../cloud/apigeeconnect/v1/EndpointName.java | 192 ++++++++ .../v1/MockConnectionService.java | 59 +++ .../v1/MockConnectionServiceImpl.java | 81 ++++ .../cloud/apigeeconnect/v1/MockTether.java | 59 +++ .../apigeeconnect/v1/MockTetherImpl.java | 97 ++++ .../cloud/apigeeconnect/v1/TetherClient.java | 232 +++++++++ .../apigeeconnect/v1/TetherClientTest.java | 151 ++++++ .../apigeeconnect/v1/TetherSettings.java | 186 +++++++ .../apigeeconnect/v1/gapic_metadata.json | 33 ++ .../cloud/apigeeconnect/v1/package-info.java | 76 +++ .../v1/stub/ConnectionServiceStub.java | 47 ++ .../stub/ConnectionServiceStubSettings.java | 402 ++++++++++++++++ .../GrpcConnectionServiceCallableFactory.java | 113 +++++ .../v1/stub/GrpcConnectionServiceStub.java | 179 +++++++ .../v1/stub/GrpcTetherCallableFactory.java | 113 +++++ .../apigeeconnect/v1/stub/GrpcTetherStub.java | 148 ++++++ ...pJsonConnectionServiceCallableFactory.java | 105 ++++ .../stub/HttpJsonConnectionServiceStub.java | 209 ++++++++ .../apigeeconnect/v1/stub/TetherStub.java | 40 ++ .../v1/stub/TetherStubSettings.java | 262 ++++++++++ 40 files changed, 4553 insertions(+) create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetCredentialsProvider.java create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetCredentialsProvider1.java create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetEndpoint.java create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/AsyncListConnections.java create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/AsyncListConnectionsPaged.java create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/SyncListConnections.java create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/SyncListConnectionsEndpointname.java create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/SyncListConnectionsString.java create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservicesettings/listconnections/SyncListConnections.java create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/stub/connectionservicestubsettings/listconnections/SyncListConnections.java create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/stub/tetherstubsettings/egress/SyncEgress.java create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetCredentialsProvider.java create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetCredentialsProvider1.java create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetEndpoint.java create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/egress/AsyncEgress.java create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tethersettings/egress/SyncEgress.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceClient.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceClientHttpJsonTest.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceClientTest.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceSettings.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/EndpointName.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockConnectionService.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockConnectionServiceImpl.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockTether.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockTetherImpl.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/TetherClient.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/TetherClientTest.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/TetherSettings.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/gapic_metadata.json create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/package-info.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStub.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcConnectionServiceCallableFactory.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcConnectionServiceStub.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcTetherCallableFactory.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcTetherStub.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/HttpJsonConnectionServiceCallableFactory.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/HttpJsonConnectionServiceStub.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStub.java create mode 100644 test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetCredentialsProvider.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetCredentialsProvider.java new file mode 100644 index 0000000000..ef37e87690 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetCredentialsProvider.java @@ -0,0 +1,45 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.samples; + +// [START apigeeconnect_v1_generated_ConnectionService_Create_SetCredentialsProvider_sync] +import com.google.api.gax.core.FixedCredentialsProvider; +import com.google.cloud.apigeeconnect.v1.ConnectionServiceClient; +import com.google.cloud.apigeeconnect.v1.ConnectionServiceSettings; +import com.google.cloud.apigeeconnect.v1.myCredentials; + +public class SyncCreateSetCredentialsProvider { + + public static void main(String[] args) throws Exception { + syncCreateSetCredentialsProvider(); + } + + public static void syncCreateSetCredentialsProvider() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + ConnectionServiceSettings connectionServiceSettings = + ConnectionServiceSettings.newBuilder() + .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials)) + .build(); + ConnectionServiceClient connectionServiceClient = + ConnectionServiceClient.create(connectionServiceSettings); + } +} +// [END apigeeconnect_v1_generated_ConnectionService_Create_SetCredentialsProvider_sync] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetCredentialsProvider1.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetCredentialsProvider1.java new file mode 100644 index 0000000000..b2a5bd5657 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetCredentialsProvider1.java @@ -0,0 +1,41 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.samples; + +// [START apigeeconnect_v1_generated_ConnectionService_Create_SetCredentialsProvider1_sync] +import com.google.cloud.apigeeconnect.v1.ConnectionServiceClient; +import com.google.cloud.apigeeconnect.v1.ConnectionServiceSettings; + +public class SyncCreateSetCredentialsProvider1 { + + public static void main(String[] args) throws Exception { + syncCreateSetCredentialsProvider1(); + } + + public static void syncCreateSetCredentialsProvider1() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + ConnectionServiceSettings connectionServiceSettings = + ConnectionServiceSettings.newHttpJsonBuilder().build(); + ConnectionServiceClient connectionServiceClient = + ConnectionServiceClient.create(connectionServiceSettings); + } +} +// [END apigeeconnect_v1_generated_ConnectionService_Create_SetCredentialsProvider1_sync] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetEndpoint.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetEndpoint.java new file mode 100644 index 0000000000..3d5446239c --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetEndpoint.java @@ -0,0 +1,42 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.samples; + +// [START apigeeconnect_v1_generated_ConnectionService_Create_SetEndpoint_sync] +import com.google.cloud.apigeeconnect.v1.ConnectionServiceClient; +import com.google.cloud.apigeeconnect.v1.ConnectionServiceSettings; +import com.google.cloud.apigeeconnect.v1.myEndpoint; + +public class SyncCreateSetEndpoint { + + public static void main(String[] args) throws Exception { + syncCreateSetEndpoint(); + } + + public static void syncCreateSetEndpoint() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + ConnectionServiceSettings connectionServiceSettings = + ConnectionServiceSettings.newBuilder().setEndpoint(myEndpoint).build(); + ConnectionServiceClient connectionServiceClient = + ConnectionServiceClient.create(connectionServiceSettings); + } +} +// [END apigeeconnect_v1_generated_ConnectionService_Create_SetEndpoint_sync] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/AsyncListConnections.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/AsyncListConnections.java new file mode 100644 index 0000000000..e58d765ec9 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/AsyncListConnections.java @@ -0,0 +1,54 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.samples; + +// [START apigeeconnect_v1_generated_ConnectionService_ListConnections_async] +import com.google.api.core.ApiFuture; +import com.google.cloud.apigeeconnect.v1.Connection; +import com.google.cloud.apigeeconnect.v1.ConnectionServiceClient; +import com.google.cloud.apigeeconnect.v1.EndpointName; +import com.google.cloud.apigeeconnect.v1.ListConnectionsRequest; + +public class AsyncListConnections { + + public static void main(String[] args) throws Exception { + asyncListConnections(); + } + + public static void asyncListConnections() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + try (ConnectionServiceClient connectionServiceClient = ConnectionServiceClient.create()) { + ListConnectionsRequest request = + ListConnectionsRequest.newBuilder() + .setParent(EndpointName.of("[PROJECT]", "[ENDPOINT]").toString()) + .setPageSize(883849137) + .setPageToken("pageToken873572522") + .build(); + ApiFuture future = + connectionServiceClient.listConnectionsPagedCallable().futureCall(request); + // Do something. + for (Connection element : future.get().iterateAll()) { + // doThingsWith(element); + } + } + } +} +// [END apigeeconnect_v1_generated_ConnectionService_ListConnections_async] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/AsyncListConnectionsPaged.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/AsyncListConnectionsPaged.java new file mode 100644 index 0000000000..b2254cf236 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/AsyncListConnectionsPaged.java @@ -0,0 +1,62 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.samples; + +// [START apigeeconnect_v1_generated_ConnectionService_ListConnections_Paged_async] +import com.google.cloud.apigeeconnect.v1.Connection; +import com.google.cloud.apigeeconnect.v1.ConnectionServiceClient; +import com.google.cloud.apigeeconnect.v1.EndpointName; +import com.google.cloud.apigeeconnect.v1.ListConnectionsRequest; +import com.google.cloud.apigeeconnect.v1.ListConnectionsResponse; +import com.google.common.base.Strings; + +public class AsyncListConnectionsPaged { + + public static void main(String[] args) throws Exception { + asyncListConnectionsPaged(); + } + + public static void asyncListConnectionsPaged() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + try (ConnectionServiceClient connectionServiceClient = ConnectionServiceClient.create()) { + ListConnectionsRequest request = + ListConnectionsRequest.newBuilder() + .setParent(EndpointName.of("[PROJECT]", "[ENDPOINT]").toString()) + .setPageSize(883849137) + .setPageToken("pageToken873572522") + .build(); + while (true) { + ListConnectionsResponse response = + connectionServiceClient.listConnectionsCallable().call(request); + for (Connection element : response.getConnectionsList()) { + // doThingsWith(element); + } + String nextPageToken = response.getNextPageToken(); + if (!Strings.isNullOrEmpty(nextPageToken)) { + request = request.toBuilder().setPageToken(nextPageToken).build(); + } else { + break; + } + } + } + } +} +// [END apigeeconnect_v1_generated_ConnectionService_ListConnections_Paged_async] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/SyncListConnections.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/SyncListConnections.java new file mode 100644 index 0000000000..22d8721a3d --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/SyncListConnections.java @@ -0,0 +1,50 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.samples; + +// [START apigeeconnect_v1_generated_ConnectionService_ListConnections_sync] +import com.google.cloud.apigeeconnect.v1.Connection; +import com.google.cloud.apigeeconnect.v1.ConnectionServiceClient; +import com.google.cloud.apigeeconnect.v1.EndpointName; +import com.google.cloud.apigeeconnect.v1.ListConnectionsRequest; + +public class SyncListConnections { + + public static void main(String[] args) throws Exception { + syncListConnections(); + } + + public static void syncListConnections() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + try (ConnectionServiceClient connectionServiceClient = ConnectionServiceClient.create()) { + ListConnectionsRequest request = + ListConnectionsRequest.newBuilder() + .setParent(EndpointName.of("[PROJECT]", "[ENDPOINT]").toString()) + .setPageSize(883849137) + .setPageToken("pageToken873572522") + .build(); + for (Connection element : connectionServiceClient.listConnections(request).iterateAll()) { + // doThingsWith(element); + } + } + } +} +// [END apigeeconnect_v1_generated_ConnectionService_ListConnections_sync] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/SyncListConnectionsEndpointname.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/SyncListConnectionsEndpointname.java new file mode 100644 index 0000000000..3c375d2ab4 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/SyncListConnectionsEndpointname.java @@ -0,0 +1,44 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.samples; + +// [START apigeeconnect_v1_generated_ConnectionService_ListConnections_Endpointname_sync] +import com.google.cloud.apigeeconnect.v1.Connection; +import com.google.cloud.apigeeconnect.v1.ConnectionServiceClient; +import com.google.cloud.apigeeconnect.v1.EndpointName; + +public class SyncListConnectionsEndpointname { + + public static void main(String[] args) throws Exception { + syncListConnectionsEndpointname(); + } + + public static void syncListConnectionsEndpointname() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + try (ConnectionServiceClient connectionServiceClient = ConnectionServiceClient.create()) { + EndpointName parent = EndpointName.of("[PROJECT]", "[ENDPOINT]"); + for (Connection element : connectionServiceClient.listConnections(parent).iterateAll()) { + // doThingsWith(element); + } + } + } +} +// [END apigeeconnect_v1_generated_ConnectionService_ListConnections_Endpointname_sync] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/SyncListConnectionsString.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/SyncListConnectionsString.java new file mode 100644 index 0000000000..5ba3d9f0d5 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/listconnections/SyncListConnectionsString.java @@ -0,0 +1,44 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.samples; + +// [START apigeeconnect_v1_generated_ConnectionService_ListConnections_String_sync] +import com.google.cloud.apigeeconnect.v1.Connection; +import com.google.cloud.apigeeconnect.v1.ConnectionServiceClient; +import com.google.cloud.apigeeconnect.v1.EndpointName; + +public class SyncListConnectionsString { + + public static void main(String[] args) throws Exception { + syncListConnectionsString(); + } + + public static void syncListConnectionsString() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + try (ConnectionServiceClient connectionServiceClient = ConnectionServiceClient.create()) { + String parent = EndpointName.of("[PROJECT]", "[ENDPOINT]").toString(); + for (Connection element : connectionServiceClient.listConnections(parent).iterateAll()) { + // doThingsWith(element); + } + } + } +} +// [END apigeeconnect_v1_generated_ConnectionService_ListConnections_String_sync] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservicesettings/listconnections/SyncListConnections.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservicesettings/listconnections/SyncListConnections.java new file mode 100644 index 0000000000..b52fb067ef --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservicesettings/listconnections/SyncListConnections.java @@ -0,0 +1,49 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.samples; + +// [START apigeeconnect_v1_generated_ConnectionServiceSettings_ListConnections_sync] +import com.google.cloud.apigeeconnect.v1.ConnectionServiceSettings; +import java.time.Duration; + +public class SyncListConnections { + + public static void main(String[] args) throws Exception { + syncListConnections(); + } + + public static void syncListConnections() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + ConnectionServiceSettings.Builder connectionServiceSettingsBuilder = + ConnectionServiceSettings.newBuilder(); + connectionServiceSettingsBuilder + .listConnectionsSettings() + .setRetrySettings( + connectionServiceSettingsBuilder + .listConnectionsSettings() + .getRetrySettings() + .toBuilder() + .setTotalTimeout(Duration.ofSeconds(30)) + .build()); + ConnectionServiceSettings connectionServiceSettings = connectionServiceSettingsBuilder.build(); + } +} +// [END apigeeconnect_v1_generated_ConnectionServiceSettings_ListConnections_sync] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/stub/connectionservicestubsettings/listconnections/SyncListConnections.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/stub/connectionservicestubsettings/listconnections/SyncListConnections.java new file mode 100644 index 0000000000..cfd7db3cb8 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/stub/connectionservicestubsettings/listconnections/SyncListConnections.java @@ -0,0 +1,50 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.stub.samples; + +// [START apigeeconnect_v1_generated_ConnectionServiceStubSettings_ListConnections_sync] +import com.google.cloud.apigeeconnect.v1.stub.ConnectionServiceStubSettings; +import java.time.Duration; + +public class SyncListConnections { + + public static void main(String[] args) throws Exception { + syncListConnections(); + } + + public static void syncListConnections() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + ConnectionServiceStubSettings.Builder connectionServiceSettingsBuilder = + ConnectionServiceStubSettings.newBuilder(); + connectionServiceSettingsBuilder + .listConnectionsSettings() + .setRetrySettings( + connectionServiceSettingsBuilder + .listConnectionsSettings() + .getRetrySettings() + .toBuilder() + .setTotalTimeout(Duration.ofSeconds(30)) + .build()); + ConnectionServiceStubSettings connectionServiceSettings = + connectionServiceSettingsBuilder.build(); + } +} +// [END apigeeconnect_v1_generated_ConnectionServiceStubSettings_ListConnections_sync] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/stub/tetherstubsettings/egress/SyncEgress.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/stub/tetherstubsettings/egress/SyncEgress.java new file mode 100644 index 0000000000..ac44c199a1 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/stub/tetherstubsettings/egress/SyncEgress.java @@ -0,0 +1,48 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.stub.samples; + +// [START apigeeconnect_v1_generated_TetherStubSettings_Egress_sync] +import com.google.cloud.apigeeconnect.v1.stub.TetherStubSettings; +import java.time.Duration; + +public class SyncEgress { + + public static void main(String[] args) throws Exception { + syncEgress(); + } + + public static void syncEgress() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + TetherStubSettings.Builder tetherSettingsBuilder = TetherStubSettings.newBuilder(); + tetherSettingsBuilder + .egressSettings() + .setRetrySettings( + tetherSettingsBuilder + .egressSettings() + .getRetrySettings() + .toBuilder() + .setTotalTimeout(Duration.ofSeconds(30)) + .build()); + TetherStubSettings tetherSettings = tetherSettingsBuilder.build(); + } +} +// [END apigeeconnect_v1_generated_TetherStubSettings_Egress_sync] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetCredentialsProvider.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetCredentialsProvider.java new file mode 100644 index 0000000000..1a44df0098 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetCredentialsProvider.java @@ -0,0 +1,44 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.samples; + +// [START apigeeconnect_v1_generated_Tether_Create_SetCredentialsProvider_sync] +import com.google.api.gax.core.FixedCredentialsProvider; +import com.google.cloud.apigeeconnect.v1.TetherClient; +import com.google.cloud.apigeeconnect.v1.TetherSettings; +import com.google.cloud.apigeeconnect.v1.myCredentials; + +public class SyncCreateSetCredentialsProvider { + + public static void main(String[] args) throws Exception { + syncCreateSetCredentialsProvider(); + } + + public static void syncCreateSetCredentialsProvider() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + TetherSettings tetherSettings = + TetherSettings.newBuilder() + .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials)) + .build(); + TetherClient tetherClient = TetherClient.create(tetherSettings); + } +} +// [END apigeeconnect_v1_generated_Tether_Create_SetCredentialsProvider_sync] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetCredentialsProvider1.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetCredentialsProvider1.java new file mode 100644 index 0000000000..f72596e748 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetCredentialsProvider1.java @@ -0,0 +1,39 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.samples; + +// [START apigeeconnect_v1_generated_Tether_Create_SetCredentialsProvider1_sync] +import com.google.cloud.apigeeconnect.v1.TetherClient; +import com.google.cloud.apigeeconnect.v1.TetherSettings; + +public class SyncCreateSetCredentialsProvider1 { + + public static void main(String[] args) throws Exception { + syncCreateSetCredentialsProvider1(); + } + + public static void syncCreateSetCredentialsProvider1() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + TetherSettings tetherSettings = TetherSettings.newHttpJsonBuilder().build(); + TetherClient tetherClient = TetherClient.create(tetherSettings); + } +} +// [END apigeeconnect_v1_generated_Tether_Create_SetCredentialsProvider1_sync] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetEndpoint.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetEndpoint.java new file mode 100644 index 0000000000..d8b615f9fe --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetEndpoint.java @@ -0,0 +1,40 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.samples; + +// [START apigeeconnect_v1_generated_Tether_Create_SetEndpoint_sync] +import com.google.cloud.apigeeconnect.v1.TetherClient; +import com.google.cloud.apigeeconnect.v1.TetherSettings; +import com.google.cloud.apigeeconnect.v1.myEndpoint; + +public class SyncCreateSetEndpoint { + + public static void main(String[] args) throws Exception { + syncCreateSetEndpoint(); + } + + public static void syncCreateSetEndpoint() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + TetherSettings tetherSettings = TetherSettings.newBuilder().setEndpoint(myEndpoint).build(); + TetherClient tetherClient = TetherClient.create(tetherSettings); + } +} +// [END apigeeconnect_v1_generated_Tether_Create_SetEndpoint_sync] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/egress/AsyncEgress.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/egress/AsyncEgress.java new file mode 100644 index 0000000000..1d32c19c1d --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/egress/AsyncEgress.java @@ -0,0 +1,59 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.samples; + +// [START apigeeconnect_v1_generated_Tether_Egress_async] +import com.google.api.gax.rpc.BidiStream; +import com.google.cloud.apigeeconnect.v1.EgressRequest; +import com.google.cloud.apigeeconnect.v1.EgressResponse; +import com.google.cloud.apigeeconnect.v1.HttpResponse; +import com.google.cloud.apigeeconnect.v1.TetherClient; +import com.google.cloud.apigeeconnect.v1.TetherEndpoint; +import com.google.rpc.Status; + +public class AsyncEgress { + + public static void main(String[] args) throws Exception { + asyncEgress(); + } + + public static void asyncEgress() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + try (TetherClient tetherClient = TetherClient.create()) { + BidiStream bidiStream = tetherClient.egressCallable().call(); + EgressResponse request = + EgressResponse.newBuilder() + .setId("id3355") + .setHttpResponse(HttpResponse.newBuilder().build()) + .setStatus(Status.newBuilder().build()) + .setProject("project-309310695") + .setTraceId("traceId-1067401920") + .setEndpoint(TetherEndpoint.forNumber(0)) + .setName("name3373707") + .build(); + bidiStream.send(request); + for (EgressRequest response : bidiStream) { + // Do something when a response is received. + } + } + } +} +// [END apigeeconnect_v1_generated_Tether_Egress_async] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tethersettings/egress/SyncEgress.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tethersettings/egress/SyncEgress.java new file mode 100644 index 0000000000..f1efa82994 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tethersettings/egress/SyncEgress.java @@ -0,0 +1,48 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.samples; + +// [START apigeeconnect_v1_generated_TetherSettings_Egress_sync] +import com.google.cloud.apigeeconnect.v1.TetherSettings; +import java.time.Duration; + +public class SyncEgress { + + public static void main(String[] args) throws Exception { + syncEgress(); + } + + public static void syncEgress() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + TetherSettings.Builder tetherSettingsBuilder = TetherSettings.newBuilder(); + tetherSettingsBuilder + .egressSettings() + .setRetrySettings( + tetherSettingsBuilder + .egressSettings() + .getRetrySettings() + .toBuilder() + .setTotalTimeout(Duration.ofSeconds(30)) + .build()); + TetherSettings tetherSettings = tetherSettingsBuilder.build(); + } +} +// [END apigeeconnect_v1_generated_TetherSettings_Egress_sync] diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceClient.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceClient.java new file mode 100644 index 0000000000..661c504449 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceClient.java @@ -0,0 +1,452 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1; + +import com.google.api.core.ApiFuture; +import com.google.api.core.ApiFutures; +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.cloud.apigeeconnect.v1.stub.ConnectionServiceStub; +import com.google.cloud.apigeeconnect.v1.stub.ConnectionServiceStubSettings; +import com.google.common.util.concurrent.MoreExecutors; +import java.io.IOException; +import java.util.List; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * Service Description: Service Interface for the Apigee Connect connection management APIs. + * + *

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
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (ConnectionServiceClient connectionServiceClient = ConnectionServiceClient.create()) {
+ *   EndpointName parent = EndpointName.of("[PROJECT]", "[ENDPOINT]");
+ *   for (Connection element : connectionServiceClient.listConnections(parent).iterateAll()) {
+ *     // doThingsWith(element);
+ *   }
+ * }
+ * }
+ * + *

Note: close() needs to be called on the ConnectionServiceClient 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 ConnectionServiceSettings to + * create(). For example: + * + *

To customize credentials: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * ConnectionServiceSettings connectionServiceSettings =
+ *     ConnectionServiceSettings.newBuilder()
+ *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
+ *         .build();
+ * ConnectionServiceClient connectionServiceClient =
+ *     ConnectionServiceClient.create(connectionServiceSettings);
+ * }
+ * + *

To customize the endpoint: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * ConnectionServiceSettings connectionServiceSettings =
+ *     ConnectionServiceSettings.newBuilder().setEndpoint(myEndpoint).build();
+ * ConnectionServiceClient connectionServiceClient =
+ *     ConnectionServiceClient.create(connectionServiceSettings);
+ * }
+ * + *

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

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * ConnectionServiceSettings connectionServiceSettings =
+ *     ConnectionServiceSettings.newHttpJsonBuilder().build();
+ * ConnectionServiceClient connectionServiceClient =
+ *     ConnectionServiceClient.create(connectionServiceSettings);
+ * }
+ * + *

Please refer to the GitHub repository's samples for more quickstart code snippets. + */ +@Generated("by gapic-generator-java") +public class ConnectionServiceClient implements BackgroundResource { + private final ConnectionServiceSettings settings; + private final ConnectionServiceStub stub; + + /** Constructs an instance of ConnectionServiceClient with default settings. */ + public static final ConnectionServiceClient create() throws IOException { + return create(ConnectionServiceSettings.newBuilder().build()); + } + + /** + * Constructs an instance of ConnectionServiceClient, 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 ConnectionServiceClient create(ConnectionServiceSettings settings) + throws IOException { + return new ConnectionServiceClient(settings); + } + + /** + * Constructs an instance of ConnectionServiceClient, using the given stub for making calls. This + * is for advanced usage - prefer using create(ConnectionServiceSettings). + */ + public static final ConnectionServiceClient create(ConnectionServiceStub stub) { + return new ConnectionServiceClient(stub); + } + + /** + * Constructs an instance of ConnectionServiceClient, 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 ConnectionServiceClient(ConnectionServiceSettings settings) throws IOException { + this.settings = settings; + this.stub = ((ConnectionServiceStubSettings) settings.getStubSettings()).createStub(); + } + + protected ConnectionServiceClient(ConnectionServiceStub stub) { + this.settings = null; + this.stub = stub; + } + + public final ConnectionServiceSettings getSettings() { + return settings; + } + + public ConnectionServiceStub getStub() { + return stub; + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists connections that are currently active for the given Apigee Connect endpoint. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (ConnectionServiceClient connectionServiceClient = ConnectionServiceClient.create()) {
+   *   EndpointName parent = EndpointName.of("[PROJECT]", "[ENDPOINT]");
+   *   for (Connection element : connectionServiceClient.listConnections(parent).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ * + * @param parent Required. Parent name of the form: `projects/{project_number or + * project_id}/endpoints/{endpoint}`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListConnectionsPagedResponse listConnections(EndpointName parent) { + ListConnectionsRequest request = + ListConnectionsRequest.newBuilder() + .setParent(parent == null ? null : parent.toString()) + .build(); + return listConnections(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists connections that are currently active for the given Apigee Connect endpoint. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (ConnectionServiceClient connectionServiceClient = ConnectionServiceClient.create()) {
+   *   String parent = EndpointName.of("[PROJECT]", "[ENDPOINT]").toString();
+   *   for (Connection element : connectionServiceClient.listConnections(parent).iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ * + * @param parent Required. Parent name of the form: `projects/{project_number or + * project_id}/endpoints/{endpoint}`. + * @throws com.google.api.gax.rpc.ApiException if the remote call fails + */ + public final ListConnectionsPagedResponse listConnections(String parent) { + ListConnectionsRequest request = ListConnectionsRequest.newBuilder().setParent(parent).build(); + return listConnections(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists connections that are currently active for the given Apigee Connect endpoint. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (ConnectionServiceClient connectionServiceClient = ConnectionServiceClient.create()) {
+   *   ListConnectionsRequest request =
+   *       ListConnectionsRequest.newBuilder()
+   *           .setParent(EndpointName.of("[PROJECT]", "[ENDPOINT]").toString())
+   *           .setPageSize(883849137)
+   *           .setPageToken("pageToken873572522")
+   *           .build();
+   *   for (Connection element : connectionServiceClient.listConnections(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 ListConnectionsPagedResponse listConnections(ListConnectionsRequest request) { + return listConnectionsPagedCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists connections that are currently active for the given Apigee Connect endpoint. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (ConnectionServiceClient connectionServiceClient = ConnectionServiceClient.create()) {
+   *   ListConnectionsRequest request =
+   *       ListConnectionsRequest.newBuilder()
+   *           .setParent(EndpointName.of("[PROJECT]", "[ENDPOINT]").toString())
+   *           .setPageSize(883849137)
+   *           .setPageToken("pageToken873572522")
+   *           .build();
+   *   ApiFuture future =
+   *       connectionServiceClient.listConnectionsPagedCallable().futureCall(request);
+   *   // Do something.
+   *   for (Connection element : future.get().iterateAll()) {
+   *     // doThingsWith(element);
+   *   }
+   * }
+   * }
+ */ + public final UnaryCallable + listConnectionsPagedCallable() { + return stub.listConnectionsPagedCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Lists connections that are currently active for the given Apigee Connect endpoint. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (ConnectionServiceClient connectionServiceClient = ConnectionServiceClient.create()) {
+   *   ListConnectionsRequest request =
+   *       ListConnectionsRequest.newBuilder()
+   *           .setParent(EndpointName.of("[PROJECT]", "[ENDPOINT]").toString())
+   *           .setPageSize(883849137)
+   *           .setPageToken("pageToken873572522")
+   *           .build();
+   *   while (true) {
+   *     ListConnectionsResponse response =
+   *         connectionServiceClient.listConnectionsCallable().call(request);
+   *     for (Connection element : response.getConnectionsList()) {
+   *       // doThingsWith(element);
+   *     }
+   *     String nextPageToken = response.getNextPageToken();
+   *     if (!Strings.isNullOrEmpty(nextPageToken)) {
+   *       request = request.toBuilder().setPageToken(nextPageToken).build();
+   *     } else {
+   *       break;
+   *     }
+   *   }
+   * }
+   * }
+ */ + public final UnaryCallable + listConnectionsCallable() { + return stub.listConnectionsCallable(); + } + + @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 ListConnectionsPagedResponse + extends AbstractPagedListResponse< + ListConnectionsRequest, + ListConnectionsResponse, + Connection, + ListConnectionsPage, + ListConnectionsFixedSizeCollection> { + + public static ApiFuture createAsync( + PageContext context, + ApiFuture futureResponse) { + ApiFuture futurePage = + ListConnectionsPage.createEmptyPage().createPageAsync(context, futureResponse); + return ApiFutures.transform( + futurePage, + input -> new ListConnectionsPagedResponse(input), + MoreExecutors.directExecutor()); + } + + private ListConnectionsPagedResponse(ListConnectionsPage page) { + super(page, ListConnectionsFixedSizeCollection.createEmptyCollection()); + } + } + + public static class ListConnectionsPage + extends AbstractPage< + ListConnectionsRequest, ListConnectionsResponse, Connection, ListConnectionsPage> { + + private ListConnectionsPage( + PageContext context, + ListConnectionsResponse response) { + super(context, response); + } + + private static ListConnectionsPage createEmptyPage() { + return new ListConnectionsPage(null, null); + } + + @Override + protected ListConnectionsPage createPage( + PageContext context, + ListConnectionsResponse response) { + return new ListConnectionsPage(context, response); + } + + @Override + public ApiFuture createPageAsync( + PageContext context, + ApiFuture futureResponse) { + return super.createPageAsync(context, futureResponse); + } + } + + public static class ListConnectionsFixedSizeCollection + extends AbstractFixedSizeCollection< + ListConnectionsRequest, + ListConnectionsResponse, + Connection, + ListConnectionsPage, + ListConnectionsFixedSizeCollection> { + + private ListConnectionsFixedSizeCollection( + List pages, int collectionSize) { + super(pages, collectionSize); + } + + private static ListConnectionsFixedSizeCollection createEmptyCollection() { + return new ListConnectionsFixedSizeCollection(null, 0); + } + + @Override + protected ListConnectionsFixedSizeCollection createCollection( + List pages, int collectionSize) { + return new ListConnectionsFixedSizeCollection(pages, collectionSize); + } + } +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceClientHttpJsonTest.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceClientHttpJsonTest.java new file mode 100644 index 0000000000..3f8d216e7b --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceClientHttpJsonTest.java @@ -0,0 +1,177 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1; + +import static com.google.cloud.apigeeconnect.v1.ConnectionServiceClient.ListConnectionsPagedResponse; + +import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.testing.MockHttpService; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ApiException; +import com.google.api.gax.rpc.ApiExceptionFactory; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.testing.FakeStatusCode; +import com.google.cloud.apigeeconnect.v1.stub.HttpJsonConnectionServiceStub; +import com.google.common.collect.Lists; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import javax.annotation.Generated; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +@Generated("by gapic-generator-java") +public class ConnectionServiceClientHttpJsonTest { + private static MockHttpService mockService; + private static ConnectionServiceClient client; + + @BeforeClass + public static void startStaticServer() throws IOException { + mockService = + new MockHttpService( + HttpJsonConnectionServiceStub.getMethodDescriptors(), + ConnectionServiceSettings.getDefaultEndpoint()); + ConnectionServiceSettings settings = + ConnectionServiceSettings.newHttpJsonBuilder() + .setTransportChannelProvider( + ConnectionServiceSettings.defaultHttpJsonTransportProviderBuilder() + .setHttpTransport(mockService) + .build()) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = ConnectionServiceClient.create(settings); + } + + @AfterClass + public static void stopServer() { + client.close(); + } + + @Before + public void setUp() {} + + @After + public void tearDown() throws Exception { + mockService.reset(); + } + + @Test + public void listConnectionsTest() throws Exception { + Connection responsesElement = Connection.newBuilder().build(); + ListConnectionsResponse expectedResponse = + ListConnectionsResponse.newBuilder() + .setNextPageToken("") + .addAllConnections(Arrays.asList(responsesElement)) + .build(); + mockService.addResponse(expectedResponse); + + EndpointName parent = EndpointName.of("[PROJECT]", "[ENDPOINT]"); + + ListConnectionsPagedResponse pagedListResponse = client.listConnections(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getConnectionsList().get(0), resources.get(0)); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void listConnectionsExceptionTest() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + EndpointName parent = EndpointName.of("[PROJECT]", "[ENDPOINT]"); + client.listConnections(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listConnectionsTest2() throws Exception { + Connection responsesElement = Connection.newBuilder().build(); + ListConnectionsResponse expectedResponse = + ListConnectionsResponse.newBuilder() + .setNextPageToken("") + .addAllConnections(Arrays.asList(responsesElement)) + .build(); + mockService.addResponse(expectedResponse); + + String parent = "projects/project-7865/endpoints/endpoint-7865"; + + ListConnectionsPagedResponse pagedListResponse = client.listConnections(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getConnectionsList().get(0), resources.get(0)); + + List actualRequests = mockService.getRequestPaths(); + Assert.assertEquals(1, actualRequests.size()); + + String apiClientHeaderKey = + mockService + .getRequestHeaders() + .get(ApiClientHeaderProvider.getDefaultApiClientHeaderKey()) + .iterator() + .next(); + Assert.assertTrue( + GaxHttpJsonProperties.getDefaultApiClientHeaderPattern() + .matcher(apiClientHeaderKey) + .matches()); + } + + @Test + public void listConnectionsExceptionTest2() throws Exception { + ApiException exception = + ApiExceptionFactory.createException( + new Exception(), FakeStatusCode.of(StatusCode.Code.INVALID_ARGUMENT), false); + mockService.addException(exception); + + try { + String parent = "projects/project-7865/endpoints/endpoint-7865"; + client.listConnections(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceClientTest.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceClientTest.java new file mode 100644 index 0000000000..c3c3b68a0d --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceClientTest.java @@ -0,0 +1,168 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1; + +import static com.google.cloud.apigeeconnect.v1.ConnectionServiceClient.ListConnectionsPagedResponse; + +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.common.collect.Lists; +import com.google.protobuf.AbstractMessage; +import io.grpc.StatusRuntimeException; +import java.io.IOException; +import java.util.Arrays; +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 ConnectionServiceClientTest { + private static MockConnectionService mockConnectionService; + private static MockServiceHelper mockServiceHelper; + private LocalChannelProvider channelProvider; + private ConnectionServiceClient client; + + @BeforeClass + public static void startStaticServer() { + mockConnectionService = new MockConnectionService(); + mockServiceHelper = + new MockServiceHelper( + UUID.randomUUID().toString(), Arrays.asList(mockConnectionService)); + mockServiceHelper.start(); + } + + @AfterClass + public static void stopServer() { + mockServiceHelper.stop(); + } + + @Before + public void setUp() throws IOException { + mockServiceHelper.reset(); + channelProvider = mockServiceHelper.createChannelProvider(); + ConnectionServiceSettings settings = + ConnectionServiceSettings.newBuilder() + .setTransportChannelProvider(channelProvider) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = ConnectionServiceClient.create(settings); + } + + @After + public void tearDown() throws Exception { + client.close(); + } + + @Test + public void listConnectionsTest() throws Exception { + Connection responsesElement = Connection.newBuilder().build(); + ListConnectionsResponse expectedResponse = + ListConnectionsResponse.newBuilder() + .setNextPageToken("") + .addAllConnections(Arrays.asList(responsesElement)) + .build(); + mockConnectionService.addResponse(expectedResponse); + + EndpointName parent = EndpointName.of("[PROJECT]", "[ENDPOINT]"); + + ListConnectionsPagedResponse pagedListResponse = client.listConnections(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getConnectionsList().get(0), resources.get(0)); + + List actualRequests = mockConnectionService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListConnectionsRequest actualRequest = ((ListConnectionsRequest) actualRequests.get(0)); + + Assert.assertEquals(parent.toString(), actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listConnectionsExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockConnectionService.addException(exception); + + try { + EndpointName parent = EndpointName.of("[PROJECT]", "[ENDPOINT]"); + client.listConnections(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void listConnectionsTest2() throws Exception { + Connection responsesElement = Connection.newBuilder().build(); + ListConnectionsResponse expectedResponse = + ListConnectionsResponse.newBuilder() + .setNextPageToken("") + .addAllConnections(Arrays.asList(responsesElement)) + .build(); + mockConnectionService.addResponse(expectedResponse); + + String parent = "parent-995424086"; + + ListConnectionsPagedResponse pagedListResponse = client.listConnections(parent); + + List resources = Lists.newArrayList(pagedListResponse.iterateAll()); + + Assert.assertEquals(1, resources.size()); + Assert.assertEquals(expectedResponse.getConnectionsList().get(0), resources.get(0)); + + List actualRequests = mockConnectionService.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + ListConnectionsRequest actualRequest = ((ListConnectionsRequest) actualRequests.get(0)); + + Assert.assertEquals(parent, actualRequest.getParent()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void listConnectionsExceptionTest2() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockConnectionService.addException(exception); + + try { + String parent = "parent-995424086"; + client.listConnections(parent); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceSettings.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceSettings.java new file mode 100644 index 0000000000..00472714eb --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/ConnectionServiceSettings.java @@ -0,0 +1,213 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1; + +import static com.google.cloud.apigeeconnect.v1.ConnectionServiceClient.ListConnectionsPagedResponse; + +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.httpjson.InstantiatingHttpJsonChannelProvider; +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.apigeeconnect.v1.stub.ConnectionServiceStubSettings; +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 ConnectionServiceClient}. + * + *

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

    + *
  • The default service address (apigeeconnect.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 listConnections to 30 seconds: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * ConnectionServiceSettings.Builder connectionServiceSettingsBuilder =
+ *     ConnectionServiceSettings.newBuilder();
+ * connectionServiceSettingsBuilder
+ *     .listConnectionsSettings()
+ *     .setRetrySettings(
+ *         connectionServiceSettingsBuilder
+ *             .listConnectionsSettings()
+ *             .getRetrySettings()
+ *             .toBuilder()
+ *             .setTotalTimeout(Duration.ofSeconds(30))
+ *             .build());
+ * ConnectionServiceSettings connectionServiceSettings = connectionServiceSettingsBuilder.build();
+ * }
+ */ +@Generated("by gapic-generator-java") +public class ConnectionServiceSettings extends ClientSettings { + + /** Returns the object with the settings used for calls to listConnections. */ + public PagedCallSettings< + ListConnectionsRequest, ListConnectionsResponse, ListConnectionsPagedResponse> + listConnectionsSettings() { + return ((ConnectionServiceStubSettings) getStubSettings()).listConnectionsSettings(); + } + + public static final ConnectionServiceSettings create(ConnectionServiceStubSettings stub) + throws IOException { + return new ConnectionServiceSettings.Builder(stub.toBuilder()).build(); + } + + /** Returns a builder for the default ExecutorProvider for this service. */ + public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { + return ConnectionServiceStubSettings.defaultExecutorProviderBuilder(); + } + + /** Returns the default service endpoint. */ + public static String getDefaultEndpoint() { + return ConnectionServiceStubSettings.getDefaultEndpoint(); + } + + /** Returns the default service scopes. */ + public static List getDefaultServiceScopes() { + return ConnectionServiceStubSettings.getDefaultServiceScopes(); + } + + /** Returns a builder for the default credentials for this service. */ + public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { + return ConnectionServiceStubSettings.defaultCredentialsProviderBuilder(); + } + + /** Returns a builder for the default gRPC ChannelProvider for this service. */ + public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { + return ConnectionServiceStubSettings.defaultGrpcTransportProviderBuilder(); + } + + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return ConnectionServiceStubSettings.defaultHttpJsonTransportProviderBuilder(); + } + + public static TransportChannelProvider defaultTransportChannelProvider() { + return ConnectionServiceStubSettings.defaultTransportChannelProvider(); + } + + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return ConnectionServiceStubSettings.defaultApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC builder for this class. */ + public static Builder newBuilder() { + return Builder.createDefault(); + } + + /** Returns a new REST builder for this class. */ + @BetaApi + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + + /** Returns a new builder for this class. */ + public static Builder newBuilder(ClientContext clientContext) { + return new Builder(clientContext); + } + + /** Returns a builder containing all the values of this settings class. */ + public Builder toBuilder() { + return new Builder(this); + } + + protected ConnectionServiceSettings(Builder settingsBuilder) throws IOException { + super(settingsBuilder); + } + + /** Builder for ConnectionServiceSettings. */ + public static class Builder extends ClientSettings.Builder { + + protected Builder() throws IOException { + this(((ClientContext) null)); + } + + protected Builder(ClientContext clientContext) { + super(ConnectionServiceStubSettings.newBuilder(clientContext)); + } + + protected Builder(ConnectionServiceSettings settings) { + super(settings.getStubSettings().toBuilder()); + } + + protected Builder(ConnectionServiceStubSettings.Builder stubSettings) { + super(stubSettings); + } + + private static Builder createDefault() { + return new Builder(ConnectionServiceStubSettings.newBuilder()); + } + + @BetaApi + private static Builder createHttpJsonDefault() { + return new Builder(ConnectionServiceStubSettings.newHttpJsonBuilder()); + } + + public ConnectionServiceStubSettings.Builder getStubSettingsBuilder() { + return ((ConnectionServiceStubSettings.Builder) getStubSettings()); + } + + /** + * 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) { + super.applyToAllUnaryMethods( + getStubSettingsBuilder().unaryMethodSettingsBuilders(), settingsUpdater); + return this; + } + + /** Returns the builder for the settings used for calls to listConnections. */ + public PagedCallSettings.Builder< + ListConnectionsRequest, ListConnectionsResponse, ListConnectionsPagedResponse> + listConnectionsSettings() { + return getStubSettingsBuilder().listConnectionsSettings(); + } + + @Override + public ConnectionServiceSettings build() throws IOException { + return new ConnectionServiceSettings(this); + } + } +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/EndpointName.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/EndpointName.java new file mode 100644 index 0000000000..2c7edfea89 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/EndpointName.java @@ -0,0 +1,192 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.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 EndpointName implements ResourceName { + private static final PathTemplate PROJECT_ENDPOINT = + PathTemplate.createWithoutUrlEncoding("projects/{project}/endpoints/{endpoint}"); + private volatile Map fieldValuesMap; + private final String project; + private final String endpoint; + + @Deprecated + protected EndpointName() { + project = null; + endpoint = null; + } + + private EndpointName(Builder builder) { + project = Preconditions.checkNotNull(builder.getProject()); + endpoint = Preconditions.checkNotNull(builder.getEndpoint()); + } + + public String getProject() { + return project; + } + + public String getEndpoint() { + return endpoint; + } + + public static Builder newBuilder() { + return new Builder(); + } + + public Builder toBuilder() { + return new Builder(this); + } + + public static EndpointName of(String project, String endpoint) { + return newBuilder().setProject(project).setEndpoint(endpoint).build(); + } + + public static String format(String project, String endpoint) { + return newBuilder().setProject(project).setEndpoint(endpoint).build().toString(); + } + + public static EndpointName parse(String formattedString) { + if (formattedString.isEmpty()) { + return null; + } + Map matchMap = + PROJECT_ENDPOINT.validatedMatch( + formattedString, "EndpointName.parse: formattedString not in valid format"); + return of(matchMap.get("project"), matchMap.get("endpoint")); + } + + 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 (EndpointName value : values) { + if (value == null) { + list.add(""); + } else { + list.add(value.toString()); + } + } + return list; + } + + public static boolean isParsableFrom(String formattedString) { + return PROJECT_ENDPOINT.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 (endpoint != null) { + fieldMapBuilder.put("endpoint", endpoint); + } + fieldValuesMap = fieldMapBuilder.build(); + } + } + } + return fieldValuesMap; + } + + public String getFieldValue(String fieldName) { + return getFieldValuesMap().get(fieldName); + } + + @Override + public String toString() { + return PROJECT_ENDPOINT.instantiate("project", project, "endpoint", endpoint); + } + + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + if (o != null || getClass() == o.getClass()) { + EndpointName that = ((EndpointName) o); + return Objects.equals(this.project, that.project) + && Objects.equals(this.endpoint, that.endpoint); + } + return false; + } + + @Override + public int hashCode() { + int h = 1; + h *= 1000003; + h ^= Objects.hashCode(project); + h *= 1000003; + h ^= Objects.hashCode(endpoint); + return h; + } + + /** Builder for projects/{project}/endpoints/{endpoint}. */ + public static class Builder { + private String project; + private String endpoint; + + protected Builder() {} + + public String getProject() { + return project; + } + + public String getEndpoint() { + return endpoint; + } + + public Builder setProject(String project) { + this.project = project; + return this; + } + + public Builder setEndpoint(String endpoint) { + this.endpoint = endpoint; + return this; + } + + private Builder(EndpointName endpointName) { + this.project = endpointName.project; + this.endpoint = endpointName.endpoint; + } + + public EndpointName build() { + return new EndpointName(this); + } + } +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockConnectionService.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockConnectionService.java new file mode 100644 index 0000000000..689619cd60 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockConnectionService.java @@ -0,0 +1,59 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.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 MockConnectionService implements MockGrpcService { + private final MockConnectionServiceImpl serviceImpl; + + public MockConnectionService() { + serviceImpl = new MockConnectionServiceImpl(); + } + + @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/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockConnectionServiceImpl.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockConnectionServiceImpl.java new file mode 100644 index 0000000000..b56c59b7bd --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockConnectionServiceImpl.java @@ -0,0 +1,81 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1; + +import com.google.api.core.BetaApi; +import com.google.cloud.apigeeconnect.v1.ConnectionServiceGrpc.ConnectionServiceImplBase; +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 MockConnectionServiceImpl extends ConnectionServiceImplBase { + private List requests; + private Queue responses; + + public MockConnectionServiceImpl() { + 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 listConnections( + ListConnectionsRequest request, StreamObserver responseObserver) { + Object response = responses.poll(); + if (response instanceof ListConnectionsResponse) { + requests.add(request); + responseObserver.onNext(((ListConnectionsResponse) 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 ListConnections, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + ListConnectionsResponse.class.getName(), + Exception.class.getName()))); + } + } +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockTether.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockTether.java new file mode 100644 index 0000000000..dcb2167abc --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockTether.java @@ -0,0 +1,59 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.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 MockTether implements MockGrpcService { + private final MockTetherImpl serviceImpl; + + public MockTether() { + serviceImpl = new MockTetherImpl(); + } + + @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/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockTetherImpl.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockTetherImpl.java new file mode 100644 index 0000000000..178bbe5ada --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/MockTetherImpl.java @@ -0,0 +1,97 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1; + +import com.google.api.core.BetaApi; +import com.google.cloud.apigeeconnect.v1.TetherGrpc.TetherImplBase; +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 MockTetherImpl extends TetherImplBase { + private List requests; + private Queue responses; + + public MockTetherImpl() { + 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 StreamObserver egress( + final StreamObserver responseObserver) { + StreamObserver requestObserver = + new StreamObserver() { + @Override + public void onNext(EgressResponse value) { + requests.add(value); + final Object response = responses.remove(); + if (response instanceof EgressRequest) { + responseObserver.onNext(((EgressRequest) response)); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method Egress, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + EgressRequest.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void onError(Throwable t) { + responseObserver.onError(t); + } + + @Override + public void onCompleted() { + responseObserver.onCompleted(); + } + }; + return requestObserver; + } +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/TetherClient.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/TetherClient.java new file mode 100644 index 0000000000..e376843051 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/TetherClient.java @@ -0,0 +1,232 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1; + +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.rpc.BidiStreamingCallable; +import com.google.cloud.apigeeconnect.v1.stub.TetherStub; +import com.google.cloud.apigeeconnect.v1.stub.TetherStubSettings; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * Service Description: Tether provides a way for the control plane to send HTTP API requests to + * services in data planes that runs in a remote datacenter without requiring customers to open + * firewalls on their runtime plane. + * + *

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
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (TetherClient tetherClient = TetherClient.create()) {
+ *   BidiStream bidiStream = tetherClient.egressCallable().call();
+ *   EgressResponse request =
+ *       EgressResponse.newBuilder()
+ *           .setId("id3355")
+ *           .setHttpResponse(HttpResponse.newBuilder().build())
+ *           .setStatus(Status.newBuilder().build())
+ *           .setProject("project-309310695")
+ *           .setTraceId("traceId-1067401920")
+ *           .setEndpoint(TetherEndpoint.forNumber(0))
+ *           .setName("name3373707")
+ *           .build();
+ *   bidiStream.send(request);
+ *   for (EgressRequest response : bidiStream) {
+ *     // Do something when a response is received.
+ *   }
+ * }
+ * }
+ * + *

Note: close() needs to be called on the TetherClient 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 TetherSettings to create(). + * For example: + * + *

To customize credentials: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * TetherSettings tetherSettings =
+ *     TetherSettings.newBuilder()
+ *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
+ *         .build();
+ * TetherClient tetherClient = TetherClient.create(tetherSettings);
+ * }
+ * + *

To customize the endpoint: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * TetherSettings tetherSettings = TetherSettings.newBuilder().setEndpoint(myEndpoint).build();
+ * TetherClient tetherClient = TetherClient.create(tetherSettings);
+ * }
+ * + *

Please refer to the GitHub repository's samples for more quickstart code snippets. + */ +@Generated("by gapic-generator-java") +public class TetherClient implements BackgroundResource { + private final TetherSettings settings; + private final TetherStub stub; + + /** Constructs an instance of TetherClient with default settings. */ + public static final TetherClient create() throws IOException { + return create(TetherSettings.newBuilder().build()); + } + + /** + * Constructs an instance of TetherClient, 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 TetherClient create(TetherSettings settings) throws IOException { + return new TetherClient(settings); + } + + /** + * Constructs an instance of TetherClient, using the given stub for making calls. This is for + * advanced usage - prefer using create(TetherSettings). + */ + public static final TetherClient create(TetherStub stub) { + return new TetherClient(stub); + } + + /** + * Constructs an instance of TetherClient, 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 TetherClient(TetherSettings settings) throws IOException { + this.settings = settings; + this.stub = ((TetherStubSettings) settings.getStubSettings()).createStub(); + } + + protected TetherClient(TetherStub stub) { + this.settings = null; + this.stub = stub; + } + + public final TetherSettings getSettings() { + return settings; + } + + public TetherStub getStub() { + return stub; + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Egress streams egress requests and responses. Logically, this is not actually a streaming + * request, but uses streaming as a mechanism to flip the client-server relationship of gRPC so + * that the server can act as a client. The listener, the RPC server, accepts connections from the + * dialer, the RPC client. The listener streams http requests and the dialer streams http + * responses. + * + *

Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (TetherClient tetherClient = TetherClient.create()) {
+   *   BidiStream bidiStream = tetherClient.egressCallable().call();
+   *   EgressResponse request =
+   *       EgressResponse.newBuilder()
+   *           .setId("id3355")
+   *           .setHttpResponse(HttpResponse.newBuilder().build())
+   *           .setStatus(Status.newBuilder().build())
+   *           .setProject("project-309310695")
+   *           .setTraceId("traceId-1067401920")
+   *           .setEndpoint(TetherEndpoint.forNumber(0))
+   *           .setName("name3373707")
+   *           .build();
+   *   bidiStream.send(request);
+   *   for (EgressRequest response : bidiStream) {
+   *     // Do something when a response is received.
+   *   }
+   * }
+   * }
+ */ + public final BidiStreamingCallable egressCallable() { + return stub.egressCallable(); + } + + @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); + } +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/TetherClientTest.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/TetherClientTest.java new file mode 100644 index 0000000000..50f8fe5aab --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/TetherClientTest.java @@ -0,0 +1,151 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1; + +import com.google.api.gax.core.NoCredentialsProvider; +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.grpc.testing.MockStreamObserver; +import com.google.api.gax.rpc.ApiStreamObserver; +import com.google.api.gax.rpc.BidiStreamingCallable; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.api.gax.rpc.StatusCode; +import com.google.protobuf.Duration; +import com.google.rpc.Status; +import io.grpc.StatusRuntimeException; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.ExecutionException; +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 TetherClientTest { + private static MockServiceHelper mockServiceHelper; + private static MockTether mockTether; + private LocalChannelProvider channelProvider; + private TetherClient client; + + @BeforeClass + public static void startStaticServer() { + mockTether = new MockTether(); + mockServiceHelper = + new MockServiceHelper( + UUID.randomUUID().toString(), Arrays.asList(mockTether)); + mockServiceHelper.start(); + } + + @AfterClass + public static void stopServer() { + mockServiceHelper.stop(); + } + + @Before + public void setUp() throws IOException { + mockServiceHelper.reset(); + channelProvider = mockServiceHelper.createChannelProvider(); + TetherSettings settings = + TetherSettings.newBuilder() + .setTransportChannelProvider(channelProvider) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = TetherClient.create(settings); + } + + @After + public void tearDown() throws Exception { + client.close(); + } + + @Test + public void egressTest() throws Exception { + EgressRequest expectedResponse = + EgressRequest.newBuilder() + .setId("id3355") + .setPayload(Payload.newBuilder().build()) + .setEndpoint(TetherEndpoint.forNumber(0)) + .setProject("project-309310695") + .setTraceId("traceId-1067401920") + .setTimeout(Duration.newBuilder().build()) + .build(); + mockTether.addResponse(expectedResponse); + EgressResponse request = + EgressResponse.newBuilder() + .setId("id3355") + .setHttpResponse(HttpResponse.newBuilder().build()) + .setStatus(Status.newBuilder().build()) + .setProject("project-309310695") + .setTraceId("traceId-1067401920") + .setEndpoint(TetherEndpoint.forNumber(0)) + .setName("name3373707") + .build(); + + MockStreamObserver responseObserver = new MockStreamObserver<>(); + + BidiStreamingCallable callable = client.egressCallable(); + ApiStreamObserver requestObserver = + callable.bidiStreamingCall(responseObserver); + + requestObserver.onNext(request); + requestObserver.onCompleted(); + + List actualResponses = responseObserver.future().get(); + Assert.assertEquals(1, actualResponses.size()); + Assert.assertEquals(expectedResponse, actualResponses.get(0)); + } + + @Test + public void egressExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockTether.addException(exception); + EgressResponse request = + EgressResponse.newBuilder() + .setId("id3355") + .setHttpResponse(HttpResponse.newBuilder().build()) + .setStatus(Status.newBuilder().build()) + .setProject("project-309310695") + .setTraceId("traceId-1067401920") + .setEndpoint(TetherEndpoint.forNumber(0)) + .setName("name3373707") + .build(); + + MockStreamObserver responseObserver = new MockStreamObserver<>(); + + BidiStreamingCallable callable = client.egressCallable(); + ApiStreamObserver requestObserver = + callable.bidiStreamingCall(responseObserver); + + requestObserver.onNext(request); + + try { + List actualResponses = responseObserver.future().get(); + Assert.fail("No exception thrown"); + } catch (ExecutionException e) { + Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); + InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); + Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + } + } +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/TetherSettings.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/TetherSettings.java new file mode 100644 index 0000000000..9c6b02565d --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/TetherSettings.java @@ -0,0 +1,186 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1; + +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.StreamingCallSettings; +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.apigeeconnect.v1.stub.TetherStubSettings; +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 TetherClient}. + * + *

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

    + *
  • The default service address (apigeeconnect.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 egress to 30 seconds: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * TetherSettings.Builder tetherSettingsBuilder = TetherSettings.newBuilder();
+ * tetherSettingsBuilder
+ *     .egressSettings()
+ *     .setRetrySettings(
+ *         tetherSettingsBuilder
+ *             .egressSettings()
+ *             .getRetrySettings()
+ *             .toBuilder()
+ *             .setTotalTimeout(Duration.ofSeconds(30))
+ *             .build());
+ * TetherSettings tetherSettings = tetherSettingsBuilder.build();
+ * }
+ */ +@Generated("by gapic-generator-java") +public class TetherSettings extends ClientSettings { + + /** Returns the object with the settings used for calls to egress. */ + public StreamingCallSettings egressSettings() { + return ((TetherStubSettings) getStubSettings()).egressSettings(); + } + + public static final TetherSettings create(TetherStubSettings stub) throws IOException { + return new TetherSettings.Builder(stub.toBuilder()).build(); + } + + /** Returns a builder for the default ExecutorProvider for this service. */ + public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { + return TetherStubSettings.defaultExecutorProviderBuilder(); + } + + /** Returns the default service endpoint. */ + public static String getDefaultEndpoint() { + return TetherStubSettings.getDefaultEndpoint(); + } + + /** Returns the default service scopes. */ + public static List getDefaultServiceScopes() { + return TetherStubSettings.getDefaultServiceScopes(); + } + + /** Returns a builder for the default credentials for this service. */ + public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { + return TetherStubSettings.defaultCredentialsProviderBuilder(); + } + + /** Returns a builder for the default gRPC ChannelProvider for this service. */ + public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { + return TetherStubSettings.defaultGrpcTransportProviderBuilder(); + } + + public static TransportChannelProvider defaultTransportChannelProvider() { + return TetherStubSettings.defaultTransportChannelProvider(); + } + + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return TetherStubSettings.defaultApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC 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 TetherSettings(Builder settingsBuilder) throws IOException { + super(settingsBuilder); + } + + /** Builder for TetherSettings. */ + public static class Builder extends ClientSettings.Builder { + + protected Builder() throws IOException { + this(((ClientContext) null)); + } + + protected Builder(ClientContext clientContext) { + super(TetherStubSettings.newBuilder(clientContext)); + } + + protected Builder(TetherSettings settings) { + super(settings.getStubSettings().toBuilder()); + } + + protected Builder(TetherStubSettings.Builder stubSettings) { + super(stubSettings); + } + + private static Builder createDefault() { + return new Builder(TetherStubSettings.newBuilder()); + } + + public TetherStubSettings.Builder getStubSettingsBuilder() { + return ((TetherStubSettings.Builder) getStubSettings()); + } + + /** + * 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) { + super.applyToAllUnaryMethods( + getStubSettingsBuilder().unaryMethodSettingsBuilders(), settingsUpdater); + return this; + } + + /** Returns the builder for the settings used for calls to egress. */ + public StreamingCallSettings.Builder egressSettings() { + return getStubSettingsBuilder().egressSettings(); + } + + @Override + public TetherSettings build() throws IOException { + return new TetherSettings(this); + } + } +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/gapic_metadata.json b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/gapic_metadata.json new file mode 100644 index 0000000000..3a2757f4ca --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/gapic_metadata.json @@ -0,0 +1,33 @@ +{ + "schema": "1.0", + "comment": "This file maps proto services/RPCs to the corresponding library clients/methods", + "language": "java", + "protoPackage": "google.cloud.apigeeconnect.v1", + "libraryPackage": "com.google.cloud.apigeeconnect.v1", + "services": { + "ConnectionService": { + "clients": { + "grpc": { + "libraryClient": "ConnectionServiceClient", + "rpcs": { + "ListConnections": { + "methods": ["listConnections", "listConnections", "listConnections", "listConnectionsPagedCallable", "listConnectionsCallable"] + } + } + } + } + }, + "Tether": { + "clients": { + "grpc": { + "libraryClient": "TetherClient", + "rpcs": { + "Egress": { + "methods": ["egressCallable"] + } + } + } + } + } + } +} \ No newline at end of file diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/package-info.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/package-info.java new file mode 100644 index 0000000000..085161a7eb --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/package-info.java @@ -0,0 +1,76 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * The interfaces provided are listed below, along with usage samples. + * + *

======================= ConnectionServiceClient ======================= + * + *

Service Description: Service Interface for the Apigee Connect connection management APIs. + * + *

Sample for ConnectionServiceClient: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (ConnectionServiceClient connectionServiceClient = ConnectionServiceClient.create()) {
+ *   EndpointName parent = EndpointName.of("[PROJECT]", "[ENDPOINT]");
+ *   for (Connection element : connectionServiceClient.listConnections(parent).iterateAll()) {
+ *     // doThingsWith(element);
+ *   }
+ * }
+ * }
+ * + *

======================= TetherClient ======================= + * + *

Service Description: Tether provides a way for the control plane to send HTTP API requests to + * services in data planes that runs in a remote datacenter without requiring customers to open + * firewalls on their runtime plane. + * + *

Sample for TetherClient: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (TetherClient tetherClient = TetherClient.create()) {
+ *   BidiStream bidiStream = tetherClient.egressCallable().call();
+ *   EgressResponse request =
+ *       EgressResponse.newBuilder()
+ *           .setId("id3355")
+ *           .setHttpResponse(HttpResponse.newBuilder().build())
+ *           .setStatus(Status.newBuilder().build())
+ *           .setProject("project-309310695")
+ *           .setTraceId("traceId-1067401920")
+ *           .setEndpoint(TetherEndpoint.forNumber(0))
+ *           .setName("name3373707")
+ *           .build();
+ *   bidiStream.send(request);
+ *   for (EgressRequest response : bidiStream) {
+ *     // Do something when a response is received.
+ *   }
+ * }
+ * }
+ */ +@Generated("by gapic-generator-java") +package com.google.cloud.apigeeconnect.v1; + +import javax.annotation.Generated; diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStub.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStub.java new file mode 100644 index 0000000000..77156a6000 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStub.java @@ -0,0 +1,47 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.stub; + +import static com.google.cloud.apigeeconnect.v1.ConnectionServiceClient.ListConnectionsPagedResponse; + +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.cloud.apigeeconnect.v1.ListConnectionsRequest; +import com.google.cloud.apigeeconnect.v1.ListConnectionsResponse; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * Base stub class for the ConnectionService service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@Generated("by gapic-generator-java") +public abstract class ConnectionServiceStub implements BackgroundResource { + + public UnaryCallable + listConnectionsPagedCallable() { + throw new UnsupportedOperationException("Not implemented: listConnectionsPagedCallable()"); + } + + public UnaryCallable listConnectionsCallable() { + throw new UnsupportedOperationException("Not implemented: listConnectionsCallable()"); + } + + @Override + public abstract void close(); +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java new file mode 100644 index 0000000000..19103472ab --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java @@ -0,0 +1,402 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.stub; + +import static com.google.cloud.apigeeconnect.v1.ConnectionServiceClient.ListConnectionsPagedResponse; + +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.httpjson.GaxHttpJsonProperties; +import com.google.api.gax.httpjson.HttpJsonTransportChannel; +import com.google.api.gax.httpjson.InstantiatingHttpJsonChannelProvider; +import com.google.api.gax.retrying.RetrySettings; +import com.google.api.gax.rpc.ApiCallContext; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +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.apigeeconnect.v1.Connection; +import com.google.cloud.apigeeconnect.v1.ListConnectionsRequest; +import com.google.cloud.apigeeconnect.v1.ListConnectionsResponse; +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 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 ConnectionServiceStub}. + * + *

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

    + *
  • The default service address (apigeeconnect.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 listConnections to 30 seconds: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * ConnectionServiceStubSettings.Builder connectionServiceSettingsBuilder =
+ *     ConnectionServiceStubSettings.newBuilder();
+ * connectionServiceSettingsBuilder
+ *     .listConnectionsSettings()
+ *     .setRetrySettings(
+ *         connectionServiceSettingsBuilder
+ *             .listConnectionsSettings()
+ *             .getRetrySettings()
+ *             .toBuilder()
+ *             .setTotalTimeout(Duration.ofSeconds(30))
+ *             .build());
+ * ConnectionServiceStubSettings connectionServiceSettings =
+ *     connectionServiceSettingsBuilder.build();
+ * }
+ */ +@Generated("by gapic-generator-java") +public class ConnectionServiceStubSettings 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").build(); + + private final PagedCallSettings< + ListConnectionsRequest, ListConnectionsResponse, ListConnectionsPagedResponse> + listConnectionsSettings; + + private static final PagedListDescriptor< + ListConnectionsRequest, ListConnectionsResponse, Connection> + LIST_CONNECTIONS_PAGE_STR_DESC = + new PagedListDescriptor() { + @Override + public String emptyToken() { + return ""; + } + + @Override + public ListConnectionsRequest injectToken( + ListConnectionsRequest payload, String token) { + return ListConnectionsRequest.newBuilder(payload).setPageToken(token).build(); + } + + @Override + public ListConnectionsRequest injectPageSize( + ListConnectionsRequest payload, int pageSize) { + return ListConnectionsRequest.newBuilder(payload).setPageSize(pageSize).build(); + } + + @Override + public Integer extractPageSize(ListConnectionsRequest payload) { + return payload.getPageSize(); + } + + @Override + public String extractNextToken(ListConnectionsResponse payload) { + return payload.getNextPageToken(); + } + + @Override + public Iterable extractResources(ListConnectionsResponse payload) { + return payload.getConnectionsList() == null + ? ImmutableList.of() + : payload.getConnectionsList(); + } + }; + + private static final PagedListResponseFactory< + ListConnectionsRequest, ListConnectionsResponse, ListConnectionsPagedResponse> + LIST_CONNECTIONS_PAGE_STR_FACT = + new PagedListResponseFactory< + ListConnectionsRequest, ListConnectionsResponse, ListConnectionsPagedResponse>() { + @Override + public ApiFuture getFuturePagedResponse( + UnaryCallable callable, + ListConnectionsRequest request, + ApiCallContext context, + ApiFuture futureResponse) { + PageContext pageContext = + PageContext.create(callable, LIST_CONNECTIONS_PAGE_STR_DESC, request, context); + return ListConnectionsPagedResponse.createAsync(pageContext, futureResponse); + } + }; + + /** Returns the object with the settings used for calls to listConnections. */ + public PagedCallSettings< + ListConnectionsRequest, ListConnectionsResponse, ListConnectionsPagedResponse> + listConnectionsSettings() { + return listConnectionsSettings; + } + + public ConnectionServiceStub createStub() throws IOException { + if (getTransportChannelProvider() + .getTransportName() + .equals(GrpcTransportChannel.getGrpcTransportName())) { + return GrpcConnectionServiceStub.create(this); + } + if (getTransportChannelProvider() + .getTransportName() + .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { + return HttpJsonConnectionServiceStub.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 "apigeeconnect.googleapis.com:443"; + } + + /** Returns the default mTLS service endpoint. */ + public static String getDefaultMtlsEndpoint() { + return "apigeeconnect.mtls.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) + .setUseJwtAccessWithScope(true); + } + + /** Returns a builder for the default gRPC ChannelProvider for this service. */ + public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { + return InstantiatingGrpcChannelProvider.newBuilder() + .setMaxInboundMessageSize(Integer.MAX_VALUE); + } + + /** Returns a builder for the default REST ChannelProvider for this service. */ + @BetaApi + public static InstantiatingHttpJsonChannelProvider.Builder + defaultHttpJsonTransportProviderBuilder() { + return InstantiatingHttpJsonChannelProvider.newBuilder(); + } + + public static TransportChannelProvider defaultTransportChannelProvider() { + return defaultGrpcTransportProviderBuilder().build(); + } + + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultGrpcApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken( + "gapic", GaxProperties.getLibraryVersion(ConnectionServiceStubSettings.class)) + .setTransportToken( + GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); + } + + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultHttpJsonApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken( + "gapic", GaxProperties.getLibraryVersion(ConnectionServiceStubSettings.class)) + .setTransportToken( + GaxHttpJsonProperties.getHttpJsonTokenName(), + GaxHttpJsonProperties.getHttpJsonVersion()); + } + + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return ConnectionServiceStubSettings.defaultGrpcApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC builder for this class. */ + public static Builder newBuilder() { + return Builder.createDefault(); + } + + /** Returns a new REST builder for this class. */ + public static Builder newHttpJsonBuilder() { + return Builder.createHttpJsonDefault(); + } + + /** Returns a new builder for this class. */ + public static Builder newBuilder(ClientContext clientContext) { + return new Builder(clientContext); + } + + /** Returns a builder containing all the values of this settings class. */ + public Builder toBuilder() { + return new Builder(this); + } + + protected ConnectionServiceStubSettings(Builder settingsBuilder) throws IOException { + super(settingsBuilder); + + listConnectionsSettings = settingsBuilder.listConnectionsSettings().build(); + } + + /** Builder for ConnectionServiceStubSettings. */ + public static class Builder extends StubSettings.Builder { + private final ImmutableList> unaryMethodSettingsBuilders; + private final PagedCallSettings.Builder< + ListConnectionsRequest, ListConnectionsResponse, ListConnectionsPagedResponse> + listConnectionsSettings; + private static final ImmutableMap> + RETRYABLE_CODE_DEFINITIONS; + + static { + ImmutableMap.Builder> definitions = + ImmutableMap.builder(); + definitions.put( + "retry_policy_0_codes", + ImmutableSet.copyOf( + Lists.newArrayList( + StatusCode.Code.UNAVAILABLE, StatusCode.Code.UNKNOWN))); + 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(1000L)) + .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_0_params", settings); + RETRY_PARAM_DEFINITIONS = definitions.build(); + } + + protected Builder() { + this(((ClientContext) null)); + } + + protected Builder(ClientContext clientContext) { + super(clientContext); + + listConnectionsSettings = PagedCallSettings.newBuilder(LIST_CONNECTIONS_PAGE_STR_FACT); + + unaryMethodSettingsBuilders = + ImmutableList.>of(listConnectionsSettings); + initDefaults(this); + } + + protected Builder(ConnectionServiceStubSettings settings) { + super(settings); + + listConnectionsSettings = settings.listConnectionsSettings.toBuilder(); + + unaryMethodSettingsBuilders = + ImmutableList.>of(listConnectionsSettings); + } + + private static Builder createDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultTransportChannelProvider()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + + private static Builder createHttpJsonDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + + private static Builder initDefaults(Builder builder) { + builder + .listConnectionsSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("retry_policy_0_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("retry_policy_0_params")); + + return builder; + } + + /** + * 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) { + super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater); + return this; + } + + public ImmutableList> unaryMethodSettingsBuilders() { + return unaryMethodSettingsBuilders; + } + + /** Returns the builder for the settings used for calls to listConnections. */ + public PagedCallSettings.Builder< + ListConnectionsRequest, ListConnectionsResponse, ListConnectionsPagedResponse> + listConnectionsSettings() { + return listConnectionsSettings; + } + + @Override + public ConnectionServiceStubSettings build() throws IOException { + return new ConnectionServiceStubSettings(this); + } + } +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcConnectionServiceCallableFactory.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcConnectionServiceCallableFactory.java new file mode 100644 index 0000000000..a4b43d630d --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcConnectionServiceCallableFactory.java @@ -0,0 +1,113 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.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 ConnectionService service API. + * + *

This class is for advanced usage. + */ +@Generated("by gapic-generator-java") +public class GrpcConnectionServiceCallableFactory 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/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcConnectionServiceStub.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcConnectionServiceStub.java new file mode 100644 index 0000000000..f3ab3ba895 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcConnectionServiceStub.java @@ -0,0 +1,179 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.stub; + +import static com.google.cloud.apigeeconnect.v1.ConnectionServiceClient.ListConnectionsPagedResponse; + +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.UnaryCallable; +import com.google.cloud.apigeeconnect.v1.ListConnectionsRequest; +import com.google.cloud.apigeeconnect.v1.ListConnectionsResponse; +import com.google.common.collect.ImmutableMap; +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 ConnectionService service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@Generated("by gapic-generator-java") +public class GrpcConnectionServiceStub extends ConnectionServiceStub { + private static final MethodDescriptor + listConnectionsMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.cloud.apigeeconnect.v1.ConnectionService/ListConnections") + .setRequestMarshaller( + ProtoUtils.marshaller(ListConnectionsRequest.getDefaultInstance())) + .setResponseMarshaller( + ProtoUtils.marshaller(ListConnectionsResponse.getDefaultInstance())) + .build(); + + private final UnaryCallable + listConnectionsCallable; + private final UnaryCallable + listConnectionsPagedCallable; + + private final BackgroundResource backgroundResources; + private final GrpcOperationsStub operationsStub; + private final GrpcStubCallableFactory callableFactory; + + public static final GrpcConnectionServiceStub create(ConnectionServiceStubSettings settings) + throws IOException { + return new GrpcConnectionServiceStub(settings, ClientContext.create(settings)); + } + + public static final GrpcConnectionServiceStub create(ClientContext clientContext) + throws IOException { + return new GrpcConnectionServiceStub( + ConnectionServiceStubSettings.newBuilder().build(), clientContext); + } + + public static final GrpcConnectionServiceStub create( + ClientContext clientContext, GrpcStubCallableFactory callableFactory) throws IOException { + return new GrpcConnectionServiceStub( + ConnectionServiceStubSettings.newBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of GrpcConnectionServiceStub, 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 GrpcConnectionServiceStub( + ConnectionServiceStubSettings settings, ClientContext clientContext) throws IOException { + this(settings, clientContext, new GrpcConnectionServiceCallableFactory()); + } + + /** + * Constructs an instance of GrpcConnectionServiceStub, 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 GrpcConnectionServiceStub( + ConnectionServiceStubSettings settings, + ClientContext clientContext, + GrpcStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + this.operationsStub = GrpcOperationsStub.create(clientContext, callableFactory); + + GrpcCallSettings + listConnectionsTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(listConnectionsMethodDescriptor) + .setParamsExtractor( + request -> { + ImmutableMap.Builder params = ImmutableMap.builder(); + params.put("parent", String.valueOf(request.getParent())); + return params.build(); + }) + .build(); + + this.listConnectionsCallable = + callableFactory.createUnaryCallable( + listConnectionsTransportSettings, settings.listConnectionsSettings(), clientContext); + this.listConnectionsPagedCallable = + callableFactory.createPagedCallable( + listConnectionsTransportSettings, settings.listConnectionsSettings(), clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + public GrpcOperationsStub getOperationsStub() { + return operationsStub; + } + + @Override + public UnaryCallable listConnectionsCallable() { + return listConnectionsCallable; + } + + @Override + public UnaryCallable + listConnectionsPagedCallable() { + return listConnectionsPagedCallable; + } + + @Override + public final void close() { + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } + } + + @Override + public void shutdown() { + backgroundResources.shutdown(); + } + + @Override + public boolean isShutdown() { + return backgroundResources.isShutdown(); + } + + @Override + public boolean isTerminated() { + return backgroundResources.isTerminated(); + } + + @Override + public void shutdownNow() { + backgroundResources.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return backgroundResources.awaitTermination(duration, unit); + } +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcTetherCallableFactory.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcTetherCallableFactory.java new file mode 100644 index 0000000000..9539d5b225 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcTetherCallableFactory.java @@ -0,0 +1,113 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.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 Tether service API. + * + *

This class is for advanced usage. + */ +@Generated("by gapic-generator-java") +public class GrpcTetherCallableFactory 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/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcTetherStub.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcTetherStub.java new file mode 100644 index 0000000000..5e26b215cf --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/GrpcTetherStub.java @@ -0,0 +1,148 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.stub; + +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.BidiStreamingCallable; +import com.google.api.gax.rpc.ClientContext; +import com.google.cloud.apigeeconnect.v1.EgressRequest; +import com.google.cloud.apigeeconnect.v1.EgressResponse; +import com.google.longrunning.stub.GrpcOperationsStub; +import io.grpc.MethodDescriptor; +import io.grpc.protobuf.ProtoUtils; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * gRPC stub implementation for the Tether service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@Generated("by gapic-generator-java") +public class GrpcTetherStub extends TetherStub { + private static final MethodDescriptor egressMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.BIDI_STREAMING) + .setFullMethodName("google.cloud.apigeeconnect.v1.Tether/Egress") + .setRequestMarshaller(ProtoUtils.marshaller(EgressResponse.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(EgressRequest.getDefaultInstance())) + .build(); + + private final BidiStreamingCallable egressCallable; + + private final BackgroundResource backgroundResources; + private final GrpcOperationsStub operationsStub; + private final GrpcStubCallableFactory callableFactory; + + public static final GrpcTetherStub create(TetherStubSettings settings) throws IOException { + return new GrpcTetherStub(settings, ClientContext.create(settings)); + } + + public static final GrpcTetherStub create(ClientContext clientContext) throws IOException { + return new GrpcTetherStub(TetherStubSettings.newBuilder().build(), clientContext); + } + + public static final GrpcTetherStub create( + ClientContext clientContext, GrpcStubCallableFactory callableFactory) throws IOException { + return new GrpcTetherStub( + TetherStubSettings.newBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of GrpcTetherStub, 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 GrpcTetherStub(TetherStubSettings settings, ClientContext clientContext) + throws IOException { + this(settings, clientContext, new GrpcTetherCallableFactory()); + } + + /** + * Constructs an instance of GrpcTetherStub, 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 GrpcTetherStub( + TetherStubSettings settings, + ClientContext clientContext, + GrpcStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + this.operationsStub = GrpcOperationsStub.create(clientContext, callableFactory); + + GrpcCallSettings egressTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(egressMethodDescriptor) + .build(); + + this.egressCallable = + callableFactory.createBidiStreamingCallable( + egressTransportSettings, settings.egressSettings(), clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + public GrpcOperationsStub getOperationsStub() { + return operationsStub; + } + + @Override + public BidiStreamingCallable egressCallable() { + return egressCallable; + } + + @Override + public final void close() { + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } + } + + @Override + public void shutdown() { + backgroundResources.shutdown(); + } + + @Override + public boolean isShutdown() { + return backgroundResources.isShutdown(); + } + + @Override + public boolean isTerminated() { + return backgroundResources.isTerminated(); + } + + @Override + public void shutdownNow() { + backgroundResources.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return backgroundResources.awaitTermination(duration, unit); + } +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/HttpJsonConnectionServiceCallableFactory.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/HttpJsonConnectionServiceCallableFactory.java new file mode 100644 index 0000000000..6aa75e6206 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/HttpJsonConnectionServiceCallableFactory.java @@ -0,0 +1,105 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.stub; + +import com.google.api.core.BetaApi; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonCallableFactory; +import com.google.api.gax.httpjson.HttpJsonOperationSnapshotCallable; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.longrunning.stub.OperationsStub; +import com.google.api.gax.rpc.BatchingCallSettings; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.OperationCallSettings; +import com.google.api.gax.rpc.OperationCallable; +import com.google.api.gax.rpc.PagedCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallSettings; +import com.google.api.gax.rpc.ServerStreamingCallable; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.longrunning.Operation; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST callable factory implementation for the ConnectionService service API. + * + *

This class is for advanced usage. + */ +@Generated("by gapic-generator-java") +@BetaApi +public class HttpJsonConnectionServiceCallableFactory + implements HttpJsonStubCallableFactory { + + @Override + public UnaryCallable createUnaryCallable( + HttpJsonCallSettings httpJsonCallSettings, + UnaryCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createUnaryCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public + UnaryCallable createPagedCallable( + HttpJsonCallSettings httpJsonCallSettings, + PagedCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createPagedCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @Override + public UnaryCallable createBatchingCallable( + HttpJsonCallSettings httpJsonCallSettings, + BatchingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createBatchingCallable( + httpJsonCallSettings, callSettings, clientContext); + } + + @BetaApi( + "The surface for long-running operations is not stable yet and may change in the future.") + @Override + public + OperationCallable createOperationCallable( + HttpJsonCallSettings httpJsonCallSettings, + OperationCallSettings callSettings, + ClientContext clientContext, + OperationsStub operationsStub) { + UnaryCallable innerCallable = + HttpJsonCallableFactory.createBaseUnaryCallable( + httpJsonCallSettings, callSettings.getInitialCallSettings(), clientContext); + HttpJsonOperationSnapshotCallable initialCallable = + new HttpJsonOperationSnapshotCallable( + innerCallable, + httpJsonCallSettings.getMethodDescriptor().getOperationSnapshotFactory()); + return HttpJsonCallableFactory.createOperationCallable( + callSettings, clientContext, operationsStub.longRunningClient(), initialCallable); + } + + @Override + public + ServerStreamingCallable createServerStreamingCallable( + HttpJsonCallSettings httpJsonCallSettings, + ServerStreamingCallSettings callSettings, + ClientContext clientContext) { + return HttpJsonCallableFactory.createServerStreamingCallable( + httpJsonCallSettings, callSettings, clientContext); + } +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/HttpJsonConnectionServiceStub.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/HttpJsonConnectionServiceStub.java new file mode 100644 index 0000000000..1c5701c575 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/HttpJsonConnectionServiceStub.java @@ -0,0 +1,209 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.stub; + +import static com.google.cloud.apigeeconnect.v1.ConnectionServiceClient.ListConnectionsPagedResponse; + +import com.google.api.core.BetaApi; +import com.google.api.core.InternalApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.core.BackgroundResourceAggregation; +import com.google.api.gax.httpjson.ApiMethodDescriptor; +import com.google.api.gax.httpjson.HttpJsonCallSettings; +import com.google.api.gax.httpjson.HttpJsonStubCallableFactory; +import com.google.api.gax.httpjson.ProtoMessageRequestFormatter; +import com.google.api.gax.httpjson.ProtoMessageResponseParser; +import com.google.api.gax.httpjson.ProtoRestSerializer; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.cloud.apigeeconnect.v1.ListConnectionsRequest; +import com.google.cloud.apigeeconnect.v1.ListConnectionsResponse; +import com.google.protobuf.TypeRegistry; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * REST stub implementation for the ConnectionService service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@Generated("by gapic-generator-java") +@BetaApi +public class HttpJsonConnectionServiceStub extends ConnectionServiceStub { + private static final TypeRegistry typeRegistry = TypeRegistry.newBuilder().build(); + + private static final ApiMethodDescriptor + listConnectionsMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.cloud.apigeeconnect.v1.ConnectionService/ListConnections") + .setHttpMethod("GET") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/{parent=projects/*/endpoints/*}/connections", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "parent", request.getParent()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "pageSize", request.getPageSize()); + serializer.putQueryParam(fields, "pageToken", request.getPageToken()); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(ListConnectionsResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private final UnaryCallable + listConnectionsCallable; + private final UnaryCallable + listConnectionsPagedCallable; + + private final BackgroundResource backgroundResources; + private final HttpJsonStubCallableFactory callableFactory; + + public static final HttpJsonConnectionServiceStub create(ConnectionServiceStubSettings settings) + throws IOException { + return new HttpJsonConnectionServiceStub(settings, ClientContext.create(settings)); + } + + public static final HttpJsonConnectionServiceStub create(ClientContext clientContext) + throws IOException { + return new HttpJsonConnectionServiceStub( + ConnectionServiceStubSettings.newHttpJsonBuilder().build(), clientContext); + } + + public static final HttpJsonConnectionServiceStub create( + ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { + return new HttpJsonConnectionServiceStub( + ConnectionServiceStubSettings.newHttpJsonBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of HttpJsonConnectionServiceStub, 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 HttpJsonConnectionServiceStub( + ConnectionServiceStubSettings settings, ClientContext clientContext) throws IOException { + this(settings, clientContext, new HttpJsonConnectionServiceCallableFactory()); + } + + /** + * Constructs an instance of HttpJsonConnectionServiceStub, 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 HttpJsonConnectionServiceStub( + ConnectionServiceStubSettings settings, + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + + HttpJsonCallSettings + listConnectionsTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(listConnectionsMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + + this.listConnectionsCallable = + callableFactory.createUnaryCallable( + listConnectionsTransportSettings, settings.listConnectionsSettings(), clientContext); + this.listConnectionsPagedCallable = + callableFactory.createPagedCallable( + listConnectionsTransportSettings, settings.listConnectionsSettings(), clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + @InternalApi + public static List getMethodDescriptors() { + List methodDescriptors = new ArrayList<>(); + methodDescriptors.add(listConnectionsMethodDescriptor); + return methodDescriptors; + } + + @Override + public UnaryCallable listConnectionsCallable() { + return listConnectionsCallable; + } + + @Override + public UnaryCallable + listConnectionsPagedCallable() { + return listConnectionsPagedCallable; + } + + @Override + public final void close() { + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } + } + + @Override + public void shutdown() { + backgroundResources.shutdown(); + } + + @Override + public boolean isShutdown() { + return backgroundResources.isShutdown(); + } + + @Override + public boolean isTerminated() { + return backgroundResources.isTerminated(); + } + + @Override + public void shutdownNow() { + backgroundResources.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return backgroundResources.awaitTermination(duration, unit); + } +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStub.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStub.java new file mode 100644 index 0000000000..e53dbb6fb5 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStub.java @@ -0,0 +1,40 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.stub; + +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.rpc.BidiStreamingCallable; +import com.google.cloud.apigeeconnect.v1.EgressRequest; +import com.google.cloud.apigeeconnect.v1.EgressResponse; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * Base stub class for the Tether service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@Generated("by gapic-generator-java") +public abstract class TetherStub implements BackgroundResource { + + public BidiStreamingCallable egressCallable() { + throw new UnsupportedOperationException("Not implemented: egressCallable()"); + } + + @Override + public abstract void close(); +} diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java new file mode 100644 index 0000000000..3a926ba150 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java @@ -0,0 +1,262 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.stub; + +import com.google.api.core.ApiFunction; +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.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.StreamingCallSettings; +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.apigeeconnect.v1.EgressRequest; +import com.google.cloud.apigeeconnect.v1.EgressResponse; +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 java.io.IOException; +import java.util.List; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * Settings class to configure an instance of {@link TetherStub}. + * + *

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

    + *
  • The default service address (apigeeconnect.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 egress to 30 seconds: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * TetherStubSettings.Builder tetherSettingsBuilder = TetherStubSettings.newBuilder();
+ * tetherSettingsBuilder
+ *     .egressSettings()
+ *     .setRetrySettings(
+ *         tetherSettingsBuilder
+ *             .egressSettings()
+ *             .getRetrySettings()
+ *             .toBuilder()
+ *             .setTotalTimeout(Duration.ofSeconds(30))
+ *             .build());
+ * TetherStubSettings tetherSettings = tetherSettingsBuilder.build();
+ * }
+ */ +@Generated("by gapic-generator-java") +public class TetherStubSettings 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").build(); + + private final StreamingCallSettings egressSettings; + + /** Returns the object with the settings used for calls to egress. */ + public StreamingCallSettings egressSettings() { + return egressSettings; + } + + public TetherStub createStub() throws IOException { + if (getTransportChannelProvider() + .getTransportName() + .equals(GrpcTransportChannel.getGrpcTransportName())) { + return GrpcTetherStub.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 "apigeeconnect.googleapis.com:443"; + } + + /** Returns the default mTLS service endpoint. */ + public static String getDefaultMtlsEndpoint() { + return "apigeeconnect.mtls.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) + .setUseJwtAccessWithScope(true); + } + + /** Returns a builder for the default gRPC 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 defaultGrpcApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken("gapic", GaxProperties.getLibraryVersion(TetherStubSettings.class)) + .setTransportToken( + GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); + } + + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return TetherStubSettings.defaultGrpcApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC 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 TetherStubSettings(Builder settingsBuilder) throws IOException { + super(settingsBuilder); + + egressSettings = settingsBuilder.egressSettings().build(); + } + + /** Builder for TetherStubSettings. */ + public static class Builder extends StubSettings.Builder { + private final ImmutableList> unaryMethodSettingsBuilders; + private final StreamingCallSettings.Builder egressSettings; + private static final ImmutableMap> + RETRYABLE_CODE_DEFINITIONS; + + static { + ImmutableMap.Builder> definitions = + ImmutableMap.builder(); + definitions.put("no_retry_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().setRpcTimeoutMultiplier(1.0).build(); + definitions.put("no_retry_params", settings); + RETRY_PARAM_DEFINITIONS = definitions.build(); + } + + protected Builder() { + this(((ClientContext) null)); + } + + protected Builder(ClientContext clientContext) { + super(clientContext); + + egressSettings = StreamingCallSettings.newBuilder(); + + unaryMethodSettingsBuilders = ImmutableList.>of(); + initDefaults(this); + } + + protected Builder(TetherStubSettings settings) { + super(settings); + + egressSettings = settings.egressSettings.toBuilder(); + + unaryMethodSettingsBuilders = ImmutableList.>of(); + } + + private static Builder createDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultTransportChannelProvider()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + + private static Builder initDefaults(Builder builder) { + return builder; + } + + /** + * 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) { + super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater); + return this; + } + + public ImmutableList> unaryMethodSettingsBuilders() { + return unaryMethodSettingsBuilders; + } + + /** Returns the builder for the settings used for calls to egress. */ + public StreamingCallSettings.Builder egressSettings() { + return egressSettings; + } + + @Override + public TetherStubSettings build() throws IOException { + return new TetherStubSettings(this); + } + } +} From e2e5f45800997fa5dce2888524a605b1b5920573 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 17 Jan 2023 13:10:26 -0500 Subject: [PATCH 29/63] chore: Add comments for funcs --- .../composer/comment/ServiceClientCommentComposer.java | 4 +++- .../common/AbstractServiceClientTestClassComposer.java | 1 + .../com/google/api/generator/gapic/model/GapicClass.java | 6 +++--- .../java/com/google/api/generator/gapic/model/Service.java | 7 +++++++ 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java index cbe64c0630..76afdb00b4 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java @@ -150,7 +150,9 @@ public static List createClassHeaderComments( classHeaderJavadocBuilder.addParagraph(SERVICE_DESCRIPTION_ENDPOINT_SUMMARY_STRING); classHeaderJavadocBuilder.addSampleCode(endpointSampleCode); - // Generate Secondary Transport sample if Transport Sample exists and HttpJson code is generated + // Transport example + // Generate Secondary Transport sample if Transport Sample exists and if HttpJson code is + // generated for this service if (transportSampleCode != null && service.hasAnyEnabledMethodsForTransport(Transport.REST)) { classHeaderJavadocBuilder.addParagraph( String.format( diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java index 9479d8e35a..cd042222c1 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java @@ -114,6 +114,7 @@ public GapicClass generate(GapicContext context, Service service) { } protected GapicClass generate(String className, GapicContext context, Service service) { + // Do not generate Client Test code for Transport if there are no matching RPCs for a Transport if (!service.hasAnyEnabledMethodsForTransport(getTransport())) { return GapicClass.createNonGeneratedGapicClass(); } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java index 044a1604c8..4c38586ba8 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java @@ -44,10 +44,10 @@ public enum Kind { public abstract String apiVersion(); /** - * Create an empty GapicClass with minimal information. This is intended to be used for - * GapicClasses that will not generate any Java files + * Create a GapicClass with minimal information. This is intended to be used for GapicClasses that + * will not generate any Java files (Writer will skip) * - * @return Minimal GapicClass with setShouldGenerateClass set to False + * @return GapicClass denoted with NON_GENERATED Kind enum */ public static GapicClass createNonGeneratedGapicClass() { return builder() diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java index 49ffbe2158..ce581915c9 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Service.java @@ -113,6 +113,13 @@ public boolean hasStandardLroMethods() { return false; } + /** + * Wrapper for hasAnyEnabledMethodsForTransport(Transport). Some invocations are called with + * `gRPC` which can't match with the correct Transport (GRPC) + * + * @param transportName String transport value + * @return boolean if service contains any enabled methods for a transport + */ public boolean hasAnyEnabledMethodsForTransport(String transportName) { return hasAnyEnabledMethodsForTransport(Transport.parse(transportName)); } From bf57544e6da258d5687ebd4ffc0e2afff6fb2c5c Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 17 Jan 2023 18:11:04 -0500 Subject: [PATCH 30/63] chore: Refactor ServiceClientClassComposer for GRPC_REST --- .../gapic/composer/comment/ServiceClientCommentComposer.java | 4 +--- .../gapic/composer/grpcrest/ServiceClientClassComposer.java | 5 +++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java index 76afdb00b4..2c5472239b 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java @@ -151,9 +151,7 @@ public static List createClassHeaderComments( classHeaderJavadocBuilder.addSampleCode(endpointSampleCode); // Transport example - // Generate Secondary Transport sample if Transport Sample exists and if HttpJson code is - // generated for this service - if (transportSampleCode != null && service.hasAnyEnabledMethodsForTransport(Transport.REST)) { + if (transportSampleCode != null) { classHeaderJavadocBuilder.addParagraph( String.format( SERVICE_DESCRIPTION_TRANSPORT_SUMMARY_STRING, secondaryTransport, primaryTransport)); diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposer.java index 8933b7b4ed..8e6966aaa3 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposer.java @@ -26,6 +26,8 @@ import com.google.api.generator.gapic.model.ResourceName; import com.google.api.generator.gapic.model.Sample; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; + import java.util.Arrays; import java.util.List; import java.util.Map; @@ -48,6 +50,9 @@ protected List createClassHeaderComments( Map resourceNames, Map messageTypes, List samples) { + if (!service.hasAnyEnabledMethodsForTransport(Transport.REST)) { + return super.createClassHeaderComments(service, typeStore, resourceNames, messageTypes, samples); + } TypeNode clientType = typeStore.get(ClassNames.getServiceClientClassName(service)); TypeNode settingsType = typeStore.get(ClassNames.getServiceSettingsClassName(service)); Sample classMethodSampleCode = From d1803208dc0e4a826e414eeaad9d98e822b16b13 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 18 Jan 2023 11:53:17 -0500 Subject: [PATCH 31/63] chore: Remove unused import --- .../gapic/composer/comment/ServiceClientCommentComposer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java index 2c5472239b..738c861e92 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java @@ -22,8 +22,8 @@ import com.google.api.generator.gapic.model.Method; import com.google.api.generator.gapic.model.MethodArgument; import com.google.api.generator.gapic.model.Service; -import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; From 8979217a36dc2e0c7349094966ee4c7eb47d63c4 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 18 Jan 2023 11:55:27 -0500 Subject: [PATCH 32/63] chore: Remove unnecessary if/else check --- .../grpcrest/HttpJsonServiceStubClassComposer.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposer.java index 28e7d68d14..d3e92e0e7e 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposer.java @@ -37,9 +37,8 @@ public static HttpJsonServiceStubClassComposer instance() { @Override protected List createStaticCreatorMethods( Service service, TypeStore typeStore, String newBuilderMethod) { - if (service.hasAnyEnabledMethodsForTransport(Transport.REST)) { - return super.createStaticCreatorMethods(service, typeStore, "newHttpJsonBuilder"); - } - return Collections.emptyList(); + // No need to check if REST Transport is enabled + // AbstractTransportServiceStubClassComposer won't generate a file if REST isn't enabled + return super.createStaticCreatorMethods(service, typeStore, "newHttpJsonBuilder"); } } From 5a6b01438c48a2fd0e80bdac8474b38be6a911d6 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 18 Jan 2023 13:46:35 -0500 Subject: [PATCH 33/63] chore: Fix transport sample name --- .../composer/samplecode/ServiceClientHeaderSampleComposer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientHeaderSampleComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientHeaderSampleComposer.java index b979f87744..239fd5eec6 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientHeaderSampleComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientHeaderSampleComposer.java @@ -342,7 +342,7 @@ public static Sample composeTransportSample( RegionTag.builder() .setServiceName(service.name()) .setRpcName(rpcName) - .setOverloadDisambiguation("setCredentialsProvider") + .setOverloadDisambiguation("composeTransport") .build(); return Sample.builder().setBody(sampleBody).setRegionTag(regionTag).build(); } From 9420be8114e315e7d48fa5352ee5df9e1adc100f Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 18 Jan 2023 13:52:18 -0500 Subject: [PATCH 34/63] chore: Update apigeeconnect IT goldens --- .../SyncCreateSetCredentialsProvider1.java | 41 ------------------- .../SyncCreateSetCredentialsProvider1.java | 39 ------------------ 2 files changed, 80 deletions(-) delete mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetCredentialsProvider1.java delete mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetCredentialsProvider1.java diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetCredentialsProvider1.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetCredentialsProvider1.java deleted file mode 100644 index b2a5bd5657..0000000000 --- a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetCredentialsProvider1.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.cloud.apigeeconnect.v1.samples; - -// [START apigeeconnect_v1_generated_ConnectionService_Create_SetCredentialsProvider1_sync] -import com.google.cloud.apigeeconnect.v1.ConnectionServiceClient; -import com.google.cloud.apigeeconnect.v1.ConnectionServiceSettings; - -public class SyncCreateSetCredentialsProvider1 { - - public static void main(String[] args) throws Exception { - syncCreateSetCredentialsProvider1(); - } - - public static void syncCreateSetCredentialsProvider1() throws Exception { - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in - // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library - ConnectionServiceSettings connectionServiceSettings = - ConnectionServiceSettings.newHttpJsonBuilder().build(); - ConnectionServiceClient connectionServiceClient = - ConnectionServiceClient.create(connectionServiceSettings); - } -} -// [END apigeeconnect_v1_generated_ConnectionService_Create_SetCredentialsProvider1_sync] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetCredentialsProvider1.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetCredentialsProvider1.java deleted file mode 100644 index f72596e748..0000000000 --- a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/tether/create/SyncCreateSetCredentialsProvider1.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.cloud.apigeeconnect.v1.samples; - -// [START apigeeconnect_v1_generated_Tether_Create_SetCredentialsProvider1_sync] -import com.google.cloud.apigeeconnect.v1.TetherClient; -import com.google.cloud.apigeeconnect.v1.TetherSettings; - -public class SyncCreateSetCredentialsProvider1 { - - public static void main(String[] args) throws Exception { - syncCreateSetCredentialsProvider1(); - } - - public static void syncCreateSetCredentialsProvider1() throws Exception { - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in - // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library - TetherSettings tetherSettings = TetherSettings.newHttpJsonBuilder().build(); - TetherClient tetherClient = TetherClient.create(tetherSettings); - } -} -// [END apigeeconnect_v1_generated_Tether_Create_SetCredentialsProvider1_sync] From e5fad03e4e9618918e4cda94d3d97b4b969e66bb Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 18 Jan 2023 13:52:43 -0500 Subject: [PATCH 35/63] chore: Update asset IT goldens --- .../SyncCreateSetCredentialsProvider1.java | 39 ------------------- 1 file changed, 39 deletions(-) delete mode 100644 test/integration/goldens/asset/samples/snippets/generated/main/java/com/google/cloud/asset/v1/assetservice/create/SyncCreateSetCredentialsProvider1.java diff --git a/test/integration/goldens/asset/samples/snippets/generated/main/java/com/google/cloud/asset/v1/assetservice/create/SyncCreateSetCredentialsProvider1.java b/test/integration/goldens/asset/samples/snippets/generated/main/java/com/google/cloud/asset/v1/assetservice/create/SyncCreateSetCredentialsProvider1.java deleted file mode 100644 index 84fa8e108a..0000000000 --- a/test/integration/goldens/asset/samples/snippets/generated/main/java/com/google/cloud/asset/v1/assetservice/create/SyncCreateSetCredentialsProvider1.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.cloud.asset.v1.samples; - -// [START cloudasset_v1_generated_AssetService_Create_SetCredentialsProvider1_sync] -import com.google.cloud.asset.v1.AssetServiceClient; -import com.google.cloud.asset.v1.AssetServiceSettings; - -public class SyncCreateSetCredentialsProvider1 { - - public static void main(String[] args) throws Exception { - syncCreateSetCredentialsProvider1(); - } - - public static void syncCreateSetCredentialsProvider1() throws Exception { - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in - // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library - AssetServiceSettings assetServiceSettings = AssetServiceSettings.newHttpJsonBuilder().build(); - AssetServiceClient assetServiceClient = AssetServiceClient.create(assetServiceSettings); - } -} -// [END cloudasset_v1_generated_AssetService_Create_SetCredentialsProvider1_sync] From 64baf508f8e27b1ba1f6a77e3f0cdb116349c690 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 18 Jan 2023 13:53:07 -0500 Subject: [PATCH 36/63] chore: Update asset goldens --- .../create/SyncCreateComposeTransport.java | 41 +++++++++++++++++++ .../create/SyncCreateComposeTransport.java | 39 ++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateComposeTransport.java create mode 100644 test/integration/goldens/asset/samples/snippets/generated/main/java/com/google/cloud/asset/v1/assetservice/create/SyncCreateComposeTransport.java diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateComposeTransport.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateComposeTransport.java new file mode 100644 index 0000000000..d229135e21 --- /dev/null +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateComposeTransport.java @@ -0,0 +1,41 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.apigeeconnect.v1.samples; + +// [START apigeeconnect_v1_generated_ConnectionService_Create_ComposeTransport_sync] +import com.google.cloud.apigeeconnect.v1.ConnectionServiceClient; +import com.google.cloud.apigeeconnect.v1.ConnectionServiceSettings; + +public class SyncCreateComposeTransport { + + public static void main(String[] args) throws Exception { + syncCreateComposeTransport(); + } + + public static void syncCreateComposeTransport() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + ConnectionServiceSettings connectionServiceSettings = + ConnectionServiceSettings.newHttpJsonBuilder().build(); + ConnectionServiceClient connectionServiceClient = + ConnectionServiceClient.create(connectionServiceSettings); + } +} +// [END apigeeconnect_v1_generated_ConnectionService_Create_ComposeTransport_sync] diff --git a/test/integration/goldens/asset/samples/snippets/generated/main/java/com/google/cloud/asset/v1/assetservice/create/SyncCreateComposeTransport.java b/test/integration/goldens/asset/samples/snippets/generated/main/java/com/google/cloud/asset/v1/assetservice/create/SyncCreateComposeTransport.java new file mode 100644 index 0000000000..5e229f0902 --- /dev/null +++ b/test/integration/goldens/asset/samples/snippets/generated/main/java/com/google/cloud/asset/v1/assetservice/create/SyncCreateComposeTransport.java @@ -0,0 +1,39 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.cloud.asset.v1.samples; + +// [START cloudasset_v1_generated_AssetService_Create_ComposeTransport_sync] +import com.google.cloud.asset.v1.AssetServiceClient; +import com.google.cloud.asset.v1.AssetServiceSettings; + +public class SyncCreateComposeTransport { + + public static void main(String[] args) throws Exception { + syncCreateComposeTransport(); + } + + public static void syncCreateComposeTransport() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + AssetServiceSettings assetServiceSettings = AssetServiceSettings.newHttpJsonBuilder().build(); + AssetServiceClient assetServiceClient = AssetServiceClient.create(assetServiceSettings); + } +} +// [END cloudasset_v1_generated_AssetService_Create_ComposeTransport_sync] From 0c2893cbb3b66cade3eb628274bb82a326a9fff4 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 18 Jan 2023 13:53:56 -0500 Subject: [PATCH 37/63] chore: Update credentials IT goldens --- ...sProvider1.java => SyncCreateComposeTransport.java} | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename test/integration/goldens/credentials/samples/snippets/generated/main/java/com/google/cloud/iam/credentials/v1/iamcredentials/create/{SyncCreateSetCredentialsProvider1.java => SyncCreateComposeTransport.java} (81%) diff --git a/test/integration/goldens/credentials/samples/snippets/generated/main/java/com/google/cloud/iam/credentials/v1/iamcredentials/create/SyncCreateSetCredentialsProvider1.java b/test/integration/goldens/credentials/samples/snippets/generated/main/java/com/google/cloud/iam/credentials/v1/iamcredentials/create/SyncCreateComposeTransport.java similarity index 81% rename from test/integration/goldens/credentials/samples/snippets/generated/main/java/com/google/cloud/iam/credentials/v1/iamcredentials/create/SyncCreateSetCredentialsProvider1.java rename to test/integration/goldens/credentials/samples/snippets/generated/main/java/com/google/cloud/iam/credentials/v1/iamcredentials/create/SyncCreateComposeTransport.java index 91ce887f89..cf044e04b5 100644 --- a/test/integration/goldens/credentials/samples/snippets/generated/main/java/com/google/cloud/iam/credentials/v1/iamcredentials/create/SyncCreateSetCredentialsProvider1.java +++ b/test/integration/goldens/credentials/samples/snippets/generated/main/java/com/google/cloud/iam/credentials/v1/iamcredentials/create/SyncCreateComposeTransport.java @@ -16,17 +16,17 @@ package com.google.cloud.iam.credentials.v1.samples; -// [START iamcredentials_v1_generated_IAMCredentials_Create_SetCredentialsProvider1_sync] +// [START iamcredentials_v1_generated_IAMCredentials_Create_ComposeTransport_sync] import com.google.cloud.iam.credentials.v1.IamCredentialsClient; import com.google.cloud.iam.credentials.v1.IamCredentialsSettings; -public class SyncCreateSetCredentialsProvider1 { +public class SyncCreateComposeTransport { public static void main(String[] args) throws Exception { - syncCreateSetCredentialsProvider1(); + syncCreateComposeTransport(); } - public static void syncCreateSetCredentialsProvider1() throws Exception { + public static void syncCreateComposeTransport() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -37,4 +37,4 @@ public static void syncCreateSetCredentialsProvider1() throws Exception { IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create(iamCredentialsSettings); } } -// [END iamcredentials_v1_generated_IAMCredentials_Create_SetCredentialsProvider1_sync] +// [END iamcredentials_v1_generated_IAMCredentials_Create_ComposeTransport_sync] From ea804b5fd0a8a48d158e0f1d38ef858b22b17e1a Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 18 Jan 2023 13:54:24 -0500 Subject: [PATCH 38/63] chore: Update library IT goldens --- ...sProvider1.java => SyncCreateComposeTransport.java} | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename test/integration/goldens/library/samples/snippets/generated/main/java/com/google/cloud/example/library/v1/libraryservice/create/{SyncCreateSetCredentialsProvider1.java => SyncCreateComposeTransport.java} (81%) diff --git a/test/integration/goldens/library/samples/snippets/generated/main/java/com/google/cloud/example/library/v1/libraryservice/create/SyncCreateSetCredentialsProvider1.java b/test/integration/goldens/library/samples/snippets/generated/main/java/com/google/cloud/example/library/v1/libraryservice/create/SyncCreateComposeTransport.java similarity index 81% rename from test/integration/goldens/library/samples/snippets/generated/main/java/com/google/cloud/example/library/v1/libraryservice/create/SyncCreateSetCredentialsProvider1.java rename to test/integration/goldens/library/samples/snippets/generated/main/java/com/google/cloud/example/library/v1/libraryservice/create/SyncCreateComposeTransport.java index 3258a152b4..e417db72f1 100644 --- a/test/integration/goldens/library/samples/snippets/generated/main/java/com/google/cloud/example/library/v1/libraryservice/create/SyncCreateSetCredentialsProvider1.java +++ b/test/integration/goldens/library/samples/snippets/generated/main/java/com/google/cloud/example/library/v1/libraryservice/create/SyncCreateComposeTransport.java @@ -16,17 +16,17 @@ package com.google.cloud.example.library.v1.samples; -// [START example_v1_generated_LibraryService_Create_SetCredentialsProvider1_sync] +// [START example_v1_generated_LibraryService_Create_ComposeTransport_sync] import com.google.cloud.example.library.v1.LibraryServiceClient; import com.google.cloud.example.library.v1.LibraryServiceSettings; -public class SyncCreateSetCredentialsProvider1 { +public class SyncCreateComposeTransport { public static void main(String[] args) throws Exception { - syncCreateSetCredentialsProvider1(); + syncCreateComposeTransport(); } - public static void syncCreateSetCredentialsProvider1() throws Exception { + public static void syncCreateComposeTransport() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -37,4 +37,4 @@ public static void syncCreateSetCredentialsProvider1() throws Exception { LibraryServiceClient libraryServiceClient = LibraryServiceClient.create(libraryServiceSettings); } } -// [END example_v1_generated_LibraryService_Create_SetCredentialsProvider1_sync] +// [END example_v1_generated_LibraryService_Create_ComposeTransport_sync] From c9a236ae5bd2db9a05b2b3c455717ce1713d2704 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 18 Jan 2023 13:55:00 -0500 Subject: [PATCH 39/63] chore: Update redis IT goldens --- ...sProvider1.java => SyncCreateComposeTransport.java} | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename test/integration/goldens/redis/samples/snippets/generated/main/java/com/google/cloud/redis/v1beta1/cloudredis/create/{SyncCreateSetCredentialsProvider1.java => SyncCreateComposeTransport.java} (81%) diff --git a/test/integration/goldens/redis/samples/snippets/generated/main/java/com/google/cloud/redis/v1beta1/cloudredis/create/SyncCreateSetCredentialsProvider1.java b/test/integration/goldens/redis/samples/snippets/generated/main/java/com/google/cloud/redis/v1beta1/cloudredis/create/SyncCreateComposeTransport.java similarity index 81% rename from test/integration/goldens/redis/samples/snippets/generated/main/java/com/google/cloud/redis/v1beta1/cloudredis/create/SyncCreateSetCredentialsProvider1.java rename to test/integration/goldens/redis/samples/snippets/generated/main/java/com/google/cloud/redis/v1beta1/cloudredis/create/SyncCreateComposeTransport.java index 9d906a88e4..b168d941ea 100644 --- a/test/integration/goldens/redis/samples/snippets/generated/main/java/com/google/cloud/redis/v1beta1/cloudredis/create/SyncCreateSetCredentialsProvider1.java +++ b/test/integration/goldens/redis/samples/snippets/generated/main/java/com/google/cloud/redis/v1beta1/cloudredis/create/SyncCreateComposeTransport.java @@ -16,17 +16,17 @@ package com.google.cloud.redis.v1beta1.samples; -// [START redis_v1beta1_generated_CloudRedis_Create_SetCredentialsProvider1_sync] +// [START redis_v1beta1_generated_CloudRedis_Create_ComposeTransport_sync] import com.google.cloud.redis.v1beta1.CloudRedisClient; import com.google.cloud.redis.v1beta1.CloudRedisSettings; -public class SyncCreateSetCredentialsProvider1 { +public class SyncCreateComposeTransport { public static void main(String[] args) throws Exception { - syncCreateSetCredentialsProvider1(); + syncCreateComposeTransport(); } - public static void syncCreateSetCredentialsProvider1() throws Exception { + public static void syncCreateComposeTransport() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -36,4 +36,4 @@ public static void syncCreateSetCredentialsProvider1() throws Exception { CloudRedisClient cloudRedisClient = CloudRedisClient.create(cloudRedisSettings); } } -// [END redis_v1beta1_generated_CloudRedis_Create_SetCredentialsProvider1_sync] +// [END redis_v1beta1_generated_CloudRedis_Create_ComposeTransport_sync] From 4986e85794aad536ef2cdaf9ec3cd7576e15204f Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 18 Jan 2023 14:18:21 -0500 Subject: [PATCH 40/63] chore: Fix linting issues --- .../gapic/composer/comment/ServiceClientCommentComposer.java | 1 - .../composer/grpcrest/HttpJsonServiceStubClassComposer.java | 2 -- .../gapic/composer/grpcrest/ServiceClientClassComposer.java | 4 ++-- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java index 738c861e92..2d622d7efe 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java @@ -23,7 +23,6 @@ import com.google.api.generator.gapic.model.MethodArgument; import com.google.api.generator.gapic.model.Service; import com.google.api.generator.gapic.utils.JavaStyle; - import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposer.java index d3e92e0e7e..6d46c07792 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposer.java @@ -17,8 +17,6 @@ import com.google.api.generator.engine.ast.MethodDefinition; import com.google.api.generator.gapic.composer.store.TypeStore; import com.google.api.generator.gapic.model.Service; -import com.google.api.generator.gapic.model.Transport; -import java.util.Collections; import java.util.List; public class HttpJsonServiceStubClassComposer diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposer.java index 8e6966aaa3..c101c96469 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposer.java @@ -27,7 +27,6 @@ import com.google.api.generator.gapic.model.Sample; import com.google.api.generator.gapic.model.Service; import com.google.api.generator.gapic.model.Transport; - import java.util.Arrays; import java.util.List; import java.util.Map; @@ -51,7 +50,8 @@ protected List createClassHeaderComments( Map messageTypes, List samples) { if (!service.hasAnyEnabledMethodsForTransport(Transport.REST)) { - return super.createClassHeaderComments(service, typeStore, resourceNames, messageTypes, samples); + return super.createClassHeaderComments( + service, typeStore, resourceNames, messageTypes, samples); } TypeNode clientType = typeStore.get(ClassNames.getServiceClientClassName(service)); TypeNode settingsType = typeStore.get(ClassNames.getServiceSettingsClassName(service)); From 766e9e7da2986ccb42bcc051443e75574694b1a4 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 19 Jan 2023 00:01:00 -0500 Subject: [PATCH 41/63] chore: Add showcase extended proto framework --- showcase/BUILD.bazel | 43 ++ .../gapic-showcase-extended/proto/BUILD.bazel | 30 + .../proto/wicked.proto | 49 ++ ...1.java => SyncCreateComposeTransport.java} | 10 +- ...1.java => SyncCreateComposeTransport.java} | 10 +- ...1.java => SyncCreateComposeTransport.java} | 10 +- ...1.java => SyncCreateComposeTransport.java} | 10 +- ...1.java => SyncCreateComposeTransport.java} | 10 +- .../craftevilplan/SyncCraftEvilPlan.java | 48 ++ ...1.java => SyncCreateComposeTransport.java} | 10 +- .../AsyncBrainstormEvilPlans.java | 49 ++ .../craftevilplan/AsyncCraftEvilPlan.java | 46 ++ .../craftevilplan/SyncCraftEvilPlan.java | 43 ++ .../SyncCreateSetCredentialsProvider.java | 44 ++ .../wicked/create/SyncCreateSetEndpoint.java | 40 ++ .../AsyncPersuadeEvilPlan.java | 63 ++ .../craftevilplan/SyncCraftEvilPlan.java | 48 ++ .../google/showcase/v1beta1/WickedClient.java | 299 ++++++++++ .../showcase/v1beta1/WickedSettings.java | 207 +++++++ .../showcase/v1beta1/gapic_metadata.json | 199 +------ .../google/showcase/v1beta1/package-info.java | 139 +---- .../stub/GrpcWickedCallableFactory.java | 115 ++++ .../showcase/v1beta1/stub/GrpcWickedStub.java | 198 +++++++ .../showcase/v1beta1/stub/WickedStub.java | 52 ++ .../v1beta1/stub/WickedStubSettings.java | 301 ++++++++++ .../google/showcase/v1beta1/MockWicked.java | 59 ++ .../showcase/v1beta1/MockWickedImpl.java | 154 +++++ .../showcase/v1beta1/WickedClientTest.java | 213 +++++++ .../google/showcase/v1beta1/WickedGrpc.java | 392 ++++++++++++ .../google/showcase/v1beta1/EvilRequest.java | 559 ++++++++++++++++++ .../v1beta1/EvilRequestOrBuilder.java | 21 + .../google/showcase/v1beta1/EvilResponse.java | 559 ++++++++++++++++++ .../v1beta1/EvilResponseOrBuilder.java | 21 + .../showcase/v1beta1/WickedOuterClass.java | 79 +++ showcase/scripts/update.sh | 12 +- 35 files changed, 3790 insertions(+), 352 deletions(-) create mode 100644 showcase/gapic-showcase-extended/proto/BUILD.bazel create mode 100644 showcase/gapic-showcase-extended/proto/wicked.proto rename showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/compliance/create/{SyncCreateSetCredentialsProvider1.java => SyncCreateComposeTransport.java} (80%) rename showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/echo/create/{SyncCreateSetCredentialsProvider1.java => SyncCreateComposeTransport.java} (80%) rename showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/identity/create/{SyncCreateSetCredentialsProvider1.java => SyncCreateComposeTransport.java} (80%) rename showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/messaging/create/{SyncCreateSetCredentialsProvider1.java => SyncCreateComposeTransport.java} (80%) rename showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/sequenceservice/create/{SyncCreateSetCredentialsProvider1.java => SyncCreateComposeTransport.java} (84%) create mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/stub/wickedstubsettings/craftevilplan/SyncCraftEvilPlan.java rename showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/testing/create/{SyncCreateSetCredentialsProvider1.java => SyncCreateComposeTransport.java} (80%) create mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/brainstormevilplans/AsyncBrainstormEvilPlans.java create mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/AsyncCraftEvilPlan.java create mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/SyncCraftEvilPlan.java create mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetCredentialsProvider.java create mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetEndpoint.java create mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/persuadeevilplan/AsyncPersuadeEvilPlan.java create mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wickedsettings/craftevilplan/SyncCraftEvilPlan.java create mode 100644 showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedClient.java create mode 100644 showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedSettings.java create mode 100644 showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedCallableFactory.java create mode 100644 showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedStub.java create mode 100644 showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStub.java create mode 100644 showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStubSettings.java create mode 100644 showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWicked.java create mode 100644 showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWickedImpl.java create mode 100644 showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/WickedClientTest.java create mode 100644 showcase/grpc-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedGrpc.java create mode 100644 showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequest.java create mode 100644 showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequestOrBuilder.java create mode 100644 showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponse.java create mode 100644 showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponseOrBuilder.java create mode 100644 showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedOuterClass.java diff --git a/showcase/BUILD.bazel b/showcase/BUILD.bazel index 919547453c..2d9feb5d29 100644 --- a/showcase/BUILD.bazel +++ b/showcase/BUILD.bazel @@ -18,17 +18,36 @@ proto_library_with_info( ], ) +proto_library_with_info( + name = "showcase_proto_extended_with_info", + deps = [ + "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", + "@com_google_googleapis//google/cloud:common_resources_proto", + ] +) + java_proto_library( name = "showcase_java_proto", deps = ["@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_proto"], ) +java_proto_library( + name = "showcase_java_proto_extended", + deps = ["//showcase/gapic-showcase-extended/proto:showcase_proto_extended"], +) + java_grpc_library( name = "showcase_java_grpc", srcs = ["@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_proto"], deps = [":showcase_java_proto"], ) +java_grpc_library( + name = "showcase_java_grpc_extended", + srcs = ["//showcase/gapic-showcase-extended/proto:showcase_proto_extended"], + deps = [":showcase_java_proto_extended"], +) + java_gapic_library( name = "showcase_java_gapic", srcs = [":showcase_proto_with_info"], @@ -46,15 +65,34 @@ java_gapic_library( ], ) +java_gapic_library( + name = "showcase_java_gapic_extended", + srcs = [":showcase_proto_extended_with_info"], + gapic_yaml = None, + rest_numeric_enums = True, + test_deps = [ + ":showcase_java_grpc_extended" + ], + transport = "grpc+rest", + deps = [ + ":showcase_java_proto_extended", + "@com_google_googleapis//google/api:api_java_proto", + ], +) + # Open Source Packages java_gapic_assembly_gradle_pkg( name = "google-cloud-showcase-v1beta1-java", transport = "grpc+rest", deps = [ ":showcase_java_gapic", + ":showcase_java_gapic_extended", ":showcase_java_grpc", + ":showcase_java_grpc_extended", ":showcase_java_proto", + ":showcase_java_proto_extended", "@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_proto", + "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", ], ) @@ -77,8 +115,10 @@ filegroup( # GAPIC Showcase : Update and Verify GAPIC_DATA = [ "showcase_java_gapic_srcjar_raw.srcjar", + "showcase_java_gapic_extended_srcjar_raw.srcjar", ":gapic_showcase_files", "//showcase:showcase_java_gapic", + "//showcase:showcase_java_gapic_extended" ] sh_binary( @@ -98,8 +138,10 @@ sh_binary( # GRPC Showcase : Update and Verify GRPC_DATA = [ "libshowcase_java_grpc-src.jar", + "libshowcase_java_grpc_extended-src.jar", ":grpc_gapic_showcase_files", "//showcase:showcase_java_grpc", + "//showcase:showcase_java_grpc_extended", ] sh_binary( @@ -121,6 +163,7 @@ PROTO_DATA = [ "proto-google-cloud-showcase-v1beta1-java.tar.gz", ":proto_gapic_showcase_files", "//showcase:showcase_java_proto", + "//showcase:showcase_java_proto_extended", ] sh_binary( diff --git a/showcase/gapic-showcase-extended/proto/BUILD.bazel b/showcase/gapic-showcase-extended/proto/BUILD.bazel new file mode 100644 index 0000000000..6984ae2386 --- /dev/null +++ b/showcase/gapic-showcase-extended/proto/BUILD.bazel @@ -0,0 +1,30 @@ +# Copyright 2023 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. + +""" +Provides proto_library target +Exports grpc service config +""" +load ("@rules_proto//proto:defs.bzl", "proto_library") + +# This is an API workspace, having public visibility by default makes perfect sense. +package(default_visibility = ["//visibility:public"]) + +proto_library( + name = "showcase_proto_extended", + srcs = [ ":wicked.proto" ], + deps = [ + "@com_google_googleapis//google/api:client_proto", + ] +) \ No newline at end of file diff --git a/showcase/gapic-showcase-extended/proto/wicked.proto b/showcase/gapic-showcase-extended/proto/wicked.proto new file mode 100644 index 0000000000..2d3ca29421 --- /dev/null +++ b/showcase/gapic-showcase-extended/proto/wicked.proto @@ -0,0 +1,49 @@ +// Copyright 2018 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +import "google/api/client.proto"; + +package google.showcase.v1beta1; + +option go_package = "github.com/googleapis/gapic-showcase/server/genproto"; +option java_package = "com.google.showcase.v1beta1"; +option java_multiple_files = true; +option ruby_package = "Google::Showcase::V1beta1"; + +// This service is used to show a Service with either non-enabled or non-eligible +// RPCs for HttpJson (Http 1.1). +// Non-Enabled: Missing the (google.api.http) annotation to enabled it +// Non-Eligible: BIDI and Client side streaming are not supported with Http 1.1 +// Service name is reference to `No REST for the Wicked` (Credit: @BurkeDavison) +service Wicked { + // This service is meant to only run locally on the port 7469 (keypad digits + // for "show"). + option (google.api.default_host) = "localhost:7469"; + + rpc CraftEvilPlan(EvilRequest) returns (EvilResponse); + + rpc BrainstormEvilPlans(stream EvilRequest) returns (stream EvilResponse); + + rpc PersuadeEvilPlan(stream EvilRequest) returns (EvilResponse); +} + +message EvilRequest { + string malicious_idea = 1; +} + +message EvilResponse { + string malicious_plan = 1; +} \ No newline at end of file diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/compliance/create/SyncCreateSetCredentialsProvider1.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/compliance/create/SyncCreateComposeTransport.java similarity index 80% rename from showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/compliance/create/SyncCreateSetCredentialsProvider1.java rename to showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/compliance/create/SyncCreateComposeTransport.java index f28602378a..a2b9dca59d 100644 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/compliance/create/SyncCreateSetCredentialsProvider1.java +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/compliance/create/SyncCreateComposeTransport.java @@ -16,17 +16,17 @@ package com.google.showcase.v1beta1.samples; -// [START localhost7469_v1beta1_generated_Compliance_Create_SetCredentialsProvider1_sync] +// [START localhost7469_v1beta1_generated_Compliance_Create_ComposeTransport_sync] import com.google.showcase.v1beta1.ComplianceClient; import com.google.showcase.v1beta1.ComplianceSettings; -public class SyncCreateSetCredentialsProvider1 { +public class SyncCreateComposeTransport { public static void main(String[] args) throws Exception { - syncCreateSetCredentialsProvider1(); + syncCreateComposeTransport(); } - public static void syncCreateSetCredentialsProvider1() throws Exception { + public static void syncCreateComposeTransport() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -36,4 +36,4 @@ public static void syncCreateSetCredentialsProvider1() throws Exception { ComplianceClient complianceClient = ComplianceClient.create(complianceSettings); } } -// [END localhost7469_v1beta1_generated_Compliance_Create_SetCredentialsProvider1_sync] +// [END localhost7469_v1beta1_generated_Compliance_Create_ComposeTransport_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/echo/create/SyncCreateSetCredentialsProvider1.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/echo/create/SyncCreateComposeTransport.java similarity index 80% rename from showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/echo/create/SyncCreateSetCredentialsProvider1.java rename to showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/echo/create/SyncCreateComposeTransport.java index cb6c708da6..ee4819a5dc 100644 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/echo/create/SyncCreateSetCredentialsProvider1.java +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/echo/create/SyncCreateComposeTransport.java @@ -16,17 +16,17 @@ package com.google.showcase.v1beta1.samples; -// [START localhost7469_v1beta1_generated_Echo_Create_SetCredentialsProvider1_sync] +// [START localhost7469_v1beta1_generated_Echo_Create_ComposeTransport_sync] import com.google.showcase.v1beta1.EchoClient; import com.google.showcase.v1beta1.EchoSettings; -public class SyncCreateSetCredentialsProvider1 { +public class SyncCreateComposeTransport { public static void main(String[] args) throws Exception { - syncCreateSetCredentialsProvider1(); + syncCreateComposeTransport(); } - public static void syncCreateSetCredentialsProvider1() throws Exception { + public static void syncCreateComposeTransport() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -36,4 +36,4 @@ public static void syncCreateSetCredentialsProvider1() throws Exception { EchoClient echoClient = EchoClient.create(echoSettings); } } -// [END localhost7469_v1beta1_generated_Echo_Create_SetCredentialsProvider1_sync] +// [END localhost7469_v1beta1_generated_Echo_Create_ComposeTransport_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/identity/create/SyncCreateSetCredentialsProvider1.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/identity/create/SyncCreateComposeTransport.java similarity index 80% rename from showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/identity/create/SyncCreateSetCredentialsProvider1.java rename to showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/identity/create/SyncCreateComposeTransport.java index 4ef4b5c388..818c29b039 100644 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/identity/create/SyncCreateSetCredentialsProvider1.java +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/identity/create/SyncCreateComposeTransport.java @@ -16,17 +16,17 @@ package com.google.showcase.v1beta1.samples; -// [START localhost7469_v1beta1_generated_Identity_Create_SetCredentialsProvider1_sync] +// [START localhost7469_v1beta1_generated_Identity_Create_ComposeTransport_sync] import com.google.showcase.v1beta1.IdentityClient; import com.google.showcase.v1beta1.IdentitySettings; -public class SyncCreateSetCredentialsProvider1 { +public class SyncCreateComposeTransport { public static void main(String[] args) throws Exception { - syncCreateSetCredentialsProvider1(); + syncCreateComposeTransport(); } - public static void syncCreateSetCredentialsProvider1() throws Exception { + public static void syncCreateComposeTransport() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -36,4 +36,4 @@ public static void syncCreateSetCredentialsProvider1() throws Exception { IdentityClient identityClient = IdentityClient.create(identitySettings); } } -// [END localhost7469_v1beta1_generated_Identity_Create_SetCredentialsProvider1_sync] +// [END localhost7469_v1beta1_generated_Identity_Create_ComposeTransport_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/messaging/create/SyncCreateSetCredentialsProvider1.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/messaging/create/SyncCreateComposeTransport.java similarity index 80% rename from showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/messaging/create/SyncCreateSetCredentialsProvider1.java rename to showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/messaging/create/SyncCreateComposeTransport.java index ac54a1ca4e..807e0cdabb 100644 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/messaging/create/SyncCreateSetCredentialsProvider1.java +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/messaging/create/SyncCreateComposeTransport.java @@ -16,17 +16,17 @@ package com.google.showcase.v1beta1.samples; -// [START localhost7469_v1beta1_generated_Messaging_Create_SetCredentialsProvider1_sync] +// [START localhost7469_v1beta1_generated_Messaging_Create_ComposeTransport_sync] import com.google.showcase.v1beta1.MessagingClient; import com.google.showcase.v1beta1.MessagingSettings; -public class SyncCreateSetCredentialsProvider1 { +public class SyncCreateComposeTransport { public static void main(String[] args) throws Exception { - syncCreateSetCredentialsProvider1(); + syncCreateComposeTransport(); } - public static void syncCreateSetCredentialsProvider1() throws Exception { + public static void syncCreateComposeTransport() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -36,4 +36,4 @@ public static void syncCreateSetCredentialsProvider1() throws Exception { MessagingClient messagingClient = MessagingClient.create(messagingSettings); } } -// [END localhost7469_v1beta1_generated_Messaging_Create_SetCredentialsProvider1_sync] +// [END localhost7469_v1beta1_generated_Messaging_Create_ComposeTransport_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/sequenceservice/create/SyncCreateSetCredentialsProvider1.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/sequenceservice/create/SyncCreateComposeTransport.java similarity index 84% rename from showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/sequenceservice/create/SyncCreateSetCredentialsProvider1.java rename to showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/sequenceservice/create/SyncCreateComposeTransport.java index 5f6f2f63f8..19dc167fd4 100644 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/sequenceservice/create/SyncCreateSetCredentialsProvider1.java +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/sequenceservice/create/SyncCreateComposeTransport.java @@ -16,17 +16,17 @@ package com.google.showcase.v1beta1.samples; -// [START localhost7469_v1beta1_generated_SequenceService_Create_SetCredentialsProvider1_sync] +// [START localhost7469_v1beta1_generated_SequenceService_Create_ComposeTransport_sync] import com.google.showcase.v1beta1.SequenceServiceClient; import com.google.showcase.v1beta1.SequenceServiceSettings; -public class SyncCreateSetCredentialsProvider1 { +public class SyncCreateComposeTransport { public static void main(String[] args) throws Exception { - syncCreateSetCredentialsProvider1(); + syncCreateComposeTransport(); } - public static void syncCreateSetCredentialsProvider1() throws Exception { + public static void syncCreateComposeTransport() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -38,4 +38,4 @@ public static void syncCreateSetCredentialsProvider1() throws Exception { SequenceServiceClient.create(sequenceServiceSettings); } } -// [END localhost7469_v1beta1_generated_SequenceService_Create_SetCredentialsProvider1_sync] +// [END localhost7469_v1beta1_generated_SequenceService_Create_ComposeTransport_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/stub/wickedstubsettings/craftevilplan/SyncCraftEvilPlan.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/stub/wickedstubsettings/craftevilplan/SyncCraftEvilPlan.java new file mode 100644 index 0000000000..de6207f682 --- /dev/null +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/stub/wickedstubsettings/craftevilplan/SyncCraftEvilPlan.java @@ -0,0 +1,48 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1.stub.samples; + +// [START localhost7469_v1beta1_generated_WickedStubSettings_CraftEvilPlan_sync] +import com.google.showcase.v1beta1.stub.WickedStubSettings; +import java.time.Duration; + +public class SyncCraftEvilPlan { + + public static void main(String[] args) throws Exception { + syncCraftEvilPlan(); + } + + public static void syncCraftEvilPlan() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + WickedStubSettings.Builder wickedSettingsBuilder = WickedStubSettings.newBuilder(); + wickedSettingsBuilder + .craftEvilPlanSettings() + .setRetrySettings( + wickedSettingsBuilder + .craftEvilPlanSettings() + .getRetrySettings() + .toBuilder() + .setTotalTimeout(Duration.ofSeconds(30)) + .build()); + WickedStubSettings wickedSettings = wickedSettingsBuilder.build(); + } +} +// [END localhost7469_v1beta1_generated_WickedStubSettings_CraftEvilPlan_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/testing/create/SyncCreateSetCredentialsProvider1.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/testing/create/SyncCreateComposeTransport.java similarity index 80% rename from showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/testing/create/SyncCreateSetCredentialsProvider1.java rename to showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/testing/create/SyncCreateComposeTransport.java index 98fb47f1f2..11113a5693 100644 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/testing/create/SyncCreateSetCredentialsProvider1.java +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/testing/create/SyncCreateComposeTransport.java @@ -16,17 +16,17 @@ package com.google.showcase.v1beta1.samples; -// [START localhost7469_v1beta1_generated_Testing_Create_SetCredentialsProvider1_sync] +// [START localhost7469_v1beta1_generated_Testing_Create_ComposeTransport_sync] import com.google.showcase.v1beta1.TestingClient; import com.google.showcase.v1beta1.TestingSettings; -public class SyncCreateSetCredentialsProvider1 { +public class SyncCreateComposeTransport { public static void main(String[] args) throws Exception { - syncCreateSetCredentialsProvider1(); + syncCreateComposeTransport(); } - public static void syncCreateSetCredentialsProvider1() throws Exception { + public static void syncCreateComposeTransport() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -36,4 +36,4 @@ public static void syncCreateSetCredentialsProvider1() throws Exception { TestingClient testingClient = TestingClient.create(testingSettings); } } -// [END localhost7469_v1beta1_generated_Testing_Create_SetCredentialsProvider1_sync] +// [END localhost7469_v1beta1_generated_Testing_Create_ComposeTransport_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/brainstormevilplans/AsyncBrainstormEvilPlans.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/brainstormevilplans/AsyncBrainstormEvilPlans.java new file mode 100644 index 0000000000..8bcb58afbb --- /dev/null +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/brainstormevilplans/AsyncBrainstormEvilPlans.java @@ -0,0 +1,49 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1.samples; + +// [START localhost7469_v1beta1_generated_Wicked_BrainstormEvilPlans_async] +import com.google.api.gax.rpc.BidiStream; +import com.google.showcase.v1beta1.EvilRequest; +import com.google.showcase.v1beta1.EvilResponse; +import com.google.showcase.v1beta1.WickedClient; + +public class AsyncBrainstormEvilPlans { + + public static void main(String[] args) throws Exception { + asyncBrainstormEvilPlans(); + } + + public static void asyncBrainstormEvilPlans() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + try (WickedClient wickedClient = WickedClient.create()) { + BidiStream bidiStream = + wickedClient.brainstormEvilPlansCallable().call(); + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + bidiStream.send(request); + for (EvilResponse response : bidiStream) { + // Do something when a response is received. + } + } + } +} +// [END localhost7469_v1beta1_generated_Wicked_BrainstormEvilPlans_async] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/AsyncCraftEvilPlan.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/AsyncCraftEvilPlan.java new file mode 100644 index 0000000000..8be0e67e7c --- /dev/null +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/AsyncCraftEvilPlan.java @@ -0,0 +1,46 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1.samples; + +// [START localhost7469_v1beta1_generated_Wicked_CraftEvilPlan_async] +import com.google.api.core.ApiFuture; +import com.google.showcase.v1beta1.EvilRequest; +import com.google.showcase.v1beta1.EvilResponse; +import com.google.showcase.v1beta1.WickedClient; + +public class AsyncCraftEvilPlan { + + public static void main(String[] args) throws Exception { + asyncCraftEvilPlan(); + } + + public static void asyncCraftEvilPlan() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + try (WickedClient wickedClient = WickedClient.create()) { + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + ApiFuture future = wickedClient.craftEvilPlanCallable().futureCall(request); + // Do something. + EvilResponse response = future.get(); + } + } +} +// [END localhost7469_v1beta1_generated_Wicked_CraftEvilPlan_async] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/SyncCraftEvilPlan.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/SyncCraftEvilPlan.java new file mode 100644 index 0000000000..4b7aeb0f9c --- /dev/null +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/SyncCraftEvilPlan.java @@ -0,0 +1,43 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1.samples; + +// [START localhost7469_v1beta1_generated_Wicked_CraftEvilPlan_sync] +import com.google.showcase.v1beta1.EvilRequest; +import com.google.showcase.v1beta1.EvilResponse; +import com.google.showcase.v1beta1.WickedClient; + +public class SyncCraftEvilPlan { + + public static void main(String[] args) throws Exception { + syncCraftEvilPlan(); + } + + public static void syncCraftEvilPlan() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + try (WickedClient wickedClient = WickedClient.create()) { + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + EvilResponse response = wickedClient.craftEvilPlan(request); + } + } +} +// [END localhost7469_v1beta1_generated_Wicked_CraftEvilPlan_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetCredentialsProvider.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetCredentialsProvider.java new file mode 100644 index 0000000000..c4eb08016b --- /dev/null +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetCredentialsProvider.java @@ -0,0 +1,44 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1.samples; + +// [START localhost7469_v1beta1_generated_Wicked_Create_SetCredentialsProvider_sync] +import com.google.api.gax.core.FixedCredentialsProvider; +import com.google.showcase.v1beta1.WickedClient; +import com.google.showcase.v1beta1.WickedSettings; +import com.google.showcase.v1beta1.myCredentials; + +public class SyncCreateSetCredentialsProvider { + + public static void main(String[] args) throws Exception { + syncCreateSetCredentialsProvider(); + } + + public static void syncCreateSetCredentialsProvider() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + WickedSettings wickedSettings = + WickedSettings.newBuilder() + .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials)) + .build(); + WickedClient wickedClient = WickedClient.create(wickedSettings); + } +} +// [END localhost7469_v1beta1_generated_Wicked_Create_SetCredentialsProvider_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetEndpoint.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetEndpoint.java new file mode 100644 index 0000000000..bff6d56f2b --- /dev/null +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetEndpoint.java @@ -0,0 +1,40 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1.samples; + +// [START localhost7469_v1beta1_generated_Wicked_Create_SetEndpoint_sync] +import com.google.showcase.v1beta1.WickedClient; +import com.google.showcase.v1beta1.WickedSettings; +import com.google.showcase.v1beta1.myEndpoint; + +public class SyncCreateSetEndpoint { + + public static void main(String[] args) throws Exception { + syncCreateSetEndpoint(); + } + + public static void syncCreateSetEndpoint() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + WickedSettings wickedSettings = WickedSettings.newBuilder().setEndpoint(myEndpoint).build(); + WickedClient wickedClient = WickedClient.create(wickedSettings); + } +} +// [END localhost7469_v1beta1_generated_Wicked_Create_SetEndpoint_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/persuadeevilplan/AsyncPersuadeEvilPlan.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/persuadeevilplan/AsyncPersuadeEvilPlan.java new file mode 100644 index 0000000000..88d9d4f18e --- /dev/null +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/persuadeevilplan/AsyncPersuadeEvilPlan.java @@ -0,0 +1,63 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1.samples; + +// [START localhost7469_v1beta1_generated_Wicked_PersuadeEvilPlan_async] +import com.google.api.gax.rpc.ApiStreamObserver; +import com.google.showcase.v1beta1.EvilRequest; +import com.google.showcase.v1beta1.EvilResponse; +import com.google.showcase.v1beta1.WickedClient; + +public class AsyncPersuadeEvilPlan { + + public static void main(String[] args) throws Exception { + asyncPersuadeEvilPlan(); + } + + public static void asyncPersuadeEvilPlan() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + try (WickedClient wickedClient = WickedClient.create()) { + ApiStreamObserver responseObserver = + new ApiStreamObserver() { + @Override + public void onNext(EvilResponse response) { + // Do something when a response is received. + } + + @Override + public void onError(Throwable t) { + // Add error-handling + } + + @Override + public void onCompleted() { + // Do something when complete. + } + }; + ApiStreamObserver requestObserver = + wickedClient.persuadeEvilPlan().clientStreamingCall(responseObserver); + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + requestObserver.onNext(request); + } + } +} +// [END localhost7469_v1beta1_generated_Wicked_PersuadeEvilPlan_async] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wickedsettings/craftevilplan/SyncCraftEvilPlan.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wickedsettings/craftevilplan/SyncCraftEvilPlan.java new file mode 100644 index 0000000000..ee9bc599ad --- /dev/null +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wickedsettings/craftevilplan/SyncCraftEvilPlan.java @@ -0,0 +1,48 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1.samples; + +// [START localhost7469_v1beta1_generated_WickedSettings_CraftEvilPlan_sync] +import com.google.showcase.v1beta1.WickedSettings; +import java.time.Duration; + +public class SyncCraftEvilPlan { + + public static void main(String[] args) throws Exception { + syncCraftEvilPlan(); + } + + public static void syncCraftEvilPlan() throws Exception { + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in + // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library + WickedSettings.Builder wickedSettingsBuilder = WickedSettings.newBuilder(); + wickedSettingsBuilder + .craftEvilPlanSettings() + .setRetrySettings( + wickedSettingsBuilder + .craftEvilPlanSettings() + .getRetrySettings() + .toBuilder() + .setTotalTimeout(Duration.ofSeconds(30)) + .build()); + WickedSettings wickedSettings = wickedSettingsBuilder.build(); + } +} +// [END localhost7469_v1beta1_generated_WickedSettings_CraftEvilPlan_sync] diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedClient.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedClient.java new file mode 100644 index 0000000000..7e37206d81 --- /dev/null +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedClient.java @@ -0,0 +1,299 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1; + +import com.google.api.core.BetaApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.rpc.BidiStreamingCallable; +import com.google.api.gax.rpc.ClientStreamingCallable; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.showcase.v1beta1.stub.WickedStub; +import com.google.showcase.v1beta1.stub.WickedStubSettings; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * Service Description: This service is used to show a Service with either non-enabled or + * non-eligible RPCs for HttpJson (Http 1.1). Non-Enabled: Missing the (google.api.http) annotation + * to enabled it Non-Eligible: BIDI and Client side streaming are not supported with Http 1.1 + * Service name is reference to `No REST for the Wicked` (Credit: {@literal @}BurkeDavison) + * + *

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
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (WickedClient wickedClient = WickedClient.create()) {
+ *   EvilRequest request =
+ *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+ *   EvilResponse response = wickedClient.craftEvilPlan(request);
+ * }
+ * }
+ * + *

Note: close() needs to be called on the WickedClient 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 WickedSettings to create(). + * For example: + * + *

To customize credentials: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings wickedSettings =
+ *     WickedSettings.newBuilder()
+ *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
+ *         .build();
+ * WickedClient wickedClient = WickedClient.create(wickedSettings);
+ * }
+ * + *

To customize the endpoint: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings wickedSettings = WickedSettings.newBuilder().setEndpoint(myEndpoint).build();
+ * WickedClient wickedClient = WickedClient.create(wickedSettings);
+ * }
+ * + *

Please refer to the GitHub repository's samples for more quickstart code snippets. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class WickedClient implements BackgroundResource { + private final WickedSettings settings; + private final WickedStub stub; + + /** Constructs an instance of WickedClient with default settings. */ + public static final WickedClient create() throws IOException { + return create(WickedSettings.newBuilder().build()); + } + + /** + * Constructs an instance of WickedClient, 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 WickedClient create(WickedSettings settings) throws IOException { + return new WickedClient(settings); + } + + /** + * Constructs an instance of WickedClient, using the given stub for making calls. This is for + * advanced usage - prefer using create(WickedSettings). + */ + public static final WickedClient create(WickedStub stub) { + return new WickedClient(stub); + } + + /** + * Constructs an instance of WickedClient, 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 WickedClient(WickedSettings settings) throws IOException { + this.settings = settings; + this.stub = ((WickedStubSettings) settings.getStubSettings()).createStub(); + } + + protected WickedClient(WickedStub stub) { + this.settings = null; + this.stub = stub; + } + + public final WickedSettings getSettings() { + return settings; + } + + public WickedStub getStub() { + return stub; + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   EvilResponse response = wickedClient.craftEvilPlan(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 EvilResponse craftEvilPlan(EvilRequest request) { + return craftEvilPlanCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   ApiFuture future = wickedClient.craftEvilPlanCallable().futureCall(request);
+   *   // Do something.
+   *   EvilResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable craftEvilPlanCallable() { + return stub.craftEvilPlanCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   BidiStream bidiStream =
+   *       wickedClient.brainstormEvilPlansCallable().call();
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   bidiStream.send(request);
+   *   for (EvilResponse response : bidiStream) {
+   *     // Do something when a response is received.
+   *   }
+   * }
+   * }
+ */ + public final BidiStreamingCallable brainstormEvilPlansCallable() { + return stub.brainstormEvilPlansCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   ApiStreamObserver responseObserver =
+   *       new ApiStreamObserver() {
+   *         {@literal @}Override
+   *         public void onNext(EvilResponse response) {
+   *           // Do something when a response is received.
+   *         }
+   *
+   *         {@literal @}Override
+   *         public void onError(Throwable t) {
+   *           // Add error-handling
+   *         }
+   *
+   *         {@literal @}Override
+   *         public void onCompleted() {
+   *           // Do something when complete.
+   *         }
+   *       };
+   *   ApiStreamObserver requestObserver =
+   *       wickedClient.persuadeEvilPlan().clientStreamingCall(responseObserver);
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   requestObserver.onNext(request);
+   * }
+   * }
+ */ + public final ClientStreamingCallable persuadeEvilPlanCallable() { + return stub.persuadeEvilPlanCallable(); + } + + @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); + } +} diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedSettings.java new file mode 100644 index 0000000000..0eb6ba54be --- /dev/null +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedSettings.java @@ -0,0 +1,207 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1; + +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.StreamingCallSettings; +import com.google.api.gax.rpc.StubSettings; +import com.google.api.gax.rpc.TransportChannelProvider; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.showcase.v1beta1.stub.WickedStubSettings; +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 WickedClient}. + * + *

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

    + *
  • The default service address (localhost) and default port (7469) 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 craftEvilPlan to 30 seconds: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings.Builder wickedSettingsBuilder = WickedSettings.newBuilder();
+ * wickedSettingsBuilder
+ *     .craftEvilPlanSettings()
+ *     .setRetrySettings(
+ *         wickedSettingsBuilder
+ *             .craftEvilPlanSettings()
+ *             .getRetrySettings()
+ *             .toBuilder()
+ *             .setTotalTimeout(Duration.ofSeconds(30))
+ *             .build());
+ * WickedSettings wickedSettings = wickedSettingsBuilder.build();
+ * }
+ */ +@BetaApi +@Generated("by gapic-generator-java") +public class WickedSettings extends ClientSettings { + + /** Returns the object with the settings used for calls to craftEvilPlan. */ + public UnaryCallSettings craftEvilPlanSettings() { + return ((WickedStubSettings) getStubSettings()).craftEvilPlanSettings(); + } + + /** Returns the object with the settings used for calls to brainstormEvilPlans. */ + public StreamingCallSettings brainstormEvilPlansSettings() { + return ((WickedStubSettings) getStubSettings()).brainstormEvilPlansSettings(); + } + + /** Returns the object with the settings used for calls to persuadeEvilPlan. */ + public StreamingCallSettings persuadeEvilPlanSettings() { + return ((WickedStubSettings) getStubSettings()).persuadeEvilPlanSettings(); + } + + public static final WickedSettings create(WickedStubSettings stub) throws IOException { + return new WickedSettings.Builder(stub.toBuilder()).build(); + } + + /** Returns a builder for the default ExecutorProvider for this service. */ + public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { + return WickedStubSettings.defaultExecutorProviderBuilder(); + } + + /** Returns the default service endpoint. */ + public static String getDefaultEndpoint() { + return WickedStubSettings.getDefaultEndpoint(); + } + + /** Returns the default service scopes. */ + public static List getDefaultServiceScopes() { + return WickedStubSettings.getDefaultServiceScopes(); + } + + /** Returns a builder for the default credentials for this service. */ + public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { + return WickedStubSettings.defaultCredentialsProviderBuilder(); + } + + /** Returns a builder for the default gRPC ChannelProvider for this service. */ + public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { + return WickedStubSettings.defaultGrpcTransportProviderBuilder(); + } + + public static TransportChannelProvider defaultTransportChannelProvider() { + return WickedStubSettings.defaultTransportChannelProvider(); + } + + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return WickedStubSettings.defaultApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC 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 WickedSettings(Builder settingsBuilder) throws IOException { + super(settingsBuilder); + } + + /** Builder for WickedSettings. */ + public static class Builder extends ClientSettings.Builder { + + protected Builder() throws IOException { + this(((ClientContext) null)); + } + + protected Builder(ClientContext clientContext) { + super(WickedStubSettings.newBuilder(clientContext)); + } + + protected Builder(WickedSettings settings) { + super(settings.getStubSettings().toBuilder()); + } + + protected Builder(WickedStubSettings.Builder stubSettings) { + super(stubSettings); + } + + private static Builder createDefault() { + return new Builder(WickedStubSettings.newBuilder()); + } + + public WickedStubSettings.Builder getStubSettingsBuilder() { + return ((WickedStubSettings.Builder) getStubSettings()); + } + + /** + * 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) { + super.applyToAllUnaryMethods( + getStubSettingsBuilder().unaryMethodSettingsBuilders(), settingsUpdater); + return this; + } + + /** Returns the builder for the settings used for calls to craftEvilPlan. */ + public UnaryCallSettings.Builder craftEvilPlanSettings() { + return getStubSettingsBuilder().craftEvilPlanSettings(); + } + + /** Returns the builder for the settings used for calls to brainstormEvilPlans. */ + public StreamingCallSettings.Builder brainstormEvilPlansSettings() { + return getStubSettingsBuilder().brainstormEvilPlansSettings(); + } + + /** Returns the builder for the settings used for calls to persuadeEvilPlan. */ + public StreamingCallSettings.Builder persuadeEvilPlanSettings() { + return getStubSettingsBuilder().persuadeEvilPlanSettings(); + } + + @Override + public WickedSettings build() throws IOException { + return new WickedSettings(this); + } + } +} diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json index 31f51f17ef..79c2367e46 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json @@ -5,202 +5,19 @@ "protoPackage": "google.showcase.v1beta1", "libraryPackage": "com.google.showcase.v1beta1", "services": { - "Compliance": { + "Wicked": { "clients": { "grpc": { - "libraryClient": "ComplianceClient", + "libraryClient": "WickedClient", "rpcs": { - "GetEnum": { - "methods": ["getEnum", "getEnumCallable"] + "BrainstormEvilPlans": { + "methods": ["brainstormEvilPlansCallable"] }, - "RepeatDataBody": { - "methods": ["repeatDataBody", "repeatDataBodyCallable"] + "CraftEvilPlan": { + "methods": ["craftEvilPlan", "craftEvilPlanCallable"] }, - "RepeatDataBodyInfo": { - "methods": ["repeatDataBodyInfo", "repeatDataBodyInfoCallable"] - }, - "RepeatDataBodyPatch": { - "methods": ["repeatDataBodyPatch", "repeatDataBodyPatchCallable"] - }, - "RepeatDataBodyPut": { - "methods": ["repeatDataBodyPut", "repeatDataBodyPutCallable"] - }, - "RepeatDataPathResource": { - "methods": ["repeatDataPathResource", "repeatDataPathResourceCallable"] - }, - "RepeatDataPathTrailingResource": { - "methods": ["repeatDataPathTrailingResource", "repeatDataPathTrailingResourceCallable"] - }, - "RepeatDataQuery": { - "methods": ["repeatDataQuery", "repeatDataQueryCallable"] - }, - "RepeatDataSimplePath": { - "methods": ["repeatDataSimplePath", "repeatDataSimplePathCallable"] - }, - "VerifyEnum": { - "methods": ["verifyEnum", "verifyEnumCallable"] - } - } - } - } - }, - "Echo": { - "clients": { - "grpc": { - "libraryClient": "EchoClient", - "rpcs": { - "Block": { - "methods": ["block", "blockCallable"] - }, - "Chat": { - "methods": ["chatCallable"] - }, - "Collect": { - "methods": ["collectCallable"] - }, - "Echo": { - "methods": ["echo", "echoCallable"] - }, - "Expand": { - "methods": ["expandCallable"] - }, - "PagedExpand": { - "methods": ["pagedExpand", "pagedExpandPagedCallable", "pagedExpandCallable"] - }, - "PagedExpandLegacy": { - "methods": ["pagedExpandLegacy", "pagedExpandLegacyCallable"] - }, - "PagedExpandLegacyMapped": { - "methods": ["pagedExpandLegacyMapped", "pagedExpandLegacyMappedPagedCallable", "pagedExpandLegacyMappedCallable"] - }, - "Wait": { - "methods": ["waitAsync", "waitOperationCallable", "waitCallable"] - } - } - } - } - }, - "Identity": { - "clients": { - "grpc": { - "libraryClient": "IdentityClient", - "rpcs": { - "CreateUser": { - "methods": ["createUser", "createUser", "createUser", "createUserCallable"] - }, - "DeleteUser": { - "methods": ["deleteUser", "deleteUser", "deleteUser", "deleteUserCallable"] - }, - "GetUser": { - "methods": ["getUser", "getUser", "getUser", "getUserCallable"] - }, - "ListUsers": { - "methods": ["listUsers", "listUsersPagedCallable", "listUsersCallable"] - }, - "UpdateUser": { - "methods": ["updateUser", "updateUserCallable"] - } - } - } - } - }, - "Messaging": { - "clients": { - "grpc": { - "libraryClient": "MessagingClient", - "rpcs": { - "Connect": { - "methods": ["connectCallable"] - }, - "CreateBlurb": { - "methods": ["createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurbCallable"] - }, - "CreateRoom": { - "methods": ["createRoom", "createRoom", "createRoomCallable"] - }, - "DeleteBlurb": { - "methods": ["deleteBlurb", "deleteBlurb", "deleteBlurb", "deleteBlurbCallable"] - }, - "DeleteRoom": { - "methods": ["deleteRoom", "deleteRoom", "deleteRoom", "deleteRoomCallable"] - }, - "GetBlurb": { - "methods": ["getBlurb", "getBlurb", "getBlurb", "getBlurbCallable"] - }, - "GetRoom": { - "methods": ["getRoom", "getRoom", "getRoom", "getRoomCallable"] - }, - "ListBlurbs": { - "methods": ["listBlurbs", "listBlurbs", "listBlurbs", "listBlurbs", "listBlurbsPagedCallable", "listBlurbsCallable"] - }, - "ListRooms": { - "methods": ["listRooms", "listRoomsPagedCallable", "listRoomsCallable"] - }, - "SearchBlurbs": { - "methods": ["searchBlurbsAsync", "searchBlurbsAsync", "searchBlurbsAsync", "searchBlurbsAsync", "searchBlurbsOperationCallable", "searchBlurbsCallable"] - }, - "SendBlurbs": { - "methods": ["sendBlurbsCallable"] - }, - "StreamBlurbs": { - "methods": ["streamBlurbsCallable"] - }, - "UpdateBlurb": { - "methods": ["updateBlurb", "updateBlurbCallable"] - }, - "UpdateRoom": { - "methods": ["updateRoom", "updateRoomCallable"] - } - } - } - } - }, - "SequenceService": { - "clients": { - "grpc": { - "libraryClient": "SequenceServiceClient", - "rpcs": { - "AttemptSequence": { - "methods": ["attemptSequence", "attemptSequence", "attemptSequence", "attemptSequenceCallable"] - }, - "CreateSequence": { - "methods": ["createSequence", "createSequence", "createSequenceCallable"] - }, - "GetSequenceReport": { - "methods": ["getSequenceReport", "getSequenceReport", "getSequenceReport", "getSequenceReportCallable"] - } - } - } - } - }, - "Testing": { - "clients": { - "grpc": { - "libraryClient": "TestingClient", - "rpcs": { - "CreateSession": { - "methods": ["createSession", "createSessionCallable"] - }, - "DeleteSession": { - "methods": ["deleteSession", "deleteSessionCallable"] - }, - "DeleteTest": { - "methods": ["deleteTest", "deleteTestCallable"] - }, - "GetSession": { - "methods": ["getSession", "getSessionCallable"] - }, - "ListSessions": { - "methods": ["listSessions", "listSessionsPagedCallable", "listSessionsCallable"] - }, - "ListTests": { - "methods": ["listTests", "listTestsPagedCallable", "listTestsCallable"] - }, - "ReportSession": { - "methods": ["reportSession", "reportSessionCallable"] - }, - "VerifyTest": { - "methods": ["verifyTest", "verifyTestCallable"] + "PersuadeEvilPlan": { + "methods": ["persuadeEvilPlanCallable"] } } } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java index be1926a090..6ed6bfdb3a 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java @@ -15,133 +15,16 @@ */ /** - * A client to Client Libraries Showcase API + * The interfaces provided are listed below, along with usage samples. * - *

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

======================= WickedClient ======================= * - *

======================= ComplianceClient ======================= + *

Service Description: This service is used to show a Service with either non-enabled or + * non-eligible RPCs for HttpJson (Http 1.1). Non-Enabled: Missing the (google.api.http) annotation + * to enabled it Non-Eligible: BIDI and Client side streaming are not supported with Http 1.1 + * Service name is reference to `No REST for the Wicked` (Credit: {@literal @}BurkeDavison) * - *

Service Description: This service is used to test that GAPICs implement various REST-related - * features correctly. This mostly means transcoding proto3 requests to REST format correctly for - * various types of HTTP annotations, but it also includes verifying that unknown (numeric) enums - * received by clients can be round-tripped correctly. - * - *

Sample for ComplianceClient: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * try (ComplianceClient complianceClient = ComplianceClient.create()) {
- *   RepeatRequest request =
- *       RepeatRequest.newBuilder()
- *           .setName("name3373707")
- *           .setInfo(ComplianceData.newBuilder().build())
- *           .setServerVerify(true)
- *           .setIntendedBindingUri("intendedBindingUri780142386")
- *           .setFInt32(-1143775883)
- *           .setFInt64(-1143775788)
- *           .setFDouble(-1239459382)
- *           .setPInt32(-858673665)
- *           .setPInt64(-858673570)
- *           .setPDouble(-991225216)
- *           .build();
- *   RepeatResponse response = complianceClient.repeatDataBody(request);
- * }
- * }
- * - *

======================= EchoClient ======================= - * - *

Service Description: This service is used showcase the four main types of rpcs - unary, server - * side streaming, client side streaming, and bidirectional streaming. This service also exposes - * methods that explicitly implement server delay, and paginated calls. Set the 'showcase-trailer' - * metadata key on any method to have the values echoed in the response trailers. Set the - * 'x-goog-request-params' metadata key on any method to have the values echoed in the response - * headers. - * - *

Sample for EchoClient: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * try (EchoClient echoClient = EchoClient.create()) {
- *   EchoRequest request =
- *       EchoRequest.newBuilder()
- *           .setSeverity(Severity.forNumber(0))
- *           .setHeader("header-1221270899")
- *           .setOtherHeader("otherHeader-2026585667")
- *           .build();
- *   EchoResponse response = echoClient.echo(request);
- * }
- * }
- * - *

======================= IdentityClient ======================= - * - *

Service Description: A simple identity service. - * - *

Sample for IdentityClient: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * try (IdentityClient identityClient = IdentityClient.create()) {
- *   String displayName = "displayName1714148973";
- *   String email = "email96619420";
- *   User response = identityClient.createUser(displayName, email);
- * }
- * }
- * - *

======================= MessagingClient ======================= - * - *

Service Description: A simple messaging service that implements chat rooms and profile posts. - * - *

This messaging service showcases the features that API clients generated by gapic-generators - * implement. - * - *

Sample for MessagingClient: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * try (MessagingClient messagingClient = MessagingClient.create()) {
- *   String displayName = "displayName1714148973";
- *   String description = "description-1724546052";
- *   Room response = messagingClient.createRoom(displayName, description);
- * }
- * }
- * - *

======================= SequenceServiceClient ======================= - * - *

Sample for SequenceServiceClient: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * try (SequenceServiceClient sequenceServiceClient = SequenceServiceClient.create()) {
- *   Sequence sequence = Sequence.newBuilder().build();
- *   Sequence response = sequenceServiceClient.createSequence(sequence);
- * }
- * }
- * - *

======================= TestingClient ======================= - * - *

Service Description: A service to facilitate running discrete sets of tests against Showcase. - * - *

Sample for TestingClient: + *

Sample for WickedClient: * *

{@code
  * // This snippet has been automatically generated and should be regarded as a code template only.
@@ -149,10 +32,10 @@
  * // - It may require correct/in-range values for request initialization.
  * // - It may require specifying regional endpoints when creating the service client as shown in
  * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * try (TestingClient testingClient = TestingClient.create()) {
- *   CreateSessionRequest request =
- *       CreateSessionRequest.newBuilder().setSession(Session.newBuilder().build()).build();
- *   Session response = testingClient.createSession(request);
+ * try (WickedClient wickedClient = WickedClient.create()) {
+ *   EvilRequest request =
+ *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+ *   EvilResponse response = wickedClient.craftEvilPlan(request);
  * }
  * }
*/ diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedCallableFactory.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedCallableFactory.java new file mode 100644 index 0000000000..a98141bc97 --- /dev/null +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedCallableFactory.java @@ -0,0 +1,115 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1.stub; + +import com.google.api.core.BetaApi; +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 Wicked service API. + * + *

This class is for advanced usage. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class GrpcWickedCallableFactory 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/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedStub.java new file mode 100644 index 0000000000..88cd1ff457 --- /dev/null +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedStub.java @@ -0,0 +1,198 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1.stub; + +import com.google.api.core.BetaApi; +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.BidiStreamingCallable; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.ClientStreamingCallable; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.longrunning.stub.GrpcOperationsStub; +import com.google.showcase.v1beta1.EvilRequest; +import com.google.showcase.v1beta1.EvilResponse; +import io.grpc.MethodDescriptor; +import io.grpc.protobuf.ProtoUtils; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * gRPC stub implementation for the Wicked service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class GrpcWickedStub extends WickedStub { + private static final MethodDescriptor craftEvilPlanMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.showcase.v1beta1.Wicked/CraftEvilPlan") + .setRequestMarshaller(ProtoUtils.marshaller(EvilRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(EvilResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + brainstormEvilPlansMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.BIDI_STREAMING) + .setFullMethodName("google.showcase.v1beta1.Wicked/BrainstormEvilPlans") + .setRequestMarshaller(ProtoUtils.marshaller(EvilRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(EvilResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + persuadeEvilPlanMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.CLIENT_STREAMING) + .setFullMethodName("google.showcase.v1beta1.Wicked/PersuadeEvilPlan") + .setRequestMarshaller(ProtoUtils.marshaller(EvilRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(EvilResponse.getDefaultInstance())) + .build(); + + private final UnaryCallable craftEvilPlanCallable; + private final BidiStreamingCallable brainstormEvilPlansCallable; + private final ClientStreamingCallable persuadeEvilPlanCallable; + + private final BackgroundResource backgroundResources; + private final GrpcOperationsStub operationsStub; + private final GrpcStubCallableFactory callableFactory; + + public static final GrpcWickedStub create(WickedStubSettings settings) throws IOException { + return new GrpcWickedStub(settings, ClientContext.create(settings)); + } + + public static final GrpcWickedStub create(ClientContext clientContext) throws IOException { + return new GrpcWickedStub(WickedStubSettings.newBuilder().build(), clientContext); + } + + public static final GrpcWickedStub create( + ClientContext clientContext, GrpcStubCallableFactory callableFactory) throws IOException { + return new GrpcWickedStub( + WickedStubSettings.newBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of GrpcWickedStub, 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 GrpcWickedStub(WickedStubSettings settings, ClientContext clientContext) + throws IOException { + this(settings, clientContext, new GrpcWickedCallableFactory()); + } + + /** + * Constructs an instance of GrpcWickedStub, 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 GrpcWickedStub( + WickedStubSettings settings, + ClientContext clientContext, + GrpcStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + this.operationsStub = GrpcOperationsStub.create(clientContext, callableFactory); + + GrpcCallSettings craftEvilPlanTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(craftEvilPlanMethodDescriptor) + .build(); + GrpcCallSettings brainstormEvilPlansTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(brainstormEvilPlansMethodDescriptor) + .build(); + GrpcCallSettings persuadeEvilPlanTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(persuadeEvilPlanMethodDescriptor) + .build(); + + this.craftEvilPlanCallable = + callableFactory.createUnaryCallable( + craftEvilPlanTransportSettings, settings.craftEvilPlanSettings(), clientContext); + this.brainstormEvilPlansCallable = + callableFactory.createBidiStreamingCallable( + brainstormEvilPlansTransportSettings, + settings.brainstormEvilPlansSettings(), + clientContext); + this.persuadeEvilPlanCallable = + callableFactory.createClientStreamingCallable( + persuadeEvilPlanTransportSettings, settings.persuadeEvilPlanSettings(), clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + public GrpcOperationsStub getOperationsStub() { + return operationsStub; + } + + @Override + public UnaryCallable craftEvilPlanCallable() { + return craftEvilPlanCallable; + } + + @Override + public BidiStreamingCallable brainstormEvilPlansCallable() { + return brainstormEvilPlansCallable; + } + + @Override + public ClientStreamingCallable persuadeEvilPlanCallable() { + return persuadeEvilPlanCallable; + } + + @Override + public final void close() { + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } + } + + @Override + public void shutdown() { + backgroundResources.shutdown(); + } + + @Override + public boolean isShutdown() { + return backgroundResources.isShutdown(); + } + + @Override + public boolean isTerminated() { + return backgroundResources.isTerminated(); + } + + @Override + public void shutdownNow() { + backgroundResources.shutdownNow(); + } + + @Override + public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { + return backgroundResources.awaitTermination(duration, unit); + } +} diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStub.java new file mode 100644 index 0000000000..feb2240a60 --- /dev/null +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStub.java @@ -0,0 +1,52 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1.stub; + +import com.google.api.core.BetaApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.rpc.BidiStreamingCallable; +import com.google.api.gax.rpc.ClientStreamingCallable; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.showcase.v1beta1.EvilRequest; +import com.google.showcase.v1beta1.EvilResponse; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * Base stub class for the Wicked service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@BetaApi +@Generated("by gapic-generator-java") +public abstract class WickedStub implements BackgroundResource { + + public UnaryCallable craftEvilPlanCallable() { + throw new UnsupportedOperationException("Not implemented: craftEvilPlanCallable()"); + } + + public BidiStreamingCallable brainstormEvilPlansCallable() { + throw new UnsupportedOperationException("Not implemented: brainstormEvilPlansCallable()"); + } + + public ClientStreamingCallable persuadeEvilPlanCallable() { + throw new UnsupportedOperationException("Not implemented: persuadeEvilPlanCallable()"); + } + + @Override + public abstract void close(); +} diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStubSettings.java new file mode 100644 index 0000000000..22db29bd53 --- /dev/null +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStubSettings.java @@ -0,0 +1,301 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1.stub; + +import com.google.api.core.ApiFunction; +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.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.StreamingCallSettings; +import com.google.api.gax.rpc.StubSettings; +import com.google.api.gax.rpc.TransportChannelProvider; +import com.google.api.gax.rpc.UnaryCallSettings; +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.showcase.v1beta1.EvilRequest; +import com.google.showcase.v1beta1.EvilResponse; +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 WickedStub}. + * + *

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

    + *
  • The default service address (localhost) and default port (7469) 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 craftEvilPlan to 30 seconds: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedStubSettings.Builder wickedSettingsBuilder = WickedStubSettings.newBuilder();
+ * wickedSettingsBuilder
+ *     .craftEvilPlanSettings()
+ *     .setRetrySettings(
+ *         wickedSettingsBuilder
+ *             .craftEvilPlanSettings()
+ *             .getRetrySettings()
+ *             .toBuilder()
+ *             .setTotalTimeout(Duration.ofSeconds(30))
+ *             .build());
+ * WickedStubSettings wickedSettings = wickedSettingsBuilder.build();
+ * }
+ */ +@BetaApi +@Generated("by gapic-generator-java") +public class WickedStubSettings extends StubSettings { + /** The default scopes of the service. */ + private static final ImmutableList DEFAULT_SERVICE_SCOPES = + ImmutableList.builder().build(); + + private final UnaryCallSettings craftEvilPlanSettings; + private final StreamingCallSettings brainstormEvilPlansSettings; + private final StreamingCallSettings persuadeEvilPlanSettings; + + /** Returns the object with the settings used for calls to craftEvilPlan. */ + public UnaryCallSettings craftEvilPlanSettings() { + return craftEvilPlanSettings; + } + + /** Returns the object with the settings used for calls to brainstormEvilPlans. */ + public StreamingCallSettings brainstormEvilPlansSettings() { + return brainstormEvilPlansSettings; + } + + /** Returns the object with the settings used for calls to persuadeEvilPlan. */ + public StreamingCallSettings persuadeEvilPlanSettings() { + return persuadeEvilPlanSettings; + } + + public WickedStub createStub() throws IOException { + if (getTransportChannelProvider() + .getTransportName() + .equals(GrpcTransportChannel.getGrpcTransportName())) { + return GrpcWickedStub.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 "localhost:7469"; + } + + /** Returns the default mTLS service endpoint. */ + public static String getDefaultMtlsEndpoint() { + return "localhost:7469"; + } + + /** 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) + .setUseJwtAccessWithScope(true); + } + + /** Returns a builder for the default gRPC 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 defaultGrpcApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken("gapic", GaxProperties.getLibraryVersion(WickedStubSettings.class)) + .setTransportToken( + GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); + } + + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return WickedStubSettings.defaultGrpcApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC 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 WickedStubSettings(Builder settingsBuilder) throws IOException { + super(settingsBuilder); + + craftEvilPlanSettings = settingsBuilder.craftEvilPlanSettings().build(); + brainstormEvilPlansSettings = settingsBuilder.brainstormEvilPlansSettings().build(); + persuadeEvilPlanSettings = settingsBuilder.persuadeEvilPlanSettings().build(); + } + + /** Builder for WickedStubSettings. */ + public static class Builder extends StubSettings.Builder { + private final ImmutableList> unaryMethodSettingsBuilders; + private final UnaryCallSettings.Builder craftEvilPlanSettings; + private final StreamingCallSettings.Builder + brainstormEvilPlansSettings; + private final StreamingCallSettings.Builder persuadeEvilPlanSettings; + private static final ImmutableMap> + RETRYABLE_CODE_DEFINITIONS; + + static { + ImmutableMap.Builder> definitions = + ImmutableMap.builder(); + definitions.put("no_retry_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().setRpcTimeoutMultiplier(1.0).build(); + definitions.put("no_retry_params", settings); + RETRY_PARAM_DEFINITIONS = definitions.build(); + } + + protected Builder() { + this(((ClientContext) null)); + } + + protected Builder(ClientContext clientContext) { + super(clientContext); + + craftEvilPlanSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + brainstormEvilPlansSettings = StreamingCallSettings.newBuilder(); + persuadeEvilPlanSettings = StreamingCallSettings.newBuilder(); + + unaryMethodSettingsBuilders = + ImmutableList.>of(craftEvilPlanSettings); + initDefaults(this); + } + + protected Builder(WickedStubSettings settings) { + super(settings); + + craftEvilPlanSettings = settings.craftEvilPlanSettings.toBuilder(); + brainstormEvilPlansSettings = settings.brainstormEvilPlansSettings.toBuilder(); + persuadeEvilPlanSettings = settings.persuadeEvilPlanSettings.toBuilder(); + + unaryMethodSettingsBuilders = + ImmutableList.>of(craftEvilPlanSettings); + } + + private static Builder createDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultTransportChannelProvider()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + + private static Builder initDefaults(Builder builder) { + builder + .craftEvilPlanSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_params")); + + return builder; + } + + /** + * 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) { + super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater); + return this; + } + + public ImmutableList> unaryMethodSettingsBuilders() { + return unaryMethodSettingsBuilders; + } + + /** Returns the builder for the settings used for calls to craftEvilPlan. */ + public UnaryCallSettings.Builder craftEvilPlanSettings() { + return craftEvilPlanSettings; + } + + /** Returns the builder for the settings used for calls to brainstormEvilPlans. */ + public StreamingCallSettings.Builder brainstormEvilPlansSettings() { + return brainstormEvilPlansSettings; + } + + /** Returns the builder for the settings used for calls to persuadeEvilPlan. */ + public StreamingCallSettings.Builder persuadeEvilPlanSettings() { + return persuadeEvilPlanSettings; + } + + @Override + public WickedStubSettings build() throws IOException { + return new WickedStubSettings(this); + } + } +} diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWicked.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWicked.java new file mode 100644 index 0000000000..94a2d21499 --- /dev/null +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWicked.java @@ -0,0 +1,59 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1; + +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 MockWicked implements MockGrpcService { + private final MockWickedImpl serviceImpl; + + public MockWicked() { + serviceImpl = new MockWickedImpl(); + } + + @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/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWickedImpl.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWickedImpl.java new file mode 100644 index 0000000000..0db01ba8a6 --- /dev/null +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWickedImpl.java @@ -0,0 +1,154 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1; + +import com.google.api.core.BetaApi; +import com.google.protobuf.AbstractMessage; +import com.google.showcase.v1beta1.WickedGrpc.WickedImplBase; +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 MockWickedImpl extends WickedImplBase { + private List requests; + private Queue responses; + + public MockWickedImpl() { + 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 craftEvilPlan(EvilRequest request, StreamObserver responseObserver) { + Object response = responses.poll(); + if (response instanceof EvilResponse) { + requests.add(request); + responseObserver.onNext(((EvilResponse) 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 CraftEvilPlan, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + EvilResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public StreamObserver brainstormEvilPlans( + final StreamObserver responseObserver) { + StreamObserver requestObserver = + new StreamObserver() { + @Override + public void onNext(EvilRequest value) { + requests.add(value); + final Object response = responses.remove(); + if (response instanceof EvilResponse) { + responseObserver.onNext(((EvilResponse) response)); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method BrainstormEvilPlans, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + EvilResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void onError(Throwable t) { + responseObserver.onError(t); + } + + @Override + public void onCompleted() { + responseObserver.onCompleted(); + } + }; + return requestObserver; + } + + @Override + public StreamObserver persuadeEvilPlan( + final StreamObserver responseObserver) { + StreamObserver requestObserver = + new StreamObserver() { + @Override + public void onNext(EvilRequest value) { + requests.add(value); + final Object response = responses.remove(); + if (response instanceof EvilResponse) { + responseObserver.onNext(((EvilResponse) response)); + } else if (response instanceof Exception) { + responseObserver.onError(((Exception) response)); + } else { + responseObserver.onError( + new IllegalArgumentException( + String.format( + "Unrecognized response type %s for method PersuadeEvilPlan, expected %s or %s", + response == null ? "null" : response.getClass().getName(), + EvilResponse.class.getName(), + Exception.class.getName()))); + } + } + + @Override + public void onError(Throwable t) { + responseObserver.onError(t); + } + + @Override + public void onCompleted() { + responseObserver.onCompleted(); + } + }; + return requestObserver; + } +} diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/WickedClientTest.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/WickedClientTest.java new file mode 100644 index 0000000000..518fa9b7e2 --- /dev/null +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/WickedClientTest.java @@ -0,0 +1,213 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.showcase.v1beta1; + +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.grpc.testing.MockStreamObserver; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ApiStreamObserver; +import com.google.api.gax.rpc.BidiStreamingCallable; +import com.google.api.gax.rpc.ClientStreamingCallable; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.api.gax.rpc.StatusCode; +import com.google.protobuf.AbstractMessage; +import io.grpc.StatusRuntimeException; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.ExecutionException; +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 WickedClientTest { + private static MockServiceHelper mockServiceHelper; + private static MockWicked mockWicked; + private LocalChannelProvider channelProvider; + private WickedClient client; + + @BeforeClass + public static void startStaticServer() { + mockWicked = new MockWicked(); + mockServiceHelper = + new MockServiceHelper( + UUID.randomUUID().toString(), Arrays.asList(mockWicked)); + mockServiceHelper.start(); + } + + @AfterClass + public static void stopServer() { + mockServiceHelper.stop(); + } + + @Before + public void setUp() throws IOException { + mockServiceHelper.reset(); + channelProvider = mockServiceHelper.createChannelProvider(); + WickedSettings settings = + WickedSettings.newBuilder() + .setTransportChannelProvider(channelProvider) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = WickedClient.create(settings); + } + + @After + public void tearDown() throws Exception { + client.close(); + } + + @Test + public void craftEvilPlanTest() throws Exception { + EvilResponse expectedResponse = + EvilResponse.newBuilder().setMaliciousPlan("maliciousPlan712757759").build(); + mockWicked.addResponse(expectedResponse); + + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + + EvilResponse actualResponse = client.craftEvilPlan(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockWicked.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + EvilRequest actualRequest = ((EvilRequest) actualRequests.get(0)); + + Assert.assertEquals(request.getMaliciousIdea(), actualRequest.getMaliciousIdea()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void craftEvilPlanExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockWicked.addException(exception); + + try { + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + client.craftEvilPlan(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void brainstormEvilPlansTest() throws Exception { + EvilResponse expectedResponse = + EvilResponse.newBuilder().setMaliciousPlan("maliciousPlan712757759").build(); + mockWicked.addResponse(expectedResponse); + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + + MockStreamObserver responseObserver = new MockStreamObserver<>(); + + BidiStreamingCallable callable = + client.brainstormEvilPlansCallable(); + ApiStreamObserver requestObserver = callable.bidiStreamingCall(responseObserver); + + requestObserver.onNext(request); + requestObserver.onCompleted(); + + List actualResponses = responseObserver.future().get(); + Assert.assertEquals(1, actualResponses.size()); + Assert.assertEquals(expectedResponse, actualResponses.get(0)); + } + + @Test + public void brainstormEvilPlansExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockWicked.addException(exception); + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + + MockStreamObserver responseObserver = new MockStreamObserver<>(); + + BidiStreamingCallable callable = + client.brainstormEvilPlansCallable(); + ApiStreamObserver requestObserver = callable.bidiStreamingCall(responseObserver); + + requestObserver.onNext(request); + + try { + List actualResponses = responseObserver.future().get(); + Assert.fail("No exception thrown"); + } catch (ExecutionException e) { + Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); + InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); + Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + } + } + + @Test + public void persuadeEvilPlanTest() throws Exception { + EvilResponse expectedResponse = + EvilResponse.newBuilder().setMaliciousPlan("maliciousPlan712757759").build(); + mockWicked.addResponse(expectedResponse); + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + + MockStreamObserver responseObserver = new MockStreamObserver<>(); + + ClientStreamingCallable callable = client.persuadeEvilPlanCallable(); + ApiStreamObserver requestObserver = callable.clientStreamingCall(responseObserver); + + requestObserver.onNext(request); + requestObserver.onCompleted(); + + List actualResponses = responseObserver.future().get(); + Assert.assertEquals(1, actualResponses.size()); + Assert.assertEquals(expectedResponse, actualResponses.get(0)); + } + + @Test + public void persuadeEvilPlanExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockWicked.addException(exception); + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + + MockStreamObserver responseObserver = new MockStreamObserver<>(); + + ClientStreamingCallable callable = client.persuadeEvilPlanCallable(); + ApiStreamObserver requestObserver = callable.clientStreamingCall(responseObserver); + + requestObserver.onNext(request); + + try { + List actualResponses = responseObserver.future().get(); + Assert.fail("No exception thrown"); + } catch (ExecutionException e) { + Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); + InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); + Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + } + } +} diff --git a/showcase/grpc-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedGrpc.java b/showcase/grpc-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedGrpc.java new file mode 100644 index 0000000000..79b2a6f5cf --- /dev/null +++ b/showcase/grpc-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedGrpc.java @@ -0,0 +1,392 @@ +package com.google.showcase.v1beta1; + +import static io.grpc.MethodDescriptor.generateFullMethodName; + +/** + */ +@javax.annotation.Generated( + value = "by gRPC proto compiler", + comments = "Source: showcase/gapic-showcase-extended/proto/wicked.proto") +@io.grpc.stub.annotations.GrpcGenerated +public final class WickedGrpc { + + private WickedGrpc() {} + + public static final String SERVICE_NAME = "google.showcase.v1beta1.Wicked"; + + // Static method descriptors that strictly reflect the proto. + private static volatile io.grpc.MethodDescriptor getCraftEvilPlanMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "CraftEvilPlan", + requestType = com.google.showcase.v1beta1.EvilRequest.class, + responseType = com.google.showcase.v1beta1.EvilResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getCraftEvilPlanMethod() { + io.grpc.MethodDescriptor getCraftEvilPlanMethod; + if ((getCraftEvilPlanMethod = WickedGrpc.getCraftEvilPlanMethod) == null) { + synchronized (WickedGrpc.class) { + if ((getCraftEvilPlanMethod = WickedGrpc.getCraftEvilPlanMethod) == null) { + WickedGrpc.getCraftEvilPlanMethod = getCraftEvilPlanMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "CraftEvilPlan")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + com.google.showcase.v1beta1.EvilRequest.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + com.google.showcase.v1beta1.EvilResponse.getDefaultInstance())) + .setSchemaDescriptor(new WickedMethodDescriptorSupplier("CraftEvilPlan")) + .build(); + } + } + } + return getCraftEvilPlanMethod; + } + + private static volatile io.grpc.MethodDescriptor getBrainstormEvilPlansMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "BrainstormEvilPlans", + requestType = com.google.showcase.v1beta1.EvilRequest.class, + responseType = com.google.showcase.v1beta1.EvilResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING) + public static io.grpc.MethodDescriptor getBrainstormEvilPlansMethod() { + io.grpc.MethodDescriptor getBrainstormEvilPlansMethod; + if ((getBrainstormEvilPlansMethod = WickedGrpc.getBrainstormEvilPlansMethod) == null) { + synchronized (WickedGrpc.class) { + if ((getBrainstormEvilPlansMethod = WickedGrpc.getBrainstormEvilPlansMethod) == null) { + WickedGrpc.getBrainstormEvilPlansMethod = getBrainstormEvilPlansMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "BrainstormEvilPlans")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + com.google.showcase.v1beta1.EvilRequest.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + com.google.showcase.v1beta1.EvilResponse.getDefaultInstance())) + .setSchemaDescriptor(new WickedMethodDescriptorSupplier("BrainstormEvilPlans")) + .build(); + } + } + } + return getBrainstormEvilPlansMethod; + } + + private static volatile io.grpc.MethodDescriptor getPersuadeEvilPlanMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "PersuadeEvilPlan", + requestType = com.google.showcase.v1beta1.EvilRequest.class, + responseType = com.google.showcase.v1beta1.EvilResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.CLIENT_STREAMING) + public static io.grpc.MethodDescriptor getPersuadeEvilPlanMethod() { + io.grpc.MethodDescriptor getPersuadeEvilPlanMethod; + if ((getPersuadeEvilPlanMethod = WickedGrpc.getPersuadeEvilPlanMethod) == null) { + synchronized (WickedGrpc.class) { + if ((getPersuadeEvilPlanMethod = WickedGrpc.getPersuadeEvilPlanMethod) == null) { + WickedGrpc.getPersuadeEvilPlanMethod = getPersuadeEvilPlanMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.CLIENT_STREAMING) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "PersuadeEvilPlan")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + com.google.showcase.v1beta1.EvilRequest.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + com.google.showcase.v1beta1.EvilResponse.getDefaultInstance())) + .setSchemaDescriptor(new WickedMethodDescriptorSupplier("PersuadeEvilPlan")) + .build(); + } + } + } + return getPersuadeEvilPlanMethod; + } + + /** + * Creates a new async stub that supports all call types for the service + */ + public static WickedStub newStub(io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public WickedStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new WickedStub(channel, callOptions); + } + }; + return WickedStub.newStub(factory, channel); + } + + /** + * Creates a new blocking-style stub that supports unary and streaming output calls on the service + */ + public static WickedBlockingStub newBlockingStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public WickedBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new WickedBlockingStub(channel, callOptions); + } + }; + return WickedBlockingStub.newStub(factory, channel); + } + + /** + * Creates a new ListenableFuture-style stub that supports unary calls on the service + */ + public static WickedFutureStub newFutureStub( + io.grpc.Channel channel) { + io.grpc.stub.AbstractStub.StubFactory factory = + new io.grpc.stub.AbstractStub.StubFactory() { + @java.lang.Override + public WickedFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new WickedFutureStub(channel, callOptions); + } + }; + return WickedFutureStub.newStub(factory, channel); + } + + /** + */ + public static abstract class WickedImplBase implements io.grpc.BindableService { + + /** + */ + public void craftEvilPlan(com.google.showcase.v1beta1.EvilRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getCraftEvilPlanMethod(), responseObserver); + } + + /** + */ + public io.grpc.stub.StreamObserver brainstormEvilPlans( + io.grpc.stub.StreamObserver responseObserver) { + return io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall(getBrainstormEvilPlansMethod(), responseObserver); + } + + /** + */ + public io.grpc.stub.StreamObserver persuadeEvilPlan( + io.grpc.stub.StreamObserver responseObserver) { + return io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall(getPersuadeEvilPlanMethod(), responseObserver); + } + + @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() { + return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()) + .addMethod( + getCraftEvilPlanMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + com.google.showcase.v1beta1.EvilRequest, + com.google.showcase.v1beta1.EvilResponse>( + this, METHODID_CRAFT_EVIL_PLAN))) + .addMethod( + getBrainstormEvilPlansMethod(), + io.grpc.stub.ServerCalls.asyncBidiStreamingCall( + new MethodHandlers< + com.google.showcase.v1beta1.EvilRequest, + com.google.showcase.v1beta1.EvilResponse>( + this, METHODID_BRAINSTORM_EVIL_PLANS))) + .addMethod( + getPersuadeEvilPlanMethod(), + io.grpc.stub.ServerCalls.asyncClientStreamingCall( + new MethodHandlers< + com.google.showcase.v1beta1.EvilRequest, + com.google.showcase.v1beta1.EvilResponse>( + this, METHODID_PERSUADE_EVIL_PLAN))) + .build(); + } + } + + /** + */ + public static final class WickedStub extends io.grpc.stub.AbstractAsyncStub { + private WickedStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected WickedStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new WickedStub(channel, callOptions); + } + + /** + */ + public void craftEvilPlan(com.google.showcase.v1beta1.EvilRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getCraftEvilPlanMethod(), getCallOptions()), request, responseObserver); + } + + /** + */ + public io.grpc.stub.StreamObserver brainstormEvilPlans( + io.grpc.stub.StreamObserver responseObserver) { + return io.grpc.stub.ClientCalls.asyncBidiStreamingCall( + getChannel().newCall(getBrainstormEvilPlansMethod(), getCallOptions()), responseObserver); + } + + /** + */ + public io.grpc.stub.StreamObserver persuadeEvilPlan( + io.grpc.stub.StreamObserver responseObserver) { + return io.grpc.stub.ClientCalls.asyncClientStreamingCall( + getChannel().newCall(getPersuadeEvilPlanMethod(), getCallOptions()), responseObserver); + } + } + + /** + */ + public static final class WickedBlockingStub extends io.grpc.stub.AbstractBlockingStub { + private WickedBlockingStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected WickedBlockingStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new WickedBlockingStub(channel, callOptions); + } + + /** + */ + public com.google.showcase.v1beta1.EvilResponse craftEvilPlan(com.google.showcase.v1beta1.EvilRequest request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getCraftEvilPlanMethod(), getCallOptions(), request); + } + } + + /** + */ + public static final class WickedFutureStub extends io.grpc.stub.AbstractFutureStub { + private WickedFutureStub( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + super(channel, callOptions); + } + + @java.lang.Override + protected WickedFutureStub build( + io.grpc.Channel channel, io.grpc.CallOptions callOptions) { + return new WickedFutureStub(channel, callOptions); + } + + /** + */ + public com.google.common.util.concurrent.ListenableFuture craftEvilPlan( + com.google.showcase.v1beta1.EvilRequest request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getCraftEvilPlanMethod(), getCallOptions()), request); + } + } + + private static final int METHODID_CRAFT_EVIL_PLAN = 0; + private static final int METHODID_BRAINSTORM_EVIL_PLANS = 1; + private static final int METHODID_PERSUADE_EVIL_PLAN = 2; + + private static final class MethodHandlers implements + io.grpc.stub.ServerCalls.UnaryMethod, + io.grpc.stub.ServerCalls.ServerStreamingMethod, + io.grpc.stub.ServerCalls.ClientStreamingMethod, + io.grpc.stub.ServerCalls.BidiStreamingMethod { + private final WickedImplBase serviceImpl; + private final int methodId; + + MethodHandlers(WickedImplBase serviceImpl, int methodId) { + this.serviceImpl = serviceImpl; + this.methodId = methodId; + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public void invoke(Req request, io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + case METHODID_CRAFT_EVIL_PLAN: + serviceImpl.craftEvilPlan((com.google.showcase.v1beta1.EvilRequest) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; + default: + throw new AssertionError(); + } + } + + @java.lang.Override + @java.lang.SuppressWarnings("unchecked") + public io.grpc.stub.StreamObserver invoke( + io.grpc.stub.StreamObserver responseObserver) { + switch (methodId) { + case METHODID_BRAINSTORM_EVIL_PLANS: + return (io.grpc.stub.StreamObserver) serviceImpl.brainstormEvilPlans( + (io.grpc.stub.StreamObserver) responseObserver); + case METHODID_PERSUADE_EVIL_PLAN: + return (io.grpc.stub.StreamObserver) serviceImpl.persuadeEvilPlan( + (io.grpc.stub.StreamObserver) responseObserver); + default: + throw new AssertionError(); + } + } + } + + private static abstract class WickedBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { + WickedBaseDescriptorSupplier() {} + + @java.lang.Override + public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() { + return com.google.showcase.v1beta1.WickedOuterClass.getDescriptor(); + } + + @java.lang.Override + public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() { + return getFileDescriptor().findServiceByName("Wicked"); + } + } + + private static final class WickedFileDescriptorSupplier + extends WickedBaseDescriptorSupplier { + WickedFileDescriptorSupplier() {} + } + + private static final class WickedMethodDescriptorSupplier + extends WickedBaseDescriptorSupplier + implements io.grpc.protobuf.ProtoMethodDescriptorSupplier { + private final String methodName; + + WickedMethodDescriptorSupplier(String methodName) { + this.methodName = methodName; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() { + return getServiceDescriptor().findMethodByName(methodName); + } + } + + private static volatile io.grpc.ServiceDescriptor serviceDescriptor; + + public static io.grpc.ServiceDescriptor getServiceDescriptor() { + io.grpc.ServiceDescriptor result = serviceDescriptor; + if (result == null) { + synchronized (WickedGrpc.class) { + result = serviceDescriptor; + if (result == null) { + serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME) + .setSchemaDescriptor(new WickedFileDescriptorSupplier()) + .addMethod(getCraftEvilPlanMethod()) + .addMethod(getBrainstormEvilPlansMethod()) + .addMethod(getPersuadeEvilPlanMethod()) + .build(); + } + } + } + return result; + } +} diff --git a/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequest.java b/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequest.java new file mode 100644 index 0000000000..8d4aba952a --- /dev/null +++ b/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequest.java @@ -0,0 +1,559 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: showcase/gapic-showcase-extended/proto/wicked.proto + +package com.google.showcase.v1beta1; + +/** + * Protobuf type {@code google.showcase.v1beta1.EvilRequest} + */ +public final class EvilRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:google.showcase.v1beta1.EvilRequest) + EvilRequestOrBuilder { +private static final long serialVersionUID = 0L; + // Use EvilRequest.newBuilder() to construct. + private EvilRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private EvilRequest() { + maliciousIdea_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new EvilRequest(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private EvilRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + maliciousIdea_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.showcase.v1beta1.EvilRequest.class, com.google.showcase.v1beta1.EvilRequest.Builder.class); + } + + public static final int MALICIOUS_IDEA_FIELD_NUMBER = 1; + private volatile java.lang.Object maliciousIdea_; + /** + * string malicious_idea = 1; + * @return The maliciousIdea. + */ + @java.lang.Override + public java.lang.String getMaliciousIdea() { + java.lang.Object ref = maliciousIdea_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + maliciousIdea_ = s; + return s; + } + } + /** + * string malicious_idea = 1; + * @return The bytes for maliciousIdea. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getMaliciousIdeaBytes() { + java.lang.Object ref = maliciousIdea_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + maliciousIdea_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(maliciousIdea_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, maliciousIdea_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(maliciousIdea_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, maliciousIdea_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.showcase.v1beta1.EvilRequest)) { + return super.equals(obj); + } + com.google.showcase.v1beta1.EvilRequest other = (com.google.showcase.v1beta1.EvilRequest) obj; + + if (!getMaliciousIdea() + .equals(other.getMaliciousIdea())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + MALICIOUS_IDEA_FIELD_NUMBER; + hash = (53 * hash) + getMaliciousIdea().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.showcase.v1beta1.EvilRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.google.showcase.v1beta1.EvilRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.google.showcase.v1beta1.EvilRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.google.showcase.v1beta1.EvilRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.google.showcase.v1beta1.EvilRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.google.showcase.v1beta1.EvilRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.google.showcase.v1beta1.EvilRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.google.showcase.v1beta1.EvilRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static com.google.showcase.v1beta1.EvilRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static com.google.showcase.v1beta1.EvilRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.google.showcase.v1beta1.EvilRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.google.showcase.v1beta1.EvilRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.google.showcase.v1beta1.EvilRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code google.showcase.v1beta1.EvilRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:google.showcase.v1beta1.EvilRequest) + com.google.showcase.v1beta1.EvilRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.showcase.v1beta1.EvilRequest.class, com.google.showcase.v1beta1.EvilRequest.Builder.class); + } + + // Construct using com.google.showcase.v1beta1.EvilRequest.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + maliciousIdea_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilRequest_descriptor; + } + + @java.lang.Override + public com.google.showcase.v1beta1.EvilRequest getDefaultInstanceForType() { + return com.google.showcase.v1beta1.EvilRequest.getDefaultInstance(); + } + + @java.lang.Override + public com.google.showcase.v1beta1.EvilRequest build() { + com.google.showcase.v1beta1.EvilRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.showcase.v1beta1.EvilRequest buildPartial() { + com.google.showcase.v1beta1.EvilRequest result = new com.google.showcase.v1beta1.EvilRequest(this); + result.maliciousIdea_ = maliciousIdea_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.showcase.v1beta1.EvilRequest) { + return mergeFrom((com.google.showcase.v1beta1.EvilRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.showcase.v1beta1.EvilRequest other) { + if (other == com.google.showcase.v1beta1.EvilRequest.getDefaultInstance()) return this; + if (!other.getMaliciousIdea().isEmpty()) { + maliciousIdea_ = other.maliciousIdea_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.showcase.v1beta1.EvilRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.google.showcase.v1beta1.EvilRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object maliciousIdea_ = ""; + /** + * string malicious_idea = 1; + * @return The maliciousIdea. + */ + public java.lang.String getMaliciousIdea() { + java.lang.Object ref = maliciousIdea_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + maliciousIdea_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string malicious_idea = 1; + * @return The bytes for maliciousIdea. + */ + public com.google.protobuf.ByteString + getMaliciousIdeaBytes() { + java.lang.Object ref = maliciousIdea_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + maliciousIdea_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string malicious_idea = 1; + * @param value The maliciousIdea to set. + * @return This builder for chaining. + */ + public Builder setMaliciousIdea( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + maliciousIdea_ = value; + onChanged(); + return this; + } + /** + * string malicious_idea = 1; + * @return This builder for chaining. + */ + public Builder clearMaliciousIdea() { + + maliciousIdea_ = getDefaultInstance().getMaliciousIdea(); + onChanged(); + return this; + } + /** + * string malicious_idea = 1; + * @param value The bytes for maliciousIdea to set. + * @return This builder for chaining. + */ + public Builder setMaliciousIdeaBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + maliciousIdea_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:google.showcase.v1beta1.EvilRequest) + } + + // @@protoc_insertion_point(class_scope:google.showcase.v1beta1.EvilRequest) + private static final com.google.showcase.v1beta1.EvilRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.google.showcase.v1beta1.EvilRequest(); + } + + public static com.google.showcase.v1beta1.EvilRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public EvilRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new EvilRequest(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.showcase.v1beta1.EvilRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequestOrBuilder.java b/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequestOrBuilder.java new file mode 100644 index 0000000000..3b9d11f981 --- /dev/null +++ b/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequestOrBuilder.java @@ -0,0 +1,21 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: showcase/gapic-showcase-extended/proto/wicked.proto + +package com.google.showcase.v1beta1; + +public interface EvilRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:google.showcase.v1beta1.EvilRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * string malicious_idea = 1; + * @return The maliciousIdea. + */ + java.lang.String getMaliciousIdea(); + /** + * string malicious_idea = 1; + * @return The bytes for maliciousIdea. + */ + com.google.protobuf.ByteString + getMaliciousIdeaBytes(); +} diff --git a/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponse.java b/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponse.java new file mode 100644 index 0000000000..c10dbf10d2 --- /dev/null +++ b/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponse.java @@ -0,0 +1,559 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: showcase/gapic-showcase-extended/proto/wicked.proto + +package com.google.showcase.v1beta1; + +/** + * Protobuf type {@code google.showcase.v1beta1.EvilResponse} + */ +public final class EvilResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:google.showcase.v1beta1.EvilResponse) + EvilResponseOrBuilder { +private static final long serialVersionUID = 0L; + // Use EvilResponse.newBuilder() to construct. + private EvilResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private EvilResponse() { + maliciousPlan_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new EvilResponse(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private EvilResponse( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + maliciousPlan_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.showcase.v1beta1.EvilResponse.class, com.google.showcase.v1beta1.EvilResponse.Builder.class); + } + + public static final int MALICIOUS_PLAN_FIELD_NUMBER = 1; + private volatile java.lang.Object maliciousPlan_; + /** + * string malicious_plan = 1; + * @return The maliciousPlan. + */ + @java.lang.Override + public java.lang.String getMaliciousPlan() { + java.lang.Object ref = maliciousPlan_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + maliciousPlan_ = s; + return s; + } + } + /** + * string malicious_plan = 1; + * @return The bytes for maliciousPlan. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getMaliciousPlanBytes() { + java.lang.Object ref = maliciousPlan_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + maliciousPlan_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(maliciousPlan_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, maliciousPlan_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(maliciousPlan_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, maliciousPlan_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.google.showcase.v1beta1.EvilResponse)) { + return super.equals(obj); + } + com.google.showcase.v1beta1.EvilResponse other = (com.google.showcase.v1beta1.EvilResponse) obj; + + if (!getMaliciousPlan() + .equals(other.getMaliciousPlan())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + MALICIOUS_PLAN_FIELD_NUMBER; + hash = (53 * hash) + getMaliciousPlan().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.google.showcase.v1beta1.EvilResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.google.showcase.v1beta1.EvilResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.google.showcase.v1beta1.EvilResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.google.showcase.v1beta1.EvilResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.google.showcase.v1beta1.EvilResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.google.showcase.v1beta1.EvilResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.google.showcase.v1beta1.EvilResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.google.showcase.v1beta1.EvilResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static com.google.showcase.v1beta1.EvilResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static com.google.showcase.v1beta1.EvilResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.google.showcase.v1beta1.EvilResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.google.showcase.v1beta1.EvilResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.google.showcase.v1beta1.EvilResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code google.showcase.v1beta1.EvilResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:google.showcase.v1beta1.EvilResponse) + com.google.showcase.v1beta1.EvilResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.google.showcase.v1beta1.EvilResponse.class, com.google.showcase.v1beta1.EvilResponse.Builder.class); + } + + // Construct using com.google.showcase.v1beta1.EvilResponse.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + maliciousPlan_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilResponse_descriptor; + } + + @java.lang.Override + public com.google.showcase.v1beta1.EvilResponse getDefaultInstanceForType() { + return com.google.showcase.v1beta1.EvilResponse.getDefaultInstance(); + } + + @java.lang.Override + public com.google.showcase.v1beta1.EvilResponse build() { + com.google.showcase.v1beta1.EvilResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.google.showcase.v1beta1.EvilResponse buildPartial() { + com.google.showcase.v1beta1.EvilResponse result = new com.google.showcase.v1beta1.EvilResponse(this); + result.maliciousPlan_ = maliciousPlan_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.google.showcase.v1beta1.EvilResponse) { + return mergeFrom((com.google.showcase.v1beta1.EvilResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.google.showcase.v1beta1.EvilResponse other) { + if (other == com.google.showcase.v1beta1.EvilResponse.getDefaultInstance()) return this; + if (!other.getMaliciousPlan().isEmpty()) { + maliciousPlan_ = other.maliciousPlan_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + com.google.showcase.v1beta1.EvilResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.google.showcase.v1beta1.EvilResponse) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object maliciousPlan_ = ""; + /** + * string malicious_plan = 1; + * @return The maliciousPlan. + */ + public java.lang.String getMaliciousPlan() { + java.lang.Object ref = maliciousPlan_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + maliciousPlan_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string malicious_plan = 1; + * @return The bytes for maliciousPlan. + */ + public com.google.protobuf.ByteString + getMaliciousPlanBytes() { + java.lang.Object ref = maliciousPlan_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + maliciousPlan_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string malicious_plan = 1; + * @param value The maliciousPlan to set. + * @return This builder for chaining. + */ + public Builder setMaliciousPlan( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + maliciousPlan_ = value; + onChanged(); + return this; + } + /** + * string malicious_plan = 1; + * @return This builder for chaining. + */ + public Builder clearMaliciousPlan() { + + maliciousPlan_ = getDefaultInstance().getMaliciousPlan(); + onChanged(); + return this; + } + /** + * string malicious_plan = 1; + * @param value The bytes for maliciousPlan to set. + * @return This builder for chaining. + */ + public Builder setMaliciousPlanBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + maliciousPlan_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:google.showcase.v1beta1.EvilResponse) + } + + // @@protoc_insertion_point(class_scope:google.showcase.v1beta1.EvilResponse) + private static final com.google.showcase.v1beta1.EvilResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.google.showcase.v1beta1.EvilResponse(); + } + + public static com.google.showcase.v1beta1.EvilResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public EvilResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new EvilResponse(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.google.showcase.v1beta1.EvilResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponseOrBuilder.java b/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponseOrBuilder.java new file mode 100644 index 0000000000..4c78259881 --- /dev/null +++ b/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponseOrBuilder.java @@ -0,0 +1,21 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: showcase/gapic-showcase-extended/proto/wicked.proto + +package com.google.showcase.v1beta1; + +public interface EvilResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:google.showcase.v1beta1.EvilResponse) + com.google.protobuf.MessageOrBuilder { + + /** + * string malicious_plan = 1; + * @return The maliciousPlan. + */ + java.lang.String getMaliciousPlan(); + /** + * string malicious_plan = 1; + * @return The bytes for maliciousPlan. + */ + com.google.protobuf.ByteString + getMaliciousPlanBytes(); +} diff --git a/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedOuterClass.java b/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedOuterClass.java new file mode 100644 index 0000000000..7498bd3edd --- /dev/null +++ b/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedOuterClass.java @@ -0,0 +1,79 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: showcase/gapic-showcase-extended/proto/wicked.proto + +package com.google.showcase.v1beta1; + +public final class WickedOuterClass { + private WickedOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_showcase_v1beta1_EvilRequest_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_showcase_v1beta1_EvilRequest_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_showcase_v1beta1_EvilResponse_descriptor; + static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_showcase_v1beta1_EvilResponse_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n3showcase/gapic-showcase-extended/proto" + + "/wicked.proto\022\027google.showcase.v1beta1\032\027" + + "google/api/client.proto\"%\n\013EvilRequest\022\026" + + "\n\016malicious_idea\030\001 \001(\t\"&\n\014EvilResponse\022\026" + + "\n\016malicious_plan\030\001 \001(\t2\304\002\n\006Wicked\022\\\n\rCra" + + "ftEvilPlan\022$.google.showcase.v1beta1.Evi" + + "lRequest\032%.google.showcase.v1beta1.EvilR" + + "esponse\022f\n\023BrainstormEvilPlans\022$.google." + + "showcase.v1beta1.EvilRequest\032%.google.sh" + + "owcase.v1beta1.EvilResponse(\0010\001\022a\n\020Persu" + + "adeEvilPlan\022$.google.showcase.v1beta1.Ev" + + "ilRequest\032%.google.showcase.v1beta1.Evil" + + "Response(\001\032\021\312A\016localhost:7469Bq\n\033com.goo" + + "gle.showcase.v1beta1P\001Z4github.com/googl" + + "eapis/gapic-showcase/server/genproto\352\002\031G" + + "oogle::Showcase::V1beta1b\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + com.google.api.ClientProto.getDescriptor(), + }); + internal_static_google_showcase_v1beta1_EvilRequest_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_google_showcase_v1beta1_EvilRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_showcase_v1beta1_EvilRequest_descriptor, + new java.lang.String[] { "MaliciousIdea", }); + internal_static_google_showcase_v1beta1_EvilResponse_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_google_showcase_v1beta1_EvilResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_showcase_v1beta1_EvilResponse_descriptor, + new java.lang.String[] { "MaliciousPlan", }); + com.google.protobuf.ExtensionRegistry registry = + com.google.protobuf.ExtensionRegistry.newInstance(); + registry.add(com.google.api.ClientProto.defaultHost); + com.google.protobuf.Descriptors.FileDescriptor + .internalUpdateFileDescriptor(descriptor, registry); + com.google.api.ClientProto.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/showcase/scripts/update.sh b/showcase/scripts/update.sh index b5da568f65..89765ed934 100755 --- a/showcase/scripts/update.sh +++ b/showcase/scripts/update.sh @@ -30,8 +30,10 @@ case $1 in create_unpack_dir proto_unpacked PROTO_UNPACK_DIR=$PWD - tar -xzf "../$PROTO_ARCHIVE" + tar -xzf "$BAZEL_ROOT/$PROTO_ARCHIVE" delete_unneeded + # TODO(lawrenceqiu): Determine why WickedGrpc.java is generated in the proto job + find . -name '*Grpc*.java' -delete cd "$BUILD_WORKSPACE_DIRECTORY/showcase/$PROTO_PROJECT_DIR" mkdir -p ./src cp -r "$PROTO_UNPACK_DIR"/proto-google-cloud-showcase-v1beta1-java/src/* ./src @@ -40,11 +42,13 @@ case $1 in grpc) GRPC_PROJECT_DIR=grpc-gapic-showcase-v1beta1 GRPC_JAR=$(find . -name 'libshowcase_java_grpc-src.jar') + GRPC_JAR_EXTENDED=$(find . -name 'libshowcase_java_grpc_extended-src.jar') clear_existing $GRPC_PROJECT_DIR create_unpack_dir grpc_unpacked GRPC_UNPACK_DIR=$PWD - jar xf "../$GRPC_JAR" + jar xf "$BAZEL_ROOT/$GRPC_JAR" + jar xf "$BAZEL_ROOT/$GRPC_JAR_EXTENDED" cd "$BUILD_WORKSPACE_DIRECTORY/showcase/$GRPC_PROJECT_DIR" mkdir -p ./src/main/java/com cp -r "$GRPC_UNPACK_DIR"/com/* ./src/main/java/com @@ -53,11 +57,13 @@ case $1 in gapic) GAPIC_PROJECT_DIR=gapic-showcase GAPIC_JAR=$(find . -name 'showcase_java_gapic_srcjar_raw.srcjar') + GAPIC_JAR_EXTENDED=$(find . -name 'showcase_java_gapic_extended_srcjar_raw.srcjar') clear_existing $GAPIC_PROJECT_DIR create_unpack_dir gapic_unpacked GAPIC_UNPACK_DIR=$PWD - unzip -q -c "../$GAPIC_JAR" temp-codegen.srcjar | jar x + unzip -q -c "$BAZEL_ROOT/$GAPIC_JAR" temp-codegen.srcjar | jar x + unzip -q -c "$BAZEL_ROOT/$GAPIC_JAR_EXTENDED" temp-codegen.srcjar | jar x cd "$BUILD_WORKSPACE_DIRECTORY/showcase/$GAPIC_PROJECT_DIR" cp -r "$GAPIC_UNPACK_DIR"/* ./ ;; From 983ab9b382a8a1465d7d832598a183fa57c3c67e Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 19 Jan 2023 14:46:20 -0500 Subject: [PATCH 42/63] chore: Use seperate Bazel rules for showcase extended --- showcase/BUILD.bazel | 15 +++++++++++---- showcase/scripts/update.sh | 7 +++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/showcase/BUILD.bazel b/showcase/BUILD.bazel index 2d9feb5d29..1b7bfbc95e 100644 --- a/showcase/BUILD.bazel +++ b/showcase/BUILD.bazel @@ -68,7 +68,6 @@ java_gapic_library( java_gapic_library( name = "showcase_java_gapic_extended", srcs = [":showcase_proto_extended_with_info"], - gapic_yaml = None, rest_numeric_enums = True, test_deps = [ ":showcase_java_grpc_extended" @@ -86,12 +85,19 @@ java_gapic_assembly_gradle_pkg( transport = "grpc+rest", deps = [ ":showcase_java_gapic", - ":showcase_java_gapic_extended", ":showcase_java_grpc", - ":showcase_java_grpc_extended", ":showcase_java_proto", - ":showcase_java_proto_extended", "@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_proto", + ], +) + +java_gapic_assembly_gradle_pkg( + name = "google-cloud-showcase-extended-v1beta1-java", + transport = "grpc+rest", + deps = [ + ":showcase_java_gapic_extended", + ":showcase_java_grpc_extended", + ":showcase_java_proto_extended", "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", ], ) @@ -161,6 +167,7 @@ sh_binary( # Proto Showcase : Update and Verify PROTO_DATA = [ "proto-google-cloud-showcase-v1beta1-java.tar.gz", + "proto-google-cloud-showcase-extended-v1beta1-java.tar.gz", ":proto_gapic_showcase_files", "//showcase:showcase_java_proto", "//showcase:showcase_java_proto_extended", diff --git a/showcase/scripts/update.sh b/showcase/scripts/update.sh index 89765ed934..b6c882301f 100755 --- a/showcase/scripts/update.sh +++ b/showcase/scripts/update.sh @@ -26,17 +26,20 @@ case $1 in proto) PROTO_PROJECT_DIR=proto-gapic-showcase-v1beta1 PROTO_ARCHIVE=$(find . -name 'proto-google-cloud-showcase-v1beta1-java.tar.gz') + PROTO_ARCHIVE_EXTENDED=$(find . -name 'proto-google-cloud-showcase-extended-v1beta1-java.tar.gz') clear_existing $PROTO_PROJECT_DIR create_unpack_dir proto_unpacked PROTO_UNPACK_DIR=$PWD tar -xzf "$BAZEL_ROOT/$PROTO_ARCHIVE" - delete_unneeded - # TODO(lawrenceqiu): Determine why WickedGrpc.java is generated in the proto job + tar -xzf "$BAZEL_ROOT/$PROTO_ARCHIVE_EXTENDED" + # TODO(lawrenceqiu): Why is it generating Grpc files for the showcase-extended protos only? find . -name '*Grpc*.java' -delete + delete_unneeded cd "$BUILD_WORKSPACE_DIRECTORY/showcase/$PROTO_PROJECT_DIR" mkdir -p ./src cp -r "$PROTO_UNPACK_DIR"/proto-google-cloud-showcase-v1beta1-java/src/* ./src + cp -r "$PROTO_UNPACK_DIR"/proto-google-cloud-showcase-extended-v1beta1-java/src/* ./src ;; grpc) From 29151491a5ee18fd7bd02cfd517cc64a59345305 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Fri, 20 Jan 2023 12:32:44 -0500 Subject: [PATCH 43/63] chore: Seperate GRPC jar into separate jobs --- showcase/BUILD.bazel | 69 +++--- .../showcase/v1beta1/gapic_metadata.json | 201 ++++++++++++++++++ .../google/showcase/v1beta1/package-info.java | 141 +++++++++++- showcase/scripts/update.sh | 7 - 4 files changed, 366 insertions(+), 52 deletions(-) diff --git a/showcase/BUILD.bazel b/showcase/BUILD.bazel index 1b7bfbc95e..55ebb6018f 100644 --- a/showcase/BUILD.bazel +++ b/showcase/BUILD.bazel @@ -14,38 +14,44 @@ proto_library_with_info( name = "showcase_proto_with_info", deps = [ "@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_proto", - "@com_google_googleapis//google/cloud:common_resources_proto", - ], -) - -proto_library_with_info( - name = "showcase_proto_extended_with_info", - deps = [ "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", "@com_google_googleapis//google/cloud:common_resources_proto", - ] + ], ) java_proto_library( name = "showcase_java_proto", - deps = ["@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_proto"], + deps = [ + "@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_proto", + "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", + ], ) java_proto_library( name = "showcase_java_proto_extended", - deps = ["//showcase/gapic-showcase-extended/proto:showcase_proto_extended"], + deps = [ + "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", + ], ) java_grpc_library( name = "showcase_java_grpc", - srcs = ["@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_proto"], - deps = [":showcase_java_proto"], + srcs = [ + "@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_proto", + ], + deps = [ + ":showcase_java_proto", + ], ) java_grpc_library( name = "showcase_java_grpc_extended", - srcs = ["//showcase/gapic-showcase-extended/proto:showcase_proto_extended"], - deps = [":showcase_java_proto_extended"], + srcs = [ + "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", + ], + deps = [ + ":showcase_java_proto_extended", + ], ) java_gapic_library( @@ -57,23 +63,11 @@ java_gapic_library( service_yaml = "@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_v1beta1.yaml", test_deps = [ ":showcase_java_grpc", + ":showcase_java_grpc_extended", ], transport = "grpc+rest", deps = [ ":showcase_java_proto", - "@com_google_googleapis//google/api:api_java_proto", - ], -) - -java_gapic_library( - name = "showcase_java_gapic_extended", - srcs = [":showcase_proto_extended_with_info"], - rest_numeric_enums = True, - test_deps = [ - ":showcase_java_grpc_extended" - ], - transport = "grpc+rest", - deps = [ ":showcase_java_proto_extended", "@com_google_googleapis//google/api:api_java_proto", ], @@ -88,16 +82,6 @@ java_gapic_assembly_gradle_pkg( ":showcase_java_grpc", ":showcase_java_proto", "@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_proto", - ], -) - -java_gapic_assembly_gradle_pkg( - name = "google-cloud-showcase-extended-v1beta1-java", - transport = "grpc+rest", - deps = [ - ":showcase_java_gapic_extended", - ":showcase_java_grpc_extended", - ":showcase_java_proto_extended", "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", ], ) @@ -121,10 +105,8 @@ filegroup( # GAPIC Showcase : Update and Verify GAPIC_DATA = [ "showcase_java_gapic_srcjar_raw.srcjar", - "showcase_java_gapic_extended_srcjar_raw.srcjar", ":gapic_showcase_files", "//showcase:showcase_java_gapic", - "//showcase:showcase_java_gapic_extended" ] sh_binary( @@ -146,8 +128,8 @@ GRPC_DATA = [ "libshowcase_java_grpc-src.jar", "libshowcase_java_grpc_extended-src.jar", ":grpc_gapic_showcase_files", - "//showcase:showcase_java_grpc", - "//showcase:showcase_java_grpc_extended", + ":showcase_java_grpc", + ":showcase_java_grpc_extended" ] sh_binary( @@ -167,10 +149,9 @@ sh_binary( # Proto Showcase : Update and Verify PROTO_DATA = [ "proto-google-cloud-showcase-v1beta1-java.tar.gz", - "proto-google-cloud-showcase-extended-v1beta1-java.tar.gz", ":proto_gapic_showcase_files", - "//showcase:showcase_java_proto", - "//showcase:showcase_java_proto_extended", + ":showcase_java_proto", + ":showcase_java_proto_extended", ] sh_binary( diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json index 79c2367e46..0321772764 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json @@ -5,6 +5,207 @@ "protoPackage": "google.showcase.v1beta1", "libraryPackage": "com.google.showcase.v1beta1", "services": { + "Compliance": { + "clients": { + "grpc": { + "libraryClient": "ComplianceClient", + "rpcs": { + "GetEnum": { + "methods": ["getEnum", "getEnumCallable"] + }, + "RepeatDataBody": { + "methods": ["repeatDataBody", "repeatDataBodyCallable"] + }, + "RepeatDataBodyInfo": { + "methods": ["repeatDataBodyInfo", "repeatDataBodyInfoCallable"] + }, + "RepeatDataBodyPatch": { + "methods": ["repeatDataBodyPatch", "repeatDataBodyPatchCallable"] + }, + "RepeatDataBodyPut": { + "methods": ["repeatDataBodyPut", "repeatDataBodyPutCallable"] + }, + "RepeatDataPathResource": { + "methods": ["repeatDataPathResource", "repeatDataPathResourceCallable"] + }, + "RepeatDataPathTrailingResource": { + "methods": ["repeatDataPathTrailingResource", "repeatDataPathTrailingResourceCallable"] + }, + "RepeatDataQuery": { + "methods": ["repeatDataQuery", "repeatDataQueryCallable"] + }, + "RepeatDataSimplePath": { + "methods": ["repeatDataSimplePath", "repeatDataSimplePathCallable"] + }, + "VerifyEnum": { + "methods": ["verifyEnum", "verifyEnumCallable"] + } + } + } + } + }, + "Echo": { + "clients": { + "grpc": { + "libraryClient": "EchoClient", + "rpcs": { + "Block": { + "methods": ["block", "blockCallable"] + }, + "Chat": { + "methods": ["chatCallable"] + }, + "Collect": { + "methods": ["collectCallable"] + }, + "Echo": { + "methods": ["echo", "echoCallable"] + }, + "Expand": { + "methods": ["expandCallable"] + }, + "PagedExpand": { + "methods": ["pagedExpand", "pagedExpandPagedCallable", "pagedExpandCallable"] + }, + "PagedExpandLegacy": { + "methods": ["pagedExpandLegacy", "pagedExpandLegacyCallable"] + }, + "PagedExpandLegacyMapped": { + "methods": ["pagedExpandLegacyMapped", "pagedExpandLegacyMappedPagedCallable", "pagedExpandLegacyMappedCallable"] + }, + "Wait": { + "methods": ["waitAsync", "waitOperationCallable", "waitCallable"] + } + } + } + } + }, + "Identity": { + "clients": { + "grpc": { + "libraryClient": "IdentityClient", + "rpcs": { + "CreateUser": { + "methods": ["createUser", "createUser", "createUser", "createUserCallable"] + }, + "DeleteUser": { + "methods": ["deleteUser", "deleteUser", "deleteUser", "deleteUserCallable"] + }, + "GetUser": { + "methods": ["getUser", "getUser", "getUser", "getUserCallable"] + }, + "ListUsers": { + "methods": ["listUsers", "listUsersPagedCallable", "listUsersCallable"] + }, + "UpdateUser": { + "methods": ["updateUser", "updateUserCallable"] + } + } + } + } + }, + "Messaging": { + "clients": { + "grpc": { + "libraryClient": "MessagingClient", + "rpcs": { + "Connect": { + "methods": ["connectCallable"] + }, + "CreateBlurb": { + "methods": ["createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurb", "createBlurbCallable"] + }, + "CreateRoom": { + "methods": ["createRoom", "createRoom", "createRoomCallable"] + }, + "DeleteBlurb": { + "methods": ["deleteBlurb", "deleteBlurb", "deleteBlurb", "deleteBlurbCallable"] + }, + "DeleteRoom": { + "methods": ["deleteRoom", "deleteRoom", "deleteRoom", "deleteRoomCallable"] + }, + "GetBlurb": { + "methods": ["getBlurb", "getBlurb", "getBlurb", "getBlurbCallable"] + }, + "GetRoom": { + "methods": ["getRoom", "getRoom", "getRoom", "getRoomCallable"] + }, + "ListBlurbs": { + "methods": ["listBlurbs", "listBlurbs", "listBlurbs", "listBlurbs", "listBlurbsPagedCallable", "listBlurbsCallable"] + }, + "ListRooms": { + "methods": ["listRooms", "listRoomsPagedCallable", "listRoomsCallable"] + }, + "SearchBlurbs": { + "methods": ["searchBlurbsAsync", "searchBlurbsAsync", "searchBlurbsAsync", "searchBlurbsAsync", "searchBlurbsOperationCallable", "searchBlurbsCallable"] + }, + "SendBlurbs": { + "methods": ["sendBlurbsCallable"] + }, + "StreamBlurbs": { + "methods": ["streamBlurbsCallable"] + }, + "UpdateBlurb": { + "methods": ["updateBlurb", "updateBlurbCallable"] + }, + "UpdateRoom": { + "methods": ["updateRoom", "updateRoomCallable"] + } + } + } + } + }, + "SequenceService": { + "clients": { + "grpc": { + "libraryClient": "SequenceServiceClient", + "rpcs": { + "AttemptSequence": { + "methods": ["attemptSequence", "attemptSequence", "attemptSequence", "attemptSequenceCallable"] + }, + "CreateSequence": { + "methods": ["createSequence", "createSequence", "createSequenceCallable"] + }, + "GetSequenceReport": { + "methods": ["getSequenceReport", "getSequenceReport", "getSequenceReport", "getSequenceReportCallable"] + } + } + } + } + }, + "Testing": { + "clients": { + "grpc": { + "libraryClient": "TestingClient", + "rpcs": { + "CreateSession": { + "methods": ["createSession", "createSessionCallable"] + }, + "DeleteSession": { + "methods": ["deleteSession", "deleteSessionCallable"] + }, + "DeleteTest": { + "methods": ["deleteTest", "deleteTestCallable"] + }, + "GetSession": { + "methods": ["getSession", "getSessionCallable"] + }, + "ListSessions": { + "methods": ["listSessions", "listSessionsPagedCallable", "listSessionsCallable"] + }, + "ListTests": { + "methods": ["listTests", "listTestsPagedCallable", "listTestsCallable"] + }, + "ReportSession": { + "methods": ["reportSession", "reportSessionCallable"] + }, + "VerifyTest": { + "methods": ["verifyTest", "verifyTestCallable"] + } + } + } + } + }, "Wicked": { "clients": { "grpc": { diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java index 6ed6bfdb3a..36ff23e6de 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java @@ -15,7 +15,146 @@ */ /** - * The interfaces provided are listed below, along with usage samples. + * A client to Client Libraries Showcase API + * + *

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

======================= ComplianceClient ======================= + * + *

Service Description: This service is used to test that GAPICs implement various REST-related + * features correctly. This mostly means transcoding proto3 requests to REST format correctly for + * various types of HTTP annotations, but it also includes verifying that unknown (numeric) enums + * received by clients can be round-tripped correctly. + * + *

Sample for ComplianceClient: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (ComplianceClient complianceClient = ComplianceClient.create()) {
+ *   RepeatRequest request =
+ *       RepeatRequest.newBuilder()
+ *           .setName("name3373707")
+ *           .setInfo(ComplianceData.newBuilder().build())
+ *           .setServerVerify(true)
+ *           .setIntendedBindingUri("intendedBindingUri780142386")
+ *           .setFInt32(-1143775883)
+ *           .setFInt64(-1143775788)
+ *           .setFDouble(-1239459382)
+ *           .setPInt32(-858673665)
+ *           .setPInt64(-858673570)
+ *           .setPDouble(-991225216)
+ *           .build();
+ *   RepeatResponse response = complianceClient.repeatDataBody(request);
+ * }
+ * }
+ * + *

======================= EchoClient ======================= + * + *

Service Description: This service is used showcase the four main types of rpcs - unary, server + * side streaming, client side streaming, and bidirectional streaming. This service also exposes + * methods that explicitly implement server delay, and paginated calls. Set the 'showcase-trailer' + * metadata key on any method to have the values echoed in the response trailers. Set the + * 'x-goog-request-params' metadata key on any method to have the values echoed in the response + * headers. + * + *

Sample for EchoClient: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (EchoClient echoClient = EchoClient.create()) {
+ *   EchoRequest request =
+ *       EchoRequest.newBuilder()
+ *           .setSeverity(Severity.forNumber(0))
+ *           .setHeader("header-1221270899")
+ *           .setOtherHeader("otherHeader-2026585667")
+ *           .build();
+ *   EchoResponse response = echoClient.echo(request);
+ * }
+ * }
+ * + *

======================= IdentityClient ======================= + * + *

Service Description: A simple identity service. + * + *

Sample for IdentityClient: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (IdentityClient identityClient = IdentityClient.create()) {
+ *   String displayName = "displayName1714148973";
+ *   String email = "email96619420";
+ *   User response = identityClient.createUser(displayName, email);
+ * }
+ * }
+ * + *

======================= MessagingClient ======================= + * + *

Service Description: A simple messaging service that implements chat rooms and profile posts. + * + *

This messaging service showcases the features that API clients generated by gapic-generators + * implement. + * + *

Sample for MessagingClient: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (MessagingClient messagingClient = MessagingClient.create()) {
+ *   String displayName = "displayName1714148973";
+ *   String description = "description-1724546052";
+ *   Room response = messagingClient.createRoom(displayName, description);
+ * }
+ * }
+ * + *

======================= SequenceServiceClient ======================= + * + *

Sample for SequenceServiceClient: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (SequenceServiceClient sequenceServiceClient = SequenceServiceClient.create()) {
+ *   Sequence sequence = Sequence.newBuilder().build();
+ *   Sequence response = sequenceServiceClient.createSequence(sequence);
+ * }
+ * }
+ * + *

======================= TestingClient ======================= + * + *

Service Description: A service to facilitate running discrete sets of tests against Showcase. + * + *

Sample for TestingClient: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (TestingClient testingClient = TestingClient.create()) {
+ *   CreateSessionRequest request =
+ *       CreateSessionRequest.newBuilder().setSession(Session.newBuilder().build()).build();
+ *   Session response = testingClient.createSession(request);
+ * }
+ * }
* *

======================= WickedClient ======================= * diff --git a/showcase/scripts/update.sh b/showcase/scripts/update.sh index b6c882301f..ad94efb740 100755 --- a/showcase/scripts/update.sh +++ b/showcase/scripts/update.sh @@ -26,20 +26,15 @@ case $1 in proto) PROTO_PROJECT_DIR=proto-gapic-showcase-v1beta1 PROTO_ARCHIVE=$(find . -name 'proto-google-cloud-showcase-v1beta1-java.tar.gz') - PROTO_ARCHIVE_EXTENDED=$(find . -name 'proto-google-cloud-showcase-extended-v1beta1-java.tar.gz') clear_existing $PROTO_PROJECT_DIR create_unpack_dir proto_unpacked PROTO_UNPACK_DIR=$PWD tar -xzf "$BAZEL_ROOT/$PROTO_ARCHIVE" - tar -xzf "$BAZEL_ROOT/$PROTO_ARCHIVE_EXTENDED" - # TODO(lawrenceqiu): Why is it generating Grpc files for the showcase-extended protos only? - find . -name '*Grpc*.java' -delete delete_unneeded cd "$BUILD_WORKSPACE_DIRECTORY/showcase/$PROTO_PROJECT_DIR" mkdir -p ./src cp -r "$PROTO_UNPACK_DIR"/proto-google-cloud-showcase-v1beta1-java/src/* ./src - cp -r "$PROTO_UNPACK_DIR"/proto-google-cloud-showcase-extended-v1beta1-java/src/* ./src ;; grpc) @@ -60,13 +55,11 @@ case $1 in gapic) GAPIC_PROJECT_DIR=gapic-showcase GAPIC_JAR=$(find . -name 'showcase_java_gapic_srcjar_raw.srcjar') - GAPIC_JAR_EXTENDED=$(find . -name 'showcase_java_gapic_extended_srcjar_raw.srcjar') clear_existing $GAPIC_PROJECT_DIR create_unpack_dir gapic_unpacked GAPIC_UNPACK_DIR=$PWD unzip -q -c "$BAZEL_ROOT/$GAPIC_JAR" temp-codegen.srcjar | jar x - unzip -q -c "$BAZEL_ROOT/$GAPIC_JAR_EXTENDED" temp-codegen.srcjar | jar x cd "$BUILD_WORKSPACE_DIRECTORY/showcase/$GAPIC_PROJECT_DIR" cp -r "$GAPIC_UNPACK_DIR"/* ./ ;; From aa666b21773279bb1b0bf3a04bb6556252a136ff Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Fri, 20 Jan 2023 13:10:20 -0500 Subject: [PATCH 44/63] chore: Update bazel build file --- showcase/BUILD.bazel | 25 ++++++------------------- showcase/scripts/verify.sh | 8 +++++--- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/showcase/BUILD.bazel b/showcase/BUILD.bazel index 55ebb6018f..a594f66924 100644 --- a/showcase/BUILD.bazel +++ b/showcase/BUILD.bazel @@ -27,21 +27,10 @@ java_proto_library( ], ) -java_proto_library( - name = "showcase_java_proto_extended", - deps = [ - "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", - ], -) - java_grpc_library( name = "showcase_java_grpc", - srcs = [ - "@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_proto", - ], - deps = [ - ":showcase_java_proto", - ], + srcs = ["@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_proto"], + deps = [":showcase_java_proto"], ) java_grpc_library( @@ -49,9 +38,7 @@ java_grpc_library( srcs = [ "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", ], - deps = [ - ":showcase_java_proto_extended", - ], + deps = [":showcase_java_proto"], ) java_gapic_library( @@ -68,7 +55,6 @@ java_gapic_library( transport = "grpc+rest", deps = [ ":showcase_java_proto", - ":showcase_java_proto_extended", "@com_google_googleapis//google/api:api_java_proto", ], ) @@ -79,10 +65,11 @@ java_gapic_assembly_gradle_pkg( transport = "grpc+rest", deps = [ ":showcase_java_gapic", + # TODO(lawrenceqiu): Not adding :showcase_java_grpc_extended dep as that includes WickedGrpc.java + # Need to figure out why it's being included ":showcase_java_grpc", ":showcase_java_proto", "@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_proto", - "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", ], ) @@ -151,7 +138,7 @@ PROTO_DATA = [ "proto-google-cloud-showcase-v1beta1-java.tar.gz", ":proto_gapic_showcase_files", ":showcase_java_proto", - ":showcase_java_proto_extended", +# ":showcase_java_proto_extended", ] sh_binary( diff --git a/showcase/scripts/verify.sh b/showcase/scripts/verify.sh index ae6ffb4d35..05ec90266a 100755 --- a/showcase/scripts/verify.sh +++ b/showcase/scripts/verify.sh @@ -31,7 +31,7 @@ case $1 in create_unpack_dir proto_unpacked PROTO_UNPACK_DIR=$PWD - tar -xzf "../$PROTO_ARCHIVE" + tar -xzf "$BAZEL_ROOT/$PROTO_ARCHIVE" delete_unneeded diff -ru "$SHOWCASE_DIR/$PROTO_PROJECT_DIR"/src/main/java "$PROTO_UNPACK_DIR/$PROTO_ARCHIVE_NAME"/src/main/java ;; @@ -39,10 +39,12 @@ case $1 in grpc) GRPC_PROJECT_DIR=grpc-gapic-showcase-v1beta1 GRPC_JAR=$(find . -name 'libshowcase_java_grpc-src.jar') + GRPC_JAR_EXTENDED=$(find . -name 'libshowcase_java_grpc_extended-src.jar') create_unpack_dir grpc_unpacked GRPC_UNPACK_DIR=$PWD - jar xf "../$GRPC_JAR" + jar xf "$BAZEL_ROOT/$GRPC_JAR" + jar xf "$BAZEL_ROOT/$GRPC_JAR_EXTENDED" delete_unneeded diff -ru "$SHOWCASE_DIR/$GRPC_PROJECT_DIR"/src/main/java/com "$GRPC_UNPACK_DIR"/com ;; @@ -53,7 +55,7 @@ case $1 in create_unpack_dir gapic_unpacked GAPIC_UNPACK_DIR=$PWD - unzip -q -c "../$GAPIC_JAR" temp-codegen.srcjar | jar x + unzip -q -c "$BAZEL_ROOT/$GAPIC_JAR" temp-codegen.srcjar | jar x delete_unneeded diff -ru "$SHOWCASE_DIR/$GAPIC_PROJECT_DIR"/src "$GAPIC_UNPACK_DIR"/src --exclude=it ;; From 485a222c812ddb6eea3bb0de03c4a0fae588ca3d Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Fri, 20 Jan 2023 15:27:20 -0500 Subject: [PATCH 45/63] Apply suggestions from code review Co-authored-by: Burke Davison <40617934+burkedavison@users.noreply.github.com> --- showcase/gapic-showcase-extended/proto/wicked.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/showcase/gapic-showcase-extended/proto/wicked.proto b/showcase/gapic-showcase-extended/proto/wicked.proto index 2d3ca29421..ea45fee918 100644 --- a/showcase/gapic-showcase-extended/proto/wicked.proto +++ b/showcase/gapic-showcase-extended/proto/wicked.proto @@ -1,4 +1,4 @@ -// Copyright 2018 Google LLC +// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -27,7 +27,7 @@ option ruby_package = "Google::Showcase::V1beta1"; // RPCs for HttpJson (Http 1.1). // Non-Enabled: Missing the (google.api.http) annotation to enabled it // Non-Eligible: BIDI and Client side streaming are not supported with Http 1.1 -// Service name is reference to `No REST for the Wicked` (Credit: @BurkeDavison) +// Service name is reference to `No REST for the Wicked` service Wicked { // This service is meant to only run locally on the port 7469 (keypad digits // for "show"). From f1d8b9c5cbdac34aee9be79e2cd103c237f17afb Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Mon, 23 Jan 2023 11:54:58 -0500 Subject: [PATCH 46/63] chore: Update showcase tests --- .../src/main/java/com/google/showcase/v1beta1/WickedClient.java | 2 +- .../src/main/java/com/google/showcase/v1beta1/package-info.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedClient.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedClient.java index 7e37206d81..4fcd65361b 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedClient.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedClient.java @@ -32,7 +32,7 @@ * Service Description: This service is used to show a Service with either non-enabled or * non-eligible RPCs for HttpJson (Http 1.1). Non-Enabled: Missing the (google.api.http) annotation * to enabled it Non-Eligible: BIDI and Client side streaming are not supported with Http 1.1 - * Service name is reference to `No REST for the Wicked` (Credit: {@literal @}BurkeDavison) + * Service name is reference to `No REST for the Wicked` * *

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: diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java index 36ff23e6de..c13b194922 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java @@ -161,7 +161,7 @@ *

Service Description: This service is used to show a Service with either non-enabled or * non-eligible RPCs for HttpJson (Http 1.1). Non-Enabled: Missing the (google.api.http) annotation * to enabled it Non-Eligible: BIDI and Client side streaming are not supported with Http 1.1 - * Service name is reference to `No REST for the Wicked` (Credit: {@literal @}BurkeDavison) + * Service name is reference to `No REST for the Wicked` * *

Sample for WickedClient: * From 10040ede22e404f10930a48829b4fb533c1649d6 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Mon, 23 Jan 2023 16:05:56 -0500 Subject: [PATCH 47/63] chore: Resolve sonar comments --- ...tractServiceStubSettingsClassComposer.java | 25 +++++++++++++------ .../ServiceStubSettingsClassComposer.java | 10 ++------ .../ServiceStubSettingsClassComposer.java | 5 ++++ 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java index 442eff07e2..70fef2796e 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java @@ -95,6 +95,7 @@ import com.google.api.generator.gapic.model.Method.Stream; import com.google.api.generator.gapic.model.Sample; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -163,6 +164,10 @@ public TransportContext getTransportContext() { return transportContext; } + public Transport getTransport() { + return Transport.GRPC; + } + @Override public GapicClass generate(GapicContext context, Service service) { // TODO(miraleung): Robustify this against a null serviceConfig. @@ -1779,13 +1784,19 @@ private static List createNestedClassConstructorMethods( protected List createNestedClassCreateDefaultMethods( Service service, TypeStore typeStore) { - return Collections.singletonList( - createNestedClassCreateDefaultMethod( - typeStore, - "createDefault", - "defaultTransportChannelProvider", - null, - "defaultApiClientHeaderProviderBuilder")); + if (service.hasAnyEnabledMethodsForTransport(getTransport())) { + List methodDefinitions = new ArrayList<>(); + methodDefinitions.add( + createNestedClassCreateDefaultMethod( + typeStore, + "createDefault", + "defaultTransportChannelProvider", + null, + "defaultApiClientHeaderProviderBuilder")); + return methodDefinitions; + } else { + return Collections.emptyList(); + } } protected MethodDefinition createNestedClassCreateDefaultMethod( diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java index b79c74ed99..e9d957656a 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java @@ -177,14 +177,8 @@ public MethodDefinition createDefaultTransportChannelProviderMethod() { @Override protected List createNestedClassCreateDefaultMethods( Service service, TypeStore typeStore) { - List methodDefinitions = new ArrayList<>(); - methodDefinitions.add( - createNestedClassCreateDefaultMethod( - typeStore, - "createDefault", - "defaultTransportChannelProvider", - null, - "defaultApiClientHeaderProviderBuilder")); + List methodDefinitions = + super.createNestedClassCreateDefaultMethods(service, typeStore); if (service.hasAnyEnabledMethodsForTransport(Transport.REST)) { methodDefinitions.add( createNestedClassCreateDefaultMethod( diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java index 68f56604ec..b0f0ea1047 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java @@ -51,6 +51,11 @@ private static TypeStore createStaticTypes() { InstantiatingHttpJsonChannelProvider.class)); } + @Override + public Transport getTransport() { + return Transport.REST; + } + @Override protected List createApiClientHeaderProviderBuilderMethods( Service service, TypeStore typeStore) { From 27d1f1ceedd71184aabb51d781f9b92ba203b660 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Mon, 23 Jan 2023 17:47:14 -0500 Subject: [PATCH 48/63] chore: Update unit tests for wicked proto --- .../grpcrest/GrpcRestTestProtoLoader.java | 34 +++ ...rviceCallableFactoryClassComposerTest.java | 13 + .../GrpcServiceStubClassComposerTest.java | 13 + ...rviceCallableFactoryClassComposerTest.java | 13 + ...sonServiceClientTestClassComposerTest.java | 14 + .../HttpJsonServiceStubClassComposerTest.java | 13 + .../ServiceClientClassComposerTest.java | 13 + .../ServiceClientTestClassComposerTest.java | 14 + .../ServiceSettingsClassComposerTest.java | 13 + .../ServiceStubSettingsClassComposerTest.java | 13 + .../goldens/GrpcWickedCallableFactory.golden | 278 +++++++++++++++++ .../grpcrest/goldens/GrpcWickedStub.golden | 278 +++++++++++++++++ .../HttpJsonWickedCallableFactory.golden | 278 +++++++++++++++++ .../goldens/HttpJsonWickedStub.golden | 278 +++++++++++++++++ .../grpcrest/goldens/WickedClient.golden | 278 +++++++++++++++++ .../goldens/WickedClientHttpJsonTest.golden | 278 +++++++++++++++++ .../grpcrest/goldens/WickedClientTest.golden | 197 ++++++++++++ .../grpcrest/goldens/WickedSettings.golden | 191 ++++++++++++ .../goldens/WickedStubSettings.golden | 285 ++++++++++++++++++ .../src/test/proto/wicked.proto | 49 +++ 20 files changed, 2543 insertions(+) create mode 100644 gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedCallableFactory.golden create mode 100644 gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedStub.golden create mode 100644 gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedCallableFactory.golden create mode 100644 gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedStub.golden create mode 100644 gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClient.golden create mode 100644 gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClientHttpJsonTest.golden create mode 100644 gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClientTest.golden create mode 100644 gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedSettings.golden create mode 100644 gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden create mode 100644 gapic-generator-java/src/test/proto/wicked.proto diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcRestTestProtoLoader.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcRestTestProtoLoader.java index 05c0241327..f31a9de186 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcRestTestProtoLoader.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcRestTestProtoLoader.java @@ -31,6 +31,9 @@ import com.google.protobuf.Descriptors.ServiceDescriptor; import com.google.protobuf.StructProto; import com.google.showcase.grpcrest.v1beta1.EchoGrpcrest; +import com.google.showcase.v1beta1.MessagingOuterClass; +import com.google.showcase.v1beta1.WickedOuterClass; + import java.nio.file.Path; import java.nio.file.Paths; import java.util.HashSet; @@ -82,4 +85,35 @@ public GapicContext parseShowcaseEcho() { .setTransport(getTransport()) .build(); } + + public GapicContext parseShowcaseWicked() { + FileDescriptor fileDescriptor = WickedOuterClass.getDescriptor(); + ServiceDescriptor messagingService = fileDescriptor.getServices().get(0); + assertEquals(messagingService.getName(), "Wicked"); + + Map messageTypes = Parser.parseMessages(fileDescriptor); + messageTypes.putAll(Parser.parseMessages(OperationsProto.getDescriptor())); + messageTypes.putAll(Parser.parseMessages(StructProto.getDescriptor())); + + Map resourceNames = Parser.parseResourceNames(fileDescriptor); + Set outputResourceNames = new HashSet<>(); + List services = + Parser.parseService( + fileDescriptor, messageTypes, resourceNames, Optional.empty(), outputResourceNames); + + String jsonFilename = "showcase_grpc_service_config.json"; + Path jsonPath = Paths.get(getTestFilesDirectory(), jsonFilename); + Optional configOpt = ServiceConfigParser.parse(jsonPath.toString()); + assertTrue(configOpt.isPresent()); + GapicServiceConfig config = configOpt.get(); + + return GapicContext.builder() + .setMessages(messageTypes) + .setResourceNames(resourceNames) + .setServices(services) + .setServiceConfig(config) + .setHelperResourceNames(outputResourceNames) + .setTransport(getTransport()) + .build(); + } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceCallableFactoryClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceCallableFactoryClassComposerTest.java index dc6adc72fe..e5f8e7c07a 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceCallableFactoryClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceCallableFactoryClassComposerTest.java @@ -40,4 +40,17 @@ public void generateServiceClasses() { Paths.get(Utils.getGoldenDir(this.getClass()), "GrpcEchoCallableFactory.golden"); Assert.assertCodeEquals(goldenFilePath, visitor.write()); } + + @Test + public void generateServiceClassesWicked() { + GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); + Service wickedProtoService = context.services().get(0); + GapicClass clazz = ServiceClientClassComposer.instance().generate(context, wickedProtoService); + + JavaWriterVisitor visitor = new JavaWriterVisitor(); + clazz.classDefinition().accept(visitor); + Utils.saveCodegenToFile(this.getClass(), "GrpcWickedCallableFactory.golden", visitor.write()); + Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "GrpcWickedCallableFactory.golden"); + Assert.assertCodeEquals(goldenFilePath, visitor.write()); + } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceStubClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceStubClassComposerTest.java index f9385b56b1..3a505aceb8 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceStubClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceStubClassComposerTest.java @@ -38,4 +38,17 @@ public void generateServiceClasses() { Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "GrpcEchoStub.golden"); Assert.assertCodeEquals(goldenFilePath, visitor.write()); } + + @Test + public void generateServiceClassesWicked() { + GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); + Service wickedProtoService = context.services().get(0); + GapicClass clazz = ServiceClientClassComposer.instance().generate(context, wickedProtoService); + + JavaWriterVisitor visitor = new JavaWriterVisitor(); + clazz.classDefinition().accept(visitor); + Utils.saveCodegenToFile(this.getClass(), "GrpcWickedStub.golden", visitor.write()); + Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "GrpcWickedStub.golden"); + Assert.assertCodeEquals(goldenFilePath, visitor.write()); + } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceCallableFactoryClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceCallableFactoryClassComposerTest.java index 249013974f..0615e0cb7b 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceCallableFactoryClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceCallableFactoryClassComposerTest.java @@ -40,4 +40,17 @@ public void generateServiceClasses() { Paths.get(Utils.getGoldenDir(this.getClass()), "HttpJsonEchoCallableFactory.golden"); Assert.assertCodeEquals(goldenFilePath, visitor.write()); } + + @Test + public void generateServiceClassesWicked() { + GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); + Service wickedProtoService = context.services().get(0); + GapicClass clazz = ServiceClientClassComposer.instance().generate(context, wickedProtoService); + + JavaWriterVisitor visitor = new JavaWriterVisitor(); + clazz.classDefinition().accept(visitor); + Utils.saveCodegenToFile(this.getClass(), "HttpJsonWickedCallableFactory.golden", visitor.write()); + Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "HttpJsonWickedCallableFactory.golden"); + Assert.assertCodeEquals(goldenFilePath, visitor.write()); + } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposerTest.java index 23d0a9adb3..41f538f167 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposerTest.java @@ -20,6 +20,7 @@ import com.google.api.generator.gapic.model.GapicClass; import com.google.api.generator.gapic.model.GapicContext; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.test.framework.Assert; import com.google.api.generator.test.framework.Utils; import java.nio.file.Path; import java.nio.file.Paths; @@ -40,4 +41,17 @@ public void generateServiceClasses() { Paths.get(Utils.getGoldenDir(this.getClass()), "EchoClientHttpJsonTest.golden"); assertCodeEquals(goldenFilePath, visitor.write()); } + + @Test + public void generateServiceClassesWicked() { + GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); + Service wickedProtoService = context.services().get(0); + GapicClass clazz = ServiceClientClassComposer.instance().generate(context, wickedProtoService); + + JavaWriterVisitor visitor = new JavaWriterVisitor(); + clazz.classDefinition().accept(visitor); + Utils.saveCodegenToFile(this.getClass(), "WickedClientHttpJsonTest.golden", visitor.write()); + Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "WickedClientHttpJsonTest.golden"); + Assert.assertCodeEquals(goldenFilePath, visitor.write()); + } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposerTest.java index 87f21c8872..0dd0190852 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposerTest.java @@ -38,4 +38,17 @@ public void generateServiceClasses() { Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "HttpJsonEchoStub.golden"); Assert.assertCodeEquals(goldenFilePath, visitor.write()); } + + @Test + public void generateServiceClassesWicked() { + GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); + Service wickedProtoService = context.services().get(0); + GapicClass clazz = ServiceClientClassComposer.instance().generate(context, wickedProtoService); + + JavaWriterVisitor visitor = new JavaWriterVisitor(); + clazz.classDefinition().accept(visitor); + Utils.saveCodegenToFile(this.getClass(), "HttpJsonWickedStub.golden", visitor.write()); + Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "HttpJsonWickedStub.golden"); + Assert.assertCodeEquals(goldenFilePath, visitor.write()); + } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposerTest.java index 0be072badd..ded1a19112 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientClassComposerTest.java @@ -50,4 +50,17 @@ public void generateServiceClassesEmpty() { Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "EchoEmpty.golden"); Assert.assertCodeEquals(goldenFilePath, visitor.write()); } + + @Test + public void generateServiceClassesWicked() { + GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); + Service wickedProtoService = context.services().get(0); + GapicClass clazz = ServiceClientClassComposer.instance().generate(context, wickedProtoService); + + JavaWriterVisitor visitor = new JavaWriterVisitor(); + clazz.classDefinition().accept(visitor); + Utils.saveCodegenToFile(this.getClass(), "WickedClient.golden", visitor.write()); + Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "WickedClient.golden"); + Assert.assertCodeEquals(goldenFilePath, visitor.write()); + } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientTestClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientTestClassComposerTest.java index d7d4053f07..5bfb2f2ed5 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientTestClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientTestClassComposerTest.java @@ -21,6 +21,7 @@ import com.google.api.generator.gapic.model.GapicClass; import com.google.api.generator.gapic.model.GapicContext; import com.google.api.generator.gapic.model.Service; +import com.google.api.generator.test.framework.Assert; import com.google.api.generator.test.framework.Utils; import java.nio.file.Path; import java.nio.file.Paths; @@ -40,4 +41,17 @@ public void generateServiceClasses() { Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "EchoClientTest.golden"); assertCodeEquals(goldenFilePath, visitor.write()); } + + @Test + public void generateServiceClassesWicked() { + GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); + Service wickedProtoService = context.services().get(0); + GapicClass clazz = ServiceClientTestClassComposer.instance().generate(context, wickedProtoService); + + JavaWriterVisitor visitor = new JavaWriterVisitor(); + clazz.classDefinition().accept(visitor); + Utils.saveCodegenToFile(this.getClass(), "WickedClientTest.golden", visitor.write()); + Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "WickedClientTest.golden"); + Assert.assertCodeEquals(goldenFilePath, visitor.write()); + } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceSettingsClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceSettingsClassComposerTest.java index 8ccca9269b..a5202d31c8 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceSettingsClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceSettingsClassComposerTest.java @@ -37,4 +37,17 @@ public void generateServiceClasses() { Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "EchoSettings.golden"); Assert.assertCodeEquals(goldenFilePath, visitor.write()); } + + @Test + public void generateServiceClassesWicked() { + GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); + Service wickedProtoService = context.services().get(0); + GapicClass clazz = ServiceSettingsClassComposer.instance().generate(context, wickedProtoService); + + JavaWriterVisitor visitor = new JavaWriterVisitor(); + clazz.classDefinition().accept(visitor); + Utils.saveCodegenToFile(this.getClass(), "WickedSettings.golden", visitor.write()); + Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "WickedSettings.golden"); + Assert.assertCodeEquals(goldenFilePath, visitor.write()); + } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposerTest.java index 812df41ff8..e27350b050 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposerTest.java @@ -38,4 +38,17 @@ public void generateServiceClasses() { Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "EchoStubSettings.golden"); Assert.assertCodeEquals(goldenFilePath, visitor.write()); } + + @Test + public void generateServiceClassesWicked() { + GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); + Service wickedProtoService = context.services().get(0); + GapicClass clazz = ServiceStubSettingsClassComposer.instance().generate(context, wickedProtoService); + + JavaWriterVisitor visitor = new JavaWriterVisitor(); + clazz.classDefinition().accept(visitor); + Utils.saveCodegenToFile(this.getClass(), "WickedStubSettings.golden", visitor.write()); + Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "WickedStubSettings.golden"); + Assert.assertCodeEquals(goldenFilePath, visitor.write()); + } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedCallableFactory.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedCallableFactory.golden new file mode 100644 index 0000000000..67f9212085 --- /dev/null +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedCallableFactory.golden @@ -0,0 +1,278 @@ +package com.google.showcase.v1beta1; + +import com.google.api.core.BetaApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.rpc.BidiStreamingCallable; +import com.google.api.gax.rpc.ClientStreamingCallable; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.showcase.v1beta1.stub.WickedStub; +import com.google.showcase.v1beta1.stub.WickedStubSettings; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * 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
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (WickedClient wickedClient = WickedClient.create()) {
+ *   EvilRequest request =
+ *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+ *   EvilResponse response = wickedClient.craftEvilPlan(request);
+ * }
+ * }
+ * + *

Note: close() needs to be called on the WickedClient 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 WickedSettings to create(). + * For example: + * + *

To customize credentials: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings wickedSettings =
+ *     WickedSettings.newBuilder()
+ *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
+ *         .build();
+ * WickedClient wickedClient = WickedClient.create(wickedSettings);
+ * }
+ * + *

To customize the endpoint: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings wickedSettings = WickedSettings.newBuilder().setEndpoint(myEndpoint).build();
+ * WickedClient wickedClient = WickedClient.create(wickedSettings);
+ * }
+ * + *

Please refer to the GitHub repository's samples for more quickstart code snippets. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class WickedClient implements BackgroundResource { + private final WickedSettings settings; + private final WickedStub stub; + + /** Constructs an instance of WickedClient with default settings. */ + public static final WickedClient create() throws IOException { + return create(WickedSettings.newBuilder().build()); + } + + /** + * Constructs an instance of WickedClient, 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 WickedClient create(WickedSettings settings) throws IOException { + return new WickedClient(settings); + } + + /** + * Constructs an instance of WickedClient, using the given stub for making calls. This is for + * advanced usage - prefer using create(WickedSettings). + */ + public static final WickedClient create(WickedStub stub) { + return new WickedClient(stub); + } + + /** + * Constructs an instance of WickedClient, 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 WickedClient(WickedSettings settings) throws IOException { + this.settings = settings; + this.stub = ((WickedStubSettings) settings.getStubSettings()).createStub(); + } + + protected WickedClient(WickedStub stub) { + this.settings = null; + this.stub = stub; + } + + public final WickedSettings getSettings() { + return settings; + } + + public WickedStub getStub() { + return stub; + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   EvilResponse response = wickedClient.craftEvilPlan(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 EvilResponse craftEvilPlan(EvilRequest request) { + return craftEvilPlanCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   ApiFuture future = wickedClient.craftEvilPlanCallable().futureCall(request);
+   *   // Do something.
+   *   EvilResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable craftEvilPlanCallable() { + return stub.craftEvilPlanCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   BidiStream bidiStream =
+   *       wickedClient.brainstormEvilPlansCallable().call();
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   bidiStream.send(request);
+   *   for (EvilResponse response : bidiStream) {
+   *     // Do something when a response is received.
+   *   }
+   * }
+   * }
+ */ + public final BidiStreamingCallable brainstormEvilPlansCallable() { + return stub.brainstormEvilPlansCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   ApiStreamObserver responseObserver =
+   *       new ApiStreamObserver() {
+   *         {@literal @}Override
+   *         public void onNext(EvilResponse response) {
+   *           // Do something when a response is received.
+   *         }
+   *
+   *         {@literal @}Override
+   *         public void onError(Throwable t) {
+   *           // Add error-handling
+   *         }
+   *
+   *         {@literal @}Override
+   *         public void onCompleted() {
+   *           // Do something when complete.
+   *         }
+   *       };
+   *   ApiStreamObserver requestObserver =
+   *       wickedClient.persuadeEvilPlan().clientStreamingCall(responseObserver);
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   requestObserver.onNext(request);
+   * }
+   * }
+ */ + public final ClientStreamingCallable persuadeEvilPlanCallable() { + return stub.persuadeEvilPlanCallable(); + } + + @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); + } +} diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedStub.golden new file mode 100644 index 0000000000..67f9212085 --- /dev/null +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedStub.golden @@ -0,0 +1,278 @@ +package com.google.showcase.v1beta1; + +import com.google.api.core.BetaApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.rpc.BidiStreamingCallable; +import com.google.api.gax.rpc.ClientStreamingCallable; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.showcase.v1beta1.stub.WickedStub; +import com.google.showcase.v1beta1.stub.WickedStubSettings; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * 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
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (WickedClient wickedClient = WickedClient.create()) {
+ *   EvilRequest request =
+ *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+ *   EvilResponse response = wickedClient.craftEvilPlan(request);
+ * }
+ * }
+ * + *

Note: close() needs to be called on the WickedClient 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 WickedSettings to create(). + * For example: + * + *

To customize credentials: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings wickedSettings =
+ *     WickedSettings.newBuilder()
+ *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
+ *         .build();
+ * WickedClient wickedClient = WickedClient.create(wickedSettings);
+ * }
+ * + *

To customize the endpoint: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings wickedSettings = WickedSettings.newBuilder().setEndpoint(myEndpoint).build();
+ * WickedClient wickedClient = WickedClient.create(wickedSettings);
+ * }
+ * + *

Please refer to the GitHub repository's samples for more quickstart code snippets. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class WickedClient implements BackgroundResource { + private final WickedSettings settings; + private final WickedStub stub; + + /** Constructs an instance of WickedClient with default settings. */ + public static final WickedClient create() throws IOException { + return create(WickedSettings.newBuilder().build()); + } + + /** + * Constructs an instance of WickedClient, 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 WickedClient create(WickedSettings settings) throws IOException { + return new WickedClient(settings); + } + + /** + * Constructs an instance of WickedClient, using the given stub for making calls. This is for + * advanced usage - prefer using create(WickedSettings). + */ + public static final WickedClient create(WickedStub stub) { + return new WickedClient(stub); + } + + /** + * Constructs an instance of WickedClient, 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 WickedClient(WickedSettings settings) throws IOException { + this.settings = settings; + this.stub = ((WickedStubSettings) settings.getStubSettings()).createStub(); + } + + protected WickedClient(WickedStub stub) { + this.settings = null; + this.stub = stub; + } + + public final WickedSettings getSettings() { + return settings; + } + + public WickedStub getStub() { + return stub; + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   EvilResponse response = wickedClient.craftEvilPlan(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 EvilResponse craftEvilPlan(EvilRequest request) { + return craftEvilPlanCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   ApiFuture future = wickedClient.craftEvilPlanCallable().futureCall(request);
+   *   // Do something.
+   *   EvilResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable craftEvilPlanCallable() { + return stub.craftEvilPlanCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   BidiStream bidiStream =
+   *       wickedClient.brainstormEvilPlansCallable().call();
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   bidiStream.send(request);
+   *   for (EvilResponse response : bidiStream) {
+   *     // Do something when a response is received.
+   *   }
+   * }
+   * }
+ */ + public final BidiStreamingCallable brainstormEvilPlansCallable() { + return stub.brainstormEvilPlansCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   ApiStreamObserver responseObserver =
+   *       new ApiStreamObserver() {
+   *         {@literal @}Override
+   *         public void onNext(EvilResponse response) {
+   *           // Do something when a response is received.
+   *         }
+   *
+   *         {@literal @}Override
+   *         public void onError(Throwable t) {
+   *           // Add error-handling
+   *         }
+   *
+   *         {@literal @}Override
+   *         public void onCompleted() {
+   *           // Do something when complete.
+   *         }
+   *       };
+   *   ApiStreamObserver requestObserver =
+   *       wickedClient.persuadeEvilPlan().clientStreamingCall(responseObserver);
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   requestObserver.onNext(request);
+   * }
+   * }
+ */ + public final ClientStreamingCallable persuadeEvilPlanCallable() { + return stub.persuadeEvilPlanCallable(); + } + + @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); + } +} diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedCallableFactory.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedCallableFactory.golden new file mode 100644 index 0000000000..67f9212085 --- /dev/null +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedCallableFactory.golden @@ -0,0 +1,278 @@ +package com.google.showcase.v1beta1; + +import com.google.api.core.BetaApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.rpc.BidiStreamingCallable; +import com.google.api.gax.rpc.ClientStreamingCallable; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.showcase.v1beta1.stub.WickedStub; +import com.google.showcase.v1beta1.stub.WickedStubSettings; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * 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
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (WickedClient wickedClient = WickedClient.create()) {
+ *   EvilRequest request =
+ *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+ *   EvilResponse response = wickedClient.craftEvilPlan(request);
+ * }
+ * }
+ * + *

Note: close() needs to be called on the WickedClient 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 WickedSettings to create(). + * For example: + * + *

To customize credentials: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings wickedSettings =
+ *     WickedSettings.newBuilder()
+ *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
+ *         .build();
+ * WickedClient wickedClient = WickedClient.create(wickedSettings);
+ * }
+ * + *

To customize the endpoint: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings wickedSettings = WickedSettings.newBuilder().setEndpoint(myEndpoint).build();
+ * WickedClient wickedClient = WickedClient.create(wickedSettings);
+ * }
+ * + *

Please refer to the GitHub repository's samples for more quickstart code snippets. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class WickedClient implements BackgroundResource { + private final WickedSettings settings; + private final WickedStub stub; + + /** Constructs an instance of WickedClient with default settings. */ + public static final WickedClient create() throws IOException { + return create(WickedSettings.newBuilder().build()); + } + + /** + * Constructs an instance of WickedClient, 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 WickedClient create(WickedSettings settings) throws IOException { + return new WickedClient(settings); + } + + /** + * Constructs an instance of WickedClient, using the given stub for making calls. This is for + * advanced usage - prefer using create(WickedSettings). + */ + public static final WickedClient create(WickedStub stub) { + return new WickedClient(stub); + } + + /** + * Constructs an instance of WickedClient, 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 WickedClient(WickedSettings settings) throws IOException { + this.settings = settings; + this.stub = ((WickedStubSettings) settings.getStubSettings()).createStub(); + } + + protected WickedClient(WickedStub stub) { + this.settings = null; + this.stub = stub; + } + + public final WickedSettings getSettings() { + return settings; + } + + public WickedStub getStub() { + return stub; + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   EvilResponse response = wickedClient.craftEvilPlan(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 EvilResponse craftEvilPlan(EvilRequest request) { + return craftEvilPlanCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   ApiFuture future = wickedClient.craftEvilPlanCallable().futureCall(request);
+   *   // Do something.
+   *   EvilResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable craftEvilPlanCallable() { + return stub.craftEvilPlanCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   BidiStream bidiStream =
+   *       wickedClient.brainstormEvilPlansCallable().call();
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   bidiStream.send(request);
+   *   for (EvilResponse response : bidiStream) {
+   *     // Do something when a response is received.
+   *   }
+   * }
+   * }
+ */ + public final BidiStreamingCallable brainstormEvilPlansCallable() { + return stub.brainstormEvilPlansCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   ApiStreamObserver responseObserver =
+   *       new ApiStreamObserver() {
+   *         {@literal @}Override
+   *         public void onNext(EvilResponse response) {
+   *           // Do something when a response is received.
+   *         }
+   *
+   *         {@literal @}Override
+   *         public void onError(Throwable t) {
+   *           // Add error-handling
+   *         }
+   *
+   *         {@literal @}Override
+   *         public void onCompleted() {
+   *           // Do something when complete.
+   *         }
+   *       };
+   *   ApiStreamObserver requestObserver =
+   *       wickedClient.persuadeEvilPlan().clientStreamingCall(responseObserver);
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   requestObserver.onNext(request);
+   * }
+   * }
+ */ + public final ClientStreamingCallable persuadeEvilPlanCallable() { + return stub.persuadeEvilPlanCallable(); + } + + @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); + } +} diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedStub.golden new file mode 100644 index 0000000000..67f9212085 --- /dev/null +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedStub.golden @@ -0,0 +1,278 @@ +package com.google.showcase.v1beta1; + +import com.google.api.core.BetaApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.rpc.BidiStreamingCallable; +import com.google.api.gax.rpc.ClientStreamingCallable; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.showcase.v1beta1.stub.WickedStub; +import com.google.showcase.v1beta1.stub.WickedStubSettings; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * 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
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (WickedClient wickedClient = WickedClient.create()) {
+ *   EvilRequest request =
+ *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+ *   EvilResponse response = wickedClient.craftEvilPlan(request);
+ * }
+ * }
+ * + *

Note: close() needs to be called on the WickedClient 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 WickedSettings to create(). + * For example: + * + *

To customize credentials: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings wickedSettings =
+ *     WickedSettings.newBuilder()
+ *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
+ *         .build();
+ * WickedClient wickedClient = WickedClient.create(wickedSettings);
+ * }
+ * + *

To customize the endpoint: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings wickedSettings = WickedSettings.newBuilder().setEndpoint(myEndpoint).build();
+ * WickedClient wickedClient = WickedClient.create(wickedSettings);
+ * }
+ * + *

Please refer to the GitHub repository's samples for more quickstart code snippets. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class WickedClient implements BackgroundResource { + private final WickedSettings settings; + private final WickedStub stub; + + /** Constructs an instance of WickedClient with default settings. */ + public static final WickedClient create() throws IOException { + return create(WickedSettings.newBuilder().build()); + } + + /** + * Constructs an instance of WickedClient, 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 WickedClient create(WickedSettings settings) throws IOException { + return new WickedClient(settings); + } + + /** + * Constructs an instance of WickedClient, using the given stub for making calls. This is for + * advanced usage - prefer using create(WickedSettings). + */ + public static final WickedClient create(WickedStub stub) { + return new WickedClient(stub); + } + + /** + * Constructs an instance of WickedClient, 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 WickedClient(WickedSettings settings) throws IOException { + this.settings = settings; + this.stub = ((WickedStubSettings) settings.getStubSettings()).createStub(); + } + + protected WickedClient(WickedStub stub) { + this.settings = null; + this.stub = stub; + } + + public final WickedSettings getSettings() { + return settings; + } + + public WickedStub getStub() { + return stub; + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   EvilResponse response = wickedClient.craftEvilPlan(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 EvilResponse craftEvilPlan(EvilRequest request) { + return craftEvilPlanCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   ApiFuture future = wickedClient.craftEvilPlanCallable().futureCall(request);
+   *   // Do something.
+   *   EvilResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable craftEvilPlanCallable() { + return stub.craftEvilPlanCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   BidiStream bidiStream =
+   *       wickedClient.brainstormEvilPlansCallable().call();
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   bidiStream.send(request);
+   *   for (EvilResponse response : bidiStream) {
+   *     // Do something when a response is received.
+   *   }
+   * }
+   * }
+ */ + public final BidiStreamingCallable brainstormEvilPlansCallable() { + return stub.brainstormEvilPlansCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   ApiStreamObserver responseObserver =
+   *       new ApiStreamObserver() {
+   *         {@literal @}Override
+   *         public void onNext(EvilResponse response) {
+   *           // Do something when a response is received.
+   *         }
+   *
+   *         {@literal @}Override
+   *         public void onError(Throwable t) {
+   *           // Add error-handling
+   *         }
+   *
+   *         {@literal @}Override
+   *         public void onCompleted() {
+   *           // Do something when complete.
+   *         }
+   *       };
+   *   ApiStreamObserver requestObserver =
+   *       wickedClient.persuadeEvilPlan().clientStreamingCall(responseObserver);
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   requestObserver.onNext(request);
+   * }
+   * }
+ */ + public final ClientStreamingCallable persuadeEvilPlanCallable() { + return stub.persuadeEvilPlanCallable(); + } + + @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); + } +} diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClient.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClient.golden new file mode 100644 index 0000000000..67f9212085 --- /dev/null +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClient.golden @@ -0,0 +1,278 @@ +package com.google.showcase.v1beta1; + +import com.google.api.core.BetaApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.rpc.BidiStreamingCallable; +import com.google.api.gax.rpc.ClientStreamingCallable; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.showcase.v1beta1.stub.WickedStub; +import com.google.showcase.v1beta1.stub.WickedStubSettings; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * 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
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (WickedClient wickedClient = WickedClient.create()) {
+ *   EvilRequest request =
+ *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+ *   EvilResponse response = wickedClient.craftEvilPlan(request);
+ * }
+ * }
+ * + *

Note: close() needs to be called on the WickedClient 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 WickedSettings to create(). + * For example: + * + *

To customize credentials: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings wickedSettings =
+ *     WickedSettings.newBuilder()
+ *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
+ *         .build();
+ * WickedClient wickedClient = WickedClient.create(wickedSettings);
+ * }
+ * + *

To customize the endpoint: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings wickedSettings = WickedSettings.newBuilder().setEndpoint(myEndpoint).build();
+ * WickedClient wickedClient = WickedClient.create(wickedSettings);
+ * }
+ * + *

Please refer to the GitHub repository's samples for more quickstart code snippets. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class WickedClient implements BackgroundResource { + private final WickedSettings settings; + private final WickedStub stub; + + /** Constructs an instance of WickedClient with default settings. */ + public static final WickedClient create() throws IOException { + return create(WickedSettings.newBuilder().build()); + } + + /** + * Constructs an instance of WickedClient, 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 WickedClient create(WickedSettings settings) throws IOException { + return new WickedClient(settings); + } + + /** + * Constructs an instance of WickedClient, using the given stub for making calls. This is for + * advanced usage - prefer using create(WickedSettings). + */ + public static final WickedClient create(WickedStub stub) { + return new WickedClient(stub); + } + + /** + * Constructs an instance of WickedClient, 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 WickedClient(WickedSettings settings) throws IOException { + this.settings = settings; + this.stub = ((WickedStubSettings) settings.getStubSettings()).createStub(); + } + + protected WickedClient(WickedStub stub) { + this.settings = null; + this.stub = stub; + } + + public final WickedSettings getSettings() { + return settings; + } + + public WickedStub getStub() { + return stub; + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   EvilResponse response = wickedClient.craftEvilPlan(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 EvilResponse craftEvilPlan(EvilRequest request) { + return craftEvilPlanCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   ApiFuture future = wickedClient.craftEvilPlanCallable().futureCall(request);
+   *   // Do something.
+   *   EvilResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable craftEvilPlanCallable() { + return stub.craftEvilPlanCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   BidiStream bidiStream =
+   *       wickedClient.brainstormEvilPlansCallable().call();
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   bidiStream.send(request);
+   *   for (EvilResponse response : bidiStream) {
+   *     // Do something when a response is received.
+   *   }
+   * }
+   * }
+ */ + public final BidiStreamingCallable brainstormEvilPlansCallable() { + return stub.brainstormEvilPlansCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   ApiStreamObserver responseObserver =
+   *       new ApiStreamObserver() {
+   *         {@literal @}Override
+   *         public void onNext(EvilResponse response) {
+   *           // Do something when a response is received.
+   *         }
+   *
+   *         {@literal @}Override
+   *         public void onError(Throwable t) {
+   *           // Add error-handling
+   *         }
+   *
+   *         {@literal @}Override
+   *         public void onCompleted() {
+   *           // Do something when complete.
+   *         }
+   *       };
+   *   ApiStreamObserver requestObserver =
+   *       wickedClient.persuadeEvilPlan().clientStreamingCall(responseObserver);
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   requestObserver.onNext(request);
+   * }
+   * }
+ */ + public final ClientStreamingCallable persuadeEvilPlanCallable() { + return stub.persuadeEvilPlanCallable(); + } + + @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); + } +} diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClientHttpJsonTest.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClientHttpJsonTest.golden new file mode 100644 index 0000000000..67f9212085 --- /dev/null +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClientHttpJsonTest.golden @@ -0,0 +1,278 @@ +package com.google.showcase.v1beta1; + +import com.google.api.core.BetaApi; +import com.google.api.gax.core.BackgroundResource; +import com.google.api.gax.rpc.BidiStreamingCallable; +import com.google.api.gax.rpc.ClientStreamingCallable; +import com.google.api.gax.rpc.UnaryCallable; +import com.google.showcase.v1beta1.stub.WickedStub; +import com.google.showcase.v1beta1.stub.WickedStubSettings; +import java.io.IOException; +import java.util.concurrent.TimeUnit; +import javax.annotation.Generated; + +// AUTO-GENERATED DOCUMENTATION AND CLASS. +/** + * 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
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * try (WickedClient wickedClient = WickedClient.create()) {
+ *   EvilRequest request =
+ *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+ *   EvilResponse response = wickedClient.craftEvilPlan(request);
+ * }
+ * }
+ * + *

Note: close() needs to be called on the WickedClient 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 WickedSettings to create(). + * For example: + * + *

To customize credentials: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings wickedSettings =
+ *     WickedSettings.newBuilder()
+ *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
+ *         .build();
+ * WickedClient wickedClient = WickedClient.create(wickedSettings);
+ * }
+ * + *

To customize the endpoint: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings wickedSettings = WickedSettings.newBuilder().setEndpoint(myEndpoint).build();
+ * WickedClient wickedClient = WickedClient.create(wickedSettings);
+ * }
+ * + *

Please refer to the GitHub repository's samples for more quickstart code snippets. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class WickedClient implements BackgroundResource { + private final WickedSettings settings; + private final WickedStub stub; + + /** Constructs an instance of WickedClient with default settings. */ + public static final WickedClient create() throws IOException { + return create(WickedSettings.newBuilder().build()); + } + + /** + * Constructs an instance of WickedClient, 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 WickedClient create(WickedSettings settings) throws IOException { + return new WickedClient(settings); + } + + /** + * Constructs an instance of WickedClient, using the given stub for making calls. This is for + * advanced usage - prefer using create(WickedSettings). + */ + public static final WickedClient create(WickedStub stub) { + return new WickedClient(stub); + } + + /** + * Constructs an instance of WickedClient, 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 WickedClient(WickedSettings settings) throws IOException { + this.settings = settings; + this.stub = ((WickedStubSettings) settings.getStubSettings()).createStub(); + } + + protected WickedClient(WickedStub stub) { + this.settings = null; + this.stub = stub; + } + + public final WickedSettings getSettings() { + return settings; + } + + public WickedStub getStub() { + return stub; + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *

{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   EvilResponse response = wickedClient.craftEvilPlan(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 EvilResponse craftEvilPlan(EvilRequest request) { + return craftEvilPlanCallable().call(request); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   ApiFuture future = wickedClient.craftEvilPlanCallable().futureCall(request);
+   *   // Do something.
+   *   EvilResponse response = future.get();
+   * }
+   * }
+ */ + public final UnaryCallable craftEvilPlanCallable() { + return stub.craftEvilPlanCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   BidiStream bidiStream =
+   *       wickedClient.brainstormEvilPlansCallable().call();
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   bidiStream.send(request);
+   *   for (EvilResponse response : bidiStream) {
+   *     // Do something when a response is received.
+   *   }
+   * }
+   * }
+ */ + public final BidiStreamingCallable brainstormEvilPlansCallable() { + return stub.brainstormEvilPlansCallable(); + } + + // AUTO-GENERATED DOCUMENTATION AND METHOD. + /** + * Sample code: + * + *
{@code
+   * // This snippet has been automatically generated and should be regarded as a code template only.
+   * // It will require modifications to work:
+   * // - It may require correct/in-range values for request initialization.
+   * // - It may require specifying regional endpoints when creating the service client as shown in
+   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+   * try (WickedClient wickedClient = WickedClient.create()) {
+   *   ApiStreamObserver responseObserver =
+   *       new ApiStreamObserver() {
+   *         {@literal @}Override
+   *         public void onNext(EvilResponse response) {
+   *           // Do something when a response is received.
+   *         }
+   *
+   *         {@literal @}Override
+   *         public void onError(Throwable t) {
+   *           // Add error-handling
+   *         }
+   *
+   *         {@literal @}Override
+   *         public void onCompleted() {
+   *           // Do something when complete.
+   *         }
+   *       };
+   *   ApiStreamObserver requestObserver =
+   *       wickedClient.persuadeEvilPlan().clientStreamingCall(responseObserver);
+   *   EvilRequest request =
+   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
+   *   requestObserver.onNext(request);
+   * }
+   * }
+ */ + public final ClientStreamingCallable persuadeEvilPlanCallable() { + return stub.persuadeEvilPlanCallable(); + } + + @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); + } +} diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClientTest.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClientTest.golden new file mode 100644 index 0000000000..69db1fda7a --- /dev/null +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClientTest.golden @@ -0,0 +1,197 @@ +package com.google.showcase.v1beta1; + +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.grpc.testing.MockStreamObserver; +import com.google.api.gax.rpc.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ApiStreamObserver; +import com.google.api.gax.rpc.BidiStreamingCallable; +import com.google.api.gax.rpc.ClientStreamingCallable; +import com.google.api.gax.rpc.InvalidArgumentException; +import com.google.api.gax.rpc.StatusCode; +import com.google.protobuf.AbstractMessage; +import io.grpc.StatusRuntimeException; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.ExecutionException; +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 WickedClientTest { + private static MockServiceHelper mockServiceHelper; + private static MockWicked mockWicked; + private LocalChannelProvider channelProvider; + private WickedClient client; + + @BeforeClass + public static void startStaticServer() { + mockWicked = new MockWicked(); + mockServiceHelper = + new MockServiceHelper( + UUID.randomUUID().toString(), Arrays.asList(mockWicked)); + mockServiceHelper.start(); + } + + @AfterClass + public static void stopServer() { + mockServiceHelper.stop(); + } + + @Before + public void setUp() throws IOException { + mockServiceHelper.reset(); + channelProvider = mockServiceHelper.createChannelProvider(); + WickedSettings settings = + WickedSettings.newBuilder() + .setTransportChannelProvider(channelProvider) + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + client = WickedClient.create(settings); + } + + @After + public void tearDown() throws Exception { + client.close(); + } + + @Test + public void craftEvilPlanTest() throws Exception { + EvilResponse expectedResponse = + EvilResponse.newBuilder().setMaliciousPlan("maliciousPlan712757759").build(); + mockWicked.addResponse(expectedResponse); + + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + + EvilResponse actualResponse = client.craftEvilPlan(request); + Assert.assertEquals(expectedResponse, actualResponse); + + List actualRequests = mockWicked.getRequests(); + Assert.assertEquals(1, actualRequests.size()); + EvilRequest actualRequest = ((EvilRequest) actualRequests.get(0)); + + Assert.assertEquals(request.getMaliciousIdea(), actualRequest.getMaliciousIdea()); + Assert.assertTrue( + channelProvider.isHeaderSent( + ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), + GaxGrpcProperties.getDefaultApiClientHeaderPattern())); + } + + @Test + public void craftEvilPlanExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockWicked.addException(exception); + + try { + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + client.craftEvilPlan(request); + Assert.fail("No exception raised"); + } catch (InvalidArgumentException e) { + // Expected exception. + } + } + + @Test + public void brainstormEvilPlansTest() throws Exception { + EvilResponse expectedResponse = + EvilResponse.newBuilder().setMaliciousPlan("maliciousPlan712757759").build(); + mockWicked.addResponse(expectedResponse); + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + + MockStreamObserver responseObserver = new MockStreamObserver<>(); + + BidiStreamingCallable callable = + client.brainstormEvilPlansCallable(); + ApiStreamObserver requestObserver = callable.bidiStreamingCall(responseObserver); + + requestObserver.onNext(request); + requestObserver.onCompleted(); + + List actualResponses = responseObserver.future().get(); + Assert.assertEquals(1, actualResponses.size()); + Assert.assertEquals(expectedResponse, actualResponses.get(0)); + } + + @Test + public void brainstormEvilPlansExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockWicked.addException(exception); + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + + MockStreamObserver responseObserver = new MockStreamObserver<>(); + + BidiStreamingCallable callable = + client.brainstormEvilPlansCallable(); + ApiStreamObserver requestObserver = callable.bidiStreamingCall(responseObserver); + + requestObserver.onNext(request); + + try { + List actualResponses = responseObserver.future().get(); + Assert.fail("No exception thrown"); + } catch (ExecutionException e) { + Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); + InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); + Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + } + } + + @Test + public void persuadeEvilPlanTest() throws Exception { + EvilResponse expectedResponse = + EvilResponse.newBuilder().setMaliciousPlan("maliciousPlan712757759").build(); + mockWicked.addResponse(expectedResponse); + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + + MockStreamObserver responseObserver = new MockStreamObserver<>(); + + ClientStreamingCallable callable = client.persuadeEvilPlanCallable(); + ApiStreamObserver requestObserver = callable.clientStreamingCall(responseObserver); + + requestObserver.onNext(request); + requestObserver.onCompleted(); + + List actualResponses = responseObserver.future().get(); + Assert.assertEquals(1, actualResponses.size()); + Assert.assertEquals(expectedResponse, actualResponses.get(0)); + } + + @Test + public void persuadeEvilPlanExceptionTest() throws Exception { + StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); + mockWicked.addException(exception); + EvilRequest request = + EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); + + MockStreamObserver responseObserver = new MockStreamObserver<>(); + + ClientStreamingCallable callable = client.persuadeEvilPlanCallable(); + ApiStreamObserver requestObserver = callable.clientStreamingCall(responseObserver); + + requestObserver.onNext(request); + + try { + List actualResponses = responseObserver.future().get(); + Assert.fail("No exception thrown"); + } catch (ExecutionException e) { + Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); + InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); + Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); + } + } +} diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedSettings.golden new file mode 100644 index 0000000000..28b2e47cf9 --- /dev/null +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedSettings.golden @@ -0,0 +1,191 @@ +package com.google.showcase.v1beta1; + +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.StreamingCallSettings; +import com.google.api.gax.rpc.StubSettings; +import com.google.api.gax.rpc.TransportChannelProvider; +import com.google.api.gax.rpc.UnaryCallSettings; +import com.google.showcase.v1beta1.stub.WickedStubSettings; +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 WickedClient}. + * + *

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

    + *
  • The default service address (localhost) and default port (7469) 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 craftEvilPlan to 30 seconds: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedSettings.Builder wickedSettingsBuilder = WickedSettings.newBuilder();
+ * wickedSettingsBuilder
+ *     .craftEvilPlanSettings()
+ *     .setRetrySettings(
+ *         wickedSettingsBuilder
+ *             .craftEvilPlanSettings()
+ *             .getRetrySettings()
+ *             .toBuilder()
+ *             .setTotalTimeout(Duration.ofSeconds(30))
+ *             .build());
+ * WickedSettings wickedSettings = wickedSettingsBuilder.build();
+ * }
+ */ +@BetaApi +@Generated("by gapic-generator-java") +public class WickedSettings extends ClientSettings { + + /** Returns the object with the settings used for calls to craftEvilPlan. */ + public UnaryCallSettings craftEvilPlanSettings() { + return ((WickedStubSettings) getStubSettings()).craftEvilPlanSettings(); + } + + /** Returns the object with the settings used for calls to brainstormEvilPlans. */ + public StreamingCallSettings brainstormEvilPlansSettings() { + return ((WickedStubSettings) getStubSettings()).brainstormEvilPlansSettings(); + } + + /** Returns the object with the settings used for calls to persuadeEvilPlan. */ + public StreamingCallSettings persuadeEvilPlanSettings() { + return ((WickedStubSettings) getStubSettings()).persuadeEvilPlanSettings(); + } + + public static final WickedSettings create(WickedStubSettings stub) throws IOException { + return new WickedSettings.Builder(stub.toBuilder()).build(); + } + + /** Returns a builder for the default ExecutorProvider for this service. */ + public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { + return WickedStubSettings.defaultExecutorProviderBuilder(); + } + + /** Returns the default service endpoint. */ + public static String getDefaultEndpoint() { + return WickedStubSettings.getDefaultEndpoint(); + } + + /** Returns the default service scopes. */ + public static List getDefaultServiceScopes() { + return WickedStubSettings.getDefaultServiceScopes(); + } + + /** Returns a builder for the default credentials for this service. */ + public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { + return WickedStubSettings.defaultCredentialsProviderBuilder(); + } + + /** Returns a builder for the default gRPC ChannelProvider for this service. */ + public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { + return WickedStubSettings.defaultGrpcTransportProviderBuilder(); + } + + public static TransportChannelProvider defaultTransportChannelProvider() { + return WickedStubSettings.defaultTransportChannelProvider(); + } + + @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return WickedStubSettings.defaultApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC 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 WickedSettings(Builder settingsBuilder) throws IOException { + super(settingsBuilder); + } + + /** Builder for WickedSettings. */ + public static class Builder extends ClientSettings.Builder { + + protected Builder() throws IOException { + this(((ClientContext) null)); + } + + protected Builder(ClientContext clientContext) { + super(WickedStubSettings.newBuilder(clientContext)); + } + + protected Builder(WickedSettings settings) { + super(settings.getStubSettings().toBuilder()); + } + + protected Builder(WickedStubSettings.Builder stubSettings) { + super(stubSettings); + } + + private static Builder createDefault() { + return new Builder(WickedStubSettings.newBuilder()); + } + + public WickedStubSettings.Builder getStubSettingsBuilder() { + return ((WickedStubSettings.Builder) getStubSettings()); + } + + /** + * 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) { + super.applyToAllUnaryMethods( + getStubSettingsBuilder().unaryMethodSettingsBuilders(), settingsUpdater); + return this; + } + + /** Returns the builder for the settings used for calls to craftEvilPlan. */ + public UnaryCallSettings.Builder craftEvilPlanSettings() { + return getStubSettingsBuilder().craftEvilPlanSettings(); + } + + /** Returns the builder for the settings used for calls to brainstormEvilPlans. */ + public StreamingCallSettings.Builder brainstormEvilPlansSettings() { + return getStubSettingsBuilder().brainstormEvilPlansSettings(); + } + + /** Returns the builder for the settings used for calls to persuadeEvilPlan. */ + public StreamingCallSettings.Builder persuadeEvilPlanSettings() { + return getStubSettingsBuilder().persuadeEvilPlanSettings(); + } + + @Override + public WickedSettings build() throws IOException { + return new WickedSettings(this); + } + } +} diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden new file mode 100644 index 0000000000..702d9a6dcd --- /dev/null +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden @@ -0,0 +1,285 @@ +package com.google.showcase.v1beta1.stub; + +import com.google.api.core.ApiFunction; +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.ApiClientHeaderProvider; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.StreamingCallSettings; +import com.google.api.gax.rpc.StubSettings; +import com.google.api.gax.rpc.TransportChannelProvider; +import com.google.api.gax.rpc.UnaryCallSettings; +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.showcase.v1beta1.EvilRequest; +import com.google.showcase.v1beta1.EvilResponse; +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 WickedStub}. + * + *

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

    + *
  • The default service address (localhost) and default port (7469) 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 craftEvilPlan to 30 seconds: + * + *

{@code
+ * // This snippet has been automatically generated and should be regarded as a code template only.
+ * // It will require modifications to work:
+ * // - It may require correct/in-range values for request initialization.
+ * // - It may require specifying regional endpoints when creating the service client as shown in
+ * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
+ * WickedStubSettings.Builder wickedSettingsBuilder = WickedStubSettings.newBuilder();
+ * wickedSettingsBuilder
+ *     .craftEvilPlanSettings()
+ *     .setRetrySettings(
+ *         wickedSettingsBuilder
+ *             .craftEvilPlanSettings()
+ *             .getRetrySettings()
+ *             .toBuilder()
+ *             .setTotalTimeout(Duration.ofSeconds(30))
+ *             .build());
+ * WickedStubSettings wickedSettings = wickedSettingsBuilder.build();
+ * }
+ */ +@BetaApi +@Generated("by gapic-generator-java") +public class WickedStubSettings extends StubSettings { + /** The default scopes of the service. */ + private static final ImmutableList DEFAULT_SERVICE_SCOPES = + ImmutableList.builder().build(); + + private final UnaryCallSettings craftEvilPlanSettings; + private final StreamingCallSettings brainstormEvilPlansSettings; + private final StreamingCallSettings persuadeEvilPlanSettings; + + /** Returns the object with the settings used for calls to craftEvilPlan. */ + public UnaryCallSettings craftEvilPlanSettings() { + return craftEvilPlanSettings; + } + + /** Returns the object with the settings used for calls to brainstormEvilPlans. */ + public StreamingCallSettings brainstormEvilPlansSettings() { + return brainstormEvilPlansSettings; + } + + /** Returns the object with the settings used for calls to persuadeEvilPlan. */ + public StreamingCallSettings persuadeEvilPlanSettings() { + return persuadeEvilPlanSettings; + } + + public WickedStub createStub() throws IOException { + if (getTransportChannelProvider() + .getTransportName() + .equals(GrpcTransportChannel.getGrpcTransportName())) { + return GrpcWickedStub.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 "localhost:7469"; + } + + /** Returns the default mTLS service endpoint. */ + public static String getDefaultMtlsEndpoint() { + return "localhost:7469"; + } + + /** 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) + .setUseJwtAccessWithScope(true); + } + + /** Returns a builder for the default gRPC 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 defaultGrpcApiClientHeaderProviderBuilder() { + return ApiClientHeaderProvider.newBuilder() + .setGeneratedLibToken("gapic", GaxProperties.getLibraryVersion(WickedStubSettings.class)) + .setTransportToken( + GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); + } + + public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { + return WickedStubSettings.defaultGrpcApiClientHeaderProviderBuilder(); + } + + /** Returns a new gRPC 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 WickedStubSettings(Builder settingsBuilder) throws IOException { + super(settingsBuilder); + + craftEvilPlanSettings = settingsBuilder.craftEvilPlanSettings().build(); + brainstormEvilPlansSettings = settingsBuilder.brainstormEvilPlansSettings().build(); + persuadeEvilPlanSettings = settingsBuilder.persuadeEvilPlanSettings().build(); + } + + /** Builder for WickedStubSettings. */ + public static class Builder extends StubSettings.Builder { + private final ImmutableList> unaryMethodSettingsBuilders; + private final UnaryCallSettings.Builder craftEvilPlanSettings; + private final StreamingCallSettings.Builder + brainstormEvilPlansSettings; + private final StreamingCallSettings.Builder persuadeEvilPlanSettings; + private static final ImmutableMap> + RETRYABLE_CODE_DEFINITIONS; + + static { + ImmutableMap.Builder> definitions = + ImmutableMap.builder(); + definitions.put("no_retry_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().setRpcTimeoutMultiplier(1.0).build(); + definitions.put("no_retry_params", settings); + RETRY_PARAM_DEFINITIONS = definitions.build(); + } + + protected Builder() { + this(((ClientContext) null)); + } + + protected Builder(ClientContext clientContext) { + super(clientContext); + + craftEvilPlanSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); + brainstormEvilPlansSettings = StreamingCallSettings.newBuilder(); + persuadeEvilPlanSettings = StreamingCallSettings.newBuilder(); + + unaryMethodSettingsBuilders = + ImmutableList.>of(craftEvilPlanSettings); + initDefaults(this); + } + + protected Builder(WickedStubSettings settings) { + super(settings); + + craftEvilPlanSettings = settings.craftEvilPlanSettings.toBuilder(); + brainstormEvilPlansSettings = settings.brainstormEvilPlansSettings.toBuilder(); + persuadeEvilPlanSettings = settings.persuadeEvilPlanSettings.toBuilder(); + + unaryMethodSettingsBuilders = + ImmutableList.>of(craftEvilPlanSettings); + } + + private static Builder createDefault() { + Builder builder = new Builder(((ClientContext) null)); + + builder.setTransportChannelProvider(defaultTransportChannelProvider()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); + builder.setEndpoint(getDefaultEndpoint()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return initDefaults(builder); + } + + private static Builder initDefaults(Builder builder) { + builder + .craftEvilPlanSettings() + .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_codes")) + .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_params")); + + return builder; + } + + /** + * 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) { + super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater); + return this; + } + + public ImmutableList> unaryMethodSettingsBuilders() { + return unaryMethodSettingsBuilders; + } + + /** Returns the builder for the settings used for calls to craftEvilPlan. */ + public UnaryCallSettings.Builder craftEvilPlanSettings() { + return craftEvilPlanSettings; + } + + /** Returns the builder for the settings used for calls to brainstormEvilPlans. */ + public StreamingCallSettings.Builder brainstormEvilPlansSettings() { + return brainstormEvilPlansSettings; + } + + /** Returns the builder for the settings used for calls to persuadeEvilPlan. */ + public StreamingCallSettings.Builder persuadeEvilPlanSettings() { + return persuadeEvilPlanSettings; + } + + @Override + public WickedStubSettings build() throws IOException { + return new WickedStubSettings(this); + } + } +} diff --git a/gapic-generator-java/src/test/proto/wicked.proto b/gapic-generator-java/src/test/proto/wicked.proto new file mode 100644 index 0000000000..ea45fee918 --- /dev/null +++ b/gapic-generator-java/src/test/proto/wicked.proto @@ -0,0 +1,49 @@ +// Copyright 2023 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. + +syntax = "proto3"; + +import "google/api/client.proto"; + +package google.showcase.v1beta1; + +option go_package = "github.com/googleapis/gapic-showcase/server/genproto"; +option java_package = "com.google.showcase.v1beta1"; +option java_multiple_files = true; +option ruby_package = "Google::Showcase::V1beta1"; + +// This service is used to show a Service with either non-enabled or non-eligible +// RPCs for HttpJson (Http 1.1). +// Non-Enabled: Missing the (google.api.http) annotation to enabled it +// Non-Eligible: BIDI and Client side streaming are not supported with Http 1.1 +// Service name is reference to `No REST for the Wicked` +service Wicked { + // This service is meant to only run locally on the port 7469 (keypad digits + // for "show"). + option (google.api.default_host) = "localhost:7469"; + + rpc CraftEvilPlan(EvilRequest) returns (EvilResponse); + + rpc BrainstormEvilPlans(stream EvilRequest) returns (stream EvilResponse); + + rpc PersuadeEvilPlan(stream EvilRequest) returns (EvilResponse); +} + +message EvilRequest { + string malicious_idea = 1; +} + +message EvilResponse { + string malicious_plan = 1; +} \ No newline at end of file From 219ae2ce277339606a9f6aa20e80534f56c5d717 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Mon, 23 Jan 2023 17:50:52 -0500 Subject: [PATCH 49/63] chore: Resolve format --- .../grpcrest/GrpcRestTestProtoLoader.java | 20 +++++++++---------- ...rviceCallableFactoryClassComposerTest.java | 3 ++- ...rviceCallableFactoryClassComposerTest.java | 6 ++++-- ...sonServiceClientTestClassComposerTest.java | 3 ++- .../HttpJsonServiceStubClassComposerTest.java | 3 ++- .../ServiceClientTestClassComposerTest.java | 3 ++- .../ServiceSettingsClassComposerTest.java | 3 ++- .../ServiceStubSettingsClassComposerTest.java | 6 ++++-- 8 files changed, 27 insertions(+), 20 deletions(-) diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcRestTestProtoLoader.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcRestTestProtoLoader.java index f31a9de186..d918a0b3a5 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcRestTestProtoLoader.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcRestTestProtoLoader.java @@ -31,9 +31,7 @@ import com.google.protobuf.Descriptors.ServiceDescriptor; import com.google.protobuf.StructProto; import com.google.showcase.grpcrest.v1beta1.EchoGrpcrest; -import com.google.showcase.v1beta1.MessagingOuterClass; import com.google.showcase.v1beta1.WickedOuterClass; - import java.nio.file.Path; import java.nio.file.Paths; import java.util.HashSet; @@ -98,8 +96,8 @@ public GapicContext parseShowcaseWicked() { Map resourceNames = Parser.parseResourceNames(fileDescriptor); Set outputResourceNames = new HashSet<>(); List services = - Parser.parseService( - fileDescriptor, messageTypes, resourceNames, Optional.empty(), outputResourceNames); + Parser.parseService( + fileDescriptor, messageTypes, resourceNames, Optional.empty(), outputResourceNames); String jsonFilename = "showcase_grpc_service_config.json"; Path jsonPath = Paths.get(getTestFilesDirectory(), jsonFilename); @@ -108,12 +106,12 @@ public GapicContext parseShowcaseWicked() { GapicServiceConfig config = configOpt.get(); return GapicContext.builder() - .setMessages(messageTypes) - .setResourceNames(resourceNames) - .setServices(services) - .setServiceConfig(config) - .setHelperResourceNames(outputResourceNames) - .setTransport(getTransport()) - .build(); + .setMessages(messageTypes) + .setResourceNames(resourceNames) + .setServices(services) + .setServiceConfig(config) + .setHelperResourceNames(outputResourceNames) + .setTransport(getTransport()) + .build(); } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceCallableFactoryClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceCallableFactoryClassComposerTest.java index e5f8e7c07a..694a2cba8c 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceCallableFactoryClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceCallableFactoryClassComposerTest.java @@ -50,7 +50,8 @@ public void generateServiceClassesWicked() { JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); Utils.saveCodegenToFile(this.getClass(), "GrpcWickedCallableFactory.golden", visitor.write()); - Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "GrpcWickedCallableFactory.golden"); + Path goldenFilePath = + Paths.get(Utils.getGoldenDir(this.getClass()), "GrpcWickedCallableFactory.golden"); Assert.assertCodeEquals(goldenFilePath, visitor.write()); } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceCallableFactoryClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceCallableFactoryClassComposerTest.java index 0615e0cb7b..f835b101b9 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceCallableFactoryClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceCallableFactoryClassComposerTest.java @@ -49,8 +49,10 @@ public void generateServiceClassesWicked() { JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); - Utils.saveCodegenToFile(this.getClass(), "HttpJsonWickedCallableFactory.golden", visitor.write()); - Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "HttpJsonWickedCallableFactory.golden"); + Utils.saveCodegenToFile( + this.getClass(), "HttpJsonWickedCallableFactory.golden", visitor.write()); + Path goldenFilePath = + Paths.get(Utils.getGoldenDir(this.getClass()), "HttpJsonWickedCallableFactory.golden"); Assert.assertCodeEquals(goldenFilePath, visitor.write()); } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposerTest.java index 41f538f167..f93660cee2 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposerTest.java @@ -51,7 +51,8 @@ public void generateServiceClassesWicked() { JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); Utils.saveCodegenToFile(this.getClass(), "WickedClientHttpJsonTest.golden", visitor.write()); - Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "WickedClientHttpJsonTest.golden"); + Path goldenFilePath = + Paths.get(Utils.getGoldenDir(this.getClass()), "WickedClientHttpJsonTest.golden"); Assert.assertCodeEquals(goldenFilePath, visitor.write()); } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposerTest.java index 0dd0190852..03dbdd9838 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposerTest.java @@ -48,7 +48,8 @@ public void generateServiceClassesWicked() { JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); Utils.saveCodegenToFile(this.getClass(), "HttpJsonWickedStub.golden", visitor.write()); - Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "HttpJsonWickedStub.golden"); + Path goldenFilePath = + Paths.get(Utils.getGoldenDir(this.getClass()), "HttpJsonWickedStub.golden"); Assert.assertCodeEquals(goldenFilePath, visitor.write()); } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientTestClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientTestClassComposerTest.java index 5bfb2f2ed5..521c15bdbd 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientTestClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceClientTestClassComposerTest.java @@ -46,7 +46,8 @@ public void generateServiceClasses() { public void generateServiceClassesWicked() { GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); Service wickedProtoService = context.services().get(0); - GapicClass clazz = ServiceClientTestClassComposer.instance().generate(context, wickedProtoService); + GapicClass clazz = + ServiceClientTestClassComposer.instance().generate(context, wickedProtoService); JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceSettingsClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceSettingsClassComposerTest.java index a5202d31c8..4b5dc73f81 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceSettingsClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceSettingsClassComposerTest.java @@ -42,7 +42,8 @@ public void generateServiceClasses() { public void generateServiceClassesWicked() { GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); Service wickedProtoService = context.services().get(0); - GapicClass clazz = ServiceSettingsClassComposer.instance().generate(context, wickedProtoService); + GapicClass clazz = + ServiceSettingsClassComposer.instance().generate(context, wickedProtoService); JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposerTest.java index e27350b050..3348fd3d67 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposerTest.java @@ -43,12 +43,14 @@ public void generateServiceClasses() { public void generateServiceClassesWicked() { GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); Service wickedProtoService = context.services().get(0); - GapicClass clazz = ServiceStubSettingsClassComposer.instance().generate(context, wickedProtoService); + GapicClass clazz = + ServiceStubSettingsClassComposer.instance().generate(context, wickedProtoService); JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); Utils.saveCodegenToFile(this.getClass(), "WickedStubSettings.golden", visitor.write()); - Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "WickedStubSettings.golden"); + Path goldenFilePath = + Paths.get(Utils.getGoldenDir(this.getClass()), "WickedStubSettings.golden"); Assert.assertCodeEquals(goldenFilePath, visitor.write()); } } From b5810e0cc0b8d55407cfeda985f52b74a1476a70 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Mon, 23 Jan 2023 18:01:12 -0500 Subject: [PATCH 50/63] chore: Update sonar comments --- .../gapic/composer/grpcrest/GrpcRestTestProtoLoader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcRestTestProtoLoader.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcRestTestProtoLoader.java index d918a0b3a5..1e3b057170 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcRestTestProtoLoader.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcRestTestProtoLoader.java @@ -87,7 +87,7 @@ public GapicContext parseShowcaseEcho() { public GapicContext parseShowcaseWicked() { FileDescriptor fileDescriptor = WickedOuterClass.getDescriptor(); ServiceDescriptor messagingService = fileDescriptor.getServices().get(0); - assertEquals(messagingService.getName(), "Wicked"); + assertEquals("Wicked", messagingService.getName()); Map messageTypes = Parser.parseMessages(fileDescriptor); messageTypes.putAll(Parser.parseMessages(OperationsProto.getDescriptor())); From 53eaa6c9574ee54843612b8ca20b9bc2fc77e3dc Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 24 Jan 2023 10:34:18 -0500 Subject: [PATCH 51/63] chore: Update PR comments --- .../api/generator/gapic/model/GapicClass.java | 2 + .../api/generator/gapic/model/Transport.java | 7 ++- .../generator/gapic/model/TransportTest.java | 49 +++++++++++++++++++ 3 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/TransportTest.java diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java index 4c38586ba8..11d6598e7e 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/GapicClass.java @@ -28,6 +28,8 @@ public enum Kind { STUB, TEST, PROTO, + // Used to denote a Gapic Class that has no intention of being generated + // The Writer will skip generating code for this class NON_GENERATED }; diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Transport.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Transport.java index 700e23ace5..87d49820bf 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Transport.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/model/Transport.java @@ -20,11 +20,10 @@ public enum Transport { GRPC_REST; /** - * Parse command line transport argument in the format `grpc+rest`. Convert name String to - * lowercase as `gRPC` is not valid but `grpc` is + * Parse the input and return the corresponding Transport enum * - * @param name name of the transport. Valid inputs are "grpc", "rest", "grpc+rest" - * @return the {@code Transport} enum matching the command line argument + * @param name Transport name + * @return the {@code Transport} enum matching the name parameter */ public static Transport parse(String name) { return valueOf(name.toLowerCase().replace('+', '_').toUpperCase()); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/TransportTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/TransportTest.java new file mode 100644 index 0000000000..f83c2e16a8 --- /dev/null +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/model/TransportTest.java @@ -0,0 +1,49 @@ +package com.google.api.generator.gapic.model; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertThrows; + +import java.util.Arrays; +import java.util.Collection; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +@RunWith(Parameterized.class) +public class TransportTest { + + private final String input; + private final Transport expected; + + @Parameterized.Parameters + public static Collection primeNumbers() { + return Arrays.asList( + new Object[][] { + {"grpc", Transport.GRPC}, + {"Grpc", Transport.GRPC}, + {"gRPC", Transport.GRPC}, + {"rest", Transport.REST}, + {"REST", Transport.REST}, + {"rESt", Transport.REST}, + {"grpc+rest", Transport.GRPC_REST}, + {"gRPC+REST", Transport.GRPC_REST}, + {"grPc+rEst", Transport.GRPC_REST} + }); + } + + public TransportTest(String input, Transport expected) { + this.input = input; + this.expected = expected; + } + + @Test + public void testParse_returnsValidTransport() { + assertThat(expected).isEqualTo(Transport.parse(input)); + } + + @Test + public void testParse_throwsException() { + assertThrows(IllegalArgumentException.class, () -> Transport.parse("invalid transport")); + assertThrows(IllegalArgumentException.class, () -> Transport.parse("grHttpc")); + } +} From 892395e6b1c237b9f103be510f67c3c4a74622b2 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 24 Jan 2023 10:56:31 -0500 Subject: [PATCH 52/63] chore: Update golden test cases --- ...rviceCallableFactoryClassComposerTest.java | 3 +- .../GrpcServiceStubClassComposerTest.java | 3 +- ...rviceCallableFactoryClassComposerTest.java | 15 +- ...sonServiceClientTestClassComposerTest.java | 13 +- .../HttpJsonServiceStubClassComposerTest.java | 13 +- .../goldens/GrpcWickedCallableFactory.golden | 309 ++++------------ .../grpcrest/goldens/GrpcWickedStub.golden | 348 +++++++----------- .../HttpJsonWickedCallableFactory.golden | 278 -------------- .../goldens/HttpJsonWickedStub.golden | 278 -------------- .../goldens/WickedClientHttpJsonTest.golden | 278 -------------- 10 files changed, 210 insertions(+), 1328 deletions(-) delete mode 100644 gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedCallableFactory.golden delete mode 100644 gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedStub.golden delete mode 100644 gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClientHttpJsonTest.golden diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceCallableFactoryClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceCallableFactoryClassComposerTest.java index 694a2cba8c..844eea2e6e 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceCallableFactoryClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceCallableFactoryClassComposerTest.java @@ -45,7 +45,8 @@ public void generateServiceClasses() { public void generateServiceClassesWicked() { GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); Service wickedProtoService = context.services().get(0); - GapicClass clazz = ServiceClientClassComposer.instance().generate(context, wickedProtoService); + GapicClass clazz = + GrpcServiceCallableFactoryClassComposer.instance().generate(context, wickedProtoService); JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceStubClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceStubClassComposerTest.java index 3a505aceb8..f96a5efc72 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceStubClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/GrpcServiceStubClassComposerTest.java @@ -43,7 +43,8 @@ public void generateServiceClasses() { public void generateServiceClassesWicked() { GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); Service wickedProtoService = context.services().get(0); - GapicClass clazz = ServiceClientClassComposer.instance().generate(context, wickedProtoService); + GapicClass clazz = + GrpcServiceStubClassComposer.instance().generate(context, wickedProtoService); JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceCallableFactoryClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceCallableFactoryClassComposerTest.java index f835b101b9..6c287236df 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceCallableFactoryClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceCallableFactoryClassComposerTest.java @@ -14,6 +14,8 @@ package com.google.api.generator.gapic.composer.grpcrest; +import static com.google.common.truth.Truth.assertThat; + import com.google.api.generator.engine.writer.JavaWriterVisitor; import com.google.api.generator.gapic.composer.rest.HttpJsonServiceCallableFactoryClassComposer; import com.google.api.generator.gapic.model.GapicClass; @@ -45,14 +47,9 @@ public void generateServiceClasses() { public void generateServiceClassesWicked() { GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); Service wickedProtoService = context.services().get(0); - GapicClass clazz = ServiceClientClassComposer.instance().generate(context, wickedProtoService); - - JavaWriterVisitor visitor = new JavaWriterVisitor(); - clazz.classDefinition().accept(visitor); - Utils.saveCodegenToFile( - this.getClass(), "HttpJsonWickedCallableFactory.golden", visitor.write()); - Path goldenFilePath = - Paths.get(Utils.getGoldenDir(this.getClass()), "HttpJsonWickedCallableFactory.golden"); - Assert.assertCodeEquals(goldenFilePath, visitor.write()); + GapicClass clazz = + HttpJsonServiceCallableFactoryClassComposer.instance() + .generate(context, wickedProtoService); + assertThat(clazz.kind()).isEqualTo(GapicClass.Kind.NON_GENERATED); } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposerTest.java index f93660cee2..82f4e44e0c 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceClientTestClassComposerTest.java @@ -15,12 +15,12 @@ package com.google.api.generator.gapic.composer.grpcrest; import static com.google.api.generator.test.framework.Assert.assertCodeEquals; +import static com.google.common.truth.Truth.assertThat; import com.google.api.generator.engine.writer.JavaWriterVisitor; import com.google.api.generator.gapic.model.GapicClass; import com.google.api.generator.gapic.model.GapicContext; import com.google.api.generator.gapic.model.Service; -import com.google.api.generator.test.framework.Assert; import com.google.api.generator.test.framework.Utils; import java.nio.file.Path; import java.nio.file.Paths; @@ -46,13 +46,8 @@ public void generateServiceClasses() { public void generateServiceClassesWicked() { GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); Service wickedProtoService = context.services().get(0); - GapicClass clazz = ServiceClientClassComposer.instance().generate(context, wickedProtoService); - - JavaWriterVisitor visitor = new JavaWriterVisitor(); - clazz.classDefinition().accept(visitor); - Utils.saveCodegenToFile(this.getClass(), "WickedClientHttpJsonTest.golden", visitor.write()); - Path goldenFilePath = - Paths.get(Utils.getGoldenDir(this.getClass()), "WickedClientHttpJsonTest.golden"); - Assert.assertCodeEquals(goldenFilePath, visitor.write()); + GapicClass clazz = + HttpJsonServiceClientTestClassComposer.instance().generate(context, wickedProtoService); + assertThat(clazz.kind()).isEqualTo(GapicClass.Kind.NON_GENERATED); } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposerTest.java index 03dbdd9838..6bd960d91b 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/HttpJsonServiceStubClassComposerTest.java @@ -14,6 +14,8 @@ package com.google.api.generator.gapic.composer.grpcrest; +import static com.google.common.truth.Truth.assertThat; + import com.google.api.generator.engine.writer.JavaWriterVisitor; import com.google.api.generator.gapic.model.GapicClass; import com.google.api.generator.gapic.model.GapicContext; @@ -43,13 +45,8 @@ public void generateServiceClasses() { public void generateServiceClassesWicked() { GapicContext context = GrpcRestTestProtoLoader.instance().parseShowcaseWicked(); Service wickedProtoService = context.services().get(0); - GapicClass clazz = ServiceClientClassComposer.instance().generate(context, wickedProtoService); - - JavaWriterVisitor visitor = new JavaWriterVisitor(); - clazz.classDefinition().accept(visitor); - Utils.saveCodegenToFile(this.getClass(), "HttpJsonWickedStub.golden", visitor.write()); - Path goldenFilePath = - Paths.get(Utils.getGoldenDir(this.getClass()), "HttpJsonWickedStub.golden"); - Assert.assertCodeEquals(goldenFilePath, visitor.write()); + GapicClass clazz = + HttpJsonServiceStubClassComposer.instance().generate(context, wickedProtoService); + assertThat(clazz.kind()).isEqualTo(GapicClass.Kind.NON_GENERATED); } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedCallableFactory.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedCallableFactory.golden index 67f9212085..88f063999a 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedCallableFactory.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedCallableFactory.golden @@ -1,278 +1,99 @@ -package com.google.showcase.v1beta1; +package com.google.showcase.v1beta1.stub; import com.google.api.core.BetaApi; -import com.google.api.gax.core.BackgroundResource; +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.showcase.v1beta1.stub.WickedStub; -import com.google.showcase.v1beta1.stub.WickedStubSettings; -import java.io.IOException; -import java.util.concurrent.TimeUnit; +import com.google.longrunning.Operation; +import com.google.longrunning.stub.OperationsStub; import javax.annotation.Generated; // AUTO-GENERATED DOCUMENTATION AND CLASS. /** - * 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: + * gRPC callable factory implementation for the Wicked service API. * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * try (WickedClient wickedClient = WickedClient.create()) {
- *   EvilRequest request =
- *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
- *   EvilResponse response = wickedClient.craftEvilPlan(request);
- * }
- * }
- * - *

Note: close() needs to be called on the WickedClient 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 WickedSettings to create(). - * For example: - * - *

To customize credentials: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * WickedSettings wickedSettings =
- *     WickedSettings.newBuilder()
- *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
- *         .build();
- * WickedClient wickedClient = WickedClient.create(wickedSettings);
- * }
- * - *

To customize the endpoint: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * WickedSettings wickedSettings = WickedSettings.newBuilder().setEndpoint(myEndpoint).build();
- * WickedClient wickedClient = WickedClient.create(wickedSettings);
- * }
- * - *

Please refer to the GitHub repository's samples for more quickstart code snippets. + *

This class is for advanced usage. */ @BetaApi @Generated("by gapic-generator-java") -public class WickedClient implements BackgroundResource { - private final WickedSettings settings; - private final WickedStub stub; - - /** Constructs an instance of WickedClient with default settings. */ - public static final WickedClient create() throws IOException { - return create(WickedSettings.newBuilder().build()); - } - - /** - * Constructs an instance of WickedClient, 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 WickedClient create(WickedSettings settings) throws IOException { - return new WickedClient(settings); - } - - /** - * Constructs an instance of WickedClient, using the given stub for making calls. This is for - * advanced usage - prefer using create(WickedSettings). - */ - public static final WickedClient create(WickedStub stub) { - return new WickedClient(stub); - } - - /** - * Constructs an instance of WickedClient, 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 WickedClient(WickedSettings settings) throws IOException { - this.settings = settings; - this.stub = ((WickedStubSettings) settings.getStubSettings()).createStub(); - } - - protected WickedClient(WickedStub stub) { - this.settings = null; - this.stub = stub; - } - - public final WickedSettings getSettings() { - return settings; - } - - public WickedStub getStub() { - return stub; - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *

{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   EvilResponse response = wickedClient.craftEvilPlan(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 EvilResponse craftEvilPlan(EvilRequest request) { - return craftEvilPlanCallable().call(request); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   ApiFuture future = wickedClient.craftEvilPlanCallable().futureCall(request);
-   *   // Do something.
-   *   EvilResponse response = future.get();
-   * }
-   * }
- */ - public final UnaryCallable craftEvilPlanCallable() { - return stub.craftEvilPlanCallable(); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   BidiStream bidiStream =
-   *       wickedClient.brainstormEvilPlansCallable().call();
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   bidiStream.send(request);
-   *   for (EvilResponse response : bidiStream) {
-   *     // Do something when a response is received.
-   *   }
-   * }
-   * }
- */ - public final BidiStreamingCallable brainstormEvilPlansCallable() { - return stub.brainstormEvilPlansCallable(); - } +public class GrpcWickedCallableFactory implements GrpcStubCallableFactory { - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   ApiStreamObserver responseObserver =
-   *       new ApiStreamObserver() {
-   *         {@literal @}Override
-   *         public void onNext(EvilResponse response) {
-   *           // Do something when a response is received.
-   *         }
-   *
-   *         {@literal @}Override
-   *         public void onError(Throwable t) {
-   *           // Add error-handling
-   *         }
-   *
-   *         {@literal @}Override
-   *         public void onCompleted() {
-   *           // Do something when complete.
-   *         }
-   *       };
-   *   ApiStreamObserver requestObserver =
-   *       wickedClient.persuadeEvilPlan().clientStreamingCall(responseObserver);
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   requestObserver.onNext(request);
-   * }
-   * }
- */ - public final ClientStreamingCallable persuadeEvilPlanCallable() { - return stub.persuadeEvilPlanCallable(); + @Override + public UnaryCallable createUnaryCallable( + GrpcCallSettings grpcCallSettings, + UnaryCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createUnaryCallable(grpcCallSettings, callSettings, clientContext); } @Override - public final void close() { - stub.close(); + public + UnaryCallable createPagedCallable( + GrpcCallSettings grpcCallSettings, + PagedCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createPagedCallable(grpcCallSettings, callSettings, clientContext); } @Override - public void shutdown() { - stub.shutdown(); + public UnaryCallable createBatchingCallable( + GrpcCallSettings grpcCallSettings, + BatchingCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createBatchingCallable( + grpcCallSettings, callSettings, clientContext); } @Override - public boolean isShutdown() { - return stub.isShutdown(); + public + OperationCallable createOperationCallable( + GrpcCallSettings grpcCallSettings, + OperationCallSettings callSettings, + ClientContext clientContext, + OperationsStub operationsStub) { + return GrpcCallableFactory.createOperationCallable( + grpcCallSettings, callSettings, clientContext, operationsStub); } @Override - public boolean isTerminated() { - return stub.isTerminated(); + public + BidiStreamingCallable createBidiStreamingCallable( + GrpcCallSettings grpcCallSettings, + StreamingCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createBidiStreamingCallable( + grpcCallSettings, callSettings, clientContext); } @Override - public void shutdownNow() { - stub.shutdownNow(); + public + ServerStreamingCallable createServerStreamingCallable( + GrpcCallSettings grpcCallSettings, + ServerStreamingCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createServerStreamingCallable( + grpcCallSettings, callSettings, clientContext); } @Override - public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { - return stub.awaitTermination(duration, unit); + public + ClientStreamingCallable createClientStreamingCallable( + GrpcCallSettings grpcCallSettings, + StreamingCallSettings callSettings, + ClientContext clientContext) { + return GrpcCallableFactory.createClientStreamingCallable( + grpcCallSettings, callSettings, clientContext); } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedStub.golden index 67f9212085..a4accaa5ae 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedStub.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/GrpcWickedStub.golden @@ -1,278 +1,182 @@ -package com.google.showcase.v1beta1; +package com.google.showcase.v1beta1.stub; import com.google.api.core.BetaApi; 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.BidiStreamingCallable; +import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.ClientStreamingCallable; import com.google.api.gax.rpc.UnaryCallable; -import com.google.showcase.v1beta1.stub.WickedStub; -import com.google.showcase.v1beta1.stub.WickedStubSettings; +import com.google.longrunning.stub.GrpcOperationsStub; +import com.google.showcase.v1beta1.EvilRequest; +import com.google.showcase.v1beta1.EvilResponse; +import io.grpc.MethodDescriptor; +import io.grpc.protobuf.ProtoUtils; import java.io.IOException; import java.util.concurrent.TimeUnit; import javax.annotation.Generated; // AUTO-GENERATED DOCUMENTATION AND CLASS. /** - * 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: + * gRPC stub implementation for the Wicked service API. * - *
{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * try (WickedClient wickedClient = WickedClient.create()) {
- *   EvilRequest request =
- *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
- *   EvilResponse response = wickedClient.craftEvilPlan(request);
- * }
- * }
- * - *

Note: close() needs to be called on the WickedClient 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 WickedSettings to create(). - * For example: - * - *

To customize credentials: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * WickedSettings wickedSettings =
- *     WickedSettings.newBuilder()
- *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
- *         .build();
- * WickedClient wickedClient = WickedClient.create(wickedSettings);
- * }
- * - *

To customize the endpoint: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * WickedSettings wickedSettings = WickedSettings.newBuilder().setEndpoint(myEndpoint).build();
- * WickedClient wickedClient = WickedClient.create(wickedSettings);
- * }
- * - *

Please refer to the GitHub repository's samples for more quickstart code snippets. + *

This class is for advanced usage and reflects the underlying API directly. */ @BetaApi @Generated("by gapic-generator-java") -public class WickedClient implements BackgroundResource { - private final WickedSettings settings; - private final WickedStub stub; - - /** Constructs an instance of WickedClient with default settings. */ - public static final WickedClient create() throws IOException { - return create(WickedSettings.newBuilder().build()); +public class GrpcWickedStub extends WickedStub { + private static final MethodDescriptor craftEvilPlanMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.UNARY) + .setFullMethodName("google.showcase.v1beta1.Wicked/CraftEvilPlan") + .setRequestMarshaller(ProtoUtils.marshaller(EvilRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(EvilResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + brainstormEvilPlansMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.BIDI_STREAMING) + .setFullMethodName("google.showcase.v1beta1.Wicked/BrainstormEvilPlans") + .setRequestMarshaller(ProtoUtils.marshaller(EvilRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(EvilResponse.getDefaultInstance())) + .build(); + + private static final MethodDescriptor + persuadeEvilPlanMethodDescriptor = + MethodDescriptor.newBuilder() + .setType(MethodDescriptor.MethodType.CLIENT_STREAMING) + .setFullMethodName("google.showcase.v1beta1.Wicked/PersuadeEvilPlan") + .setRequestMarshaller(ProtoUtils.marshaller(EvilRequest.getDefaultInstance())) + .setResponseMarshaller(ProtoUtils.marshaller(EvilResponse.getDefaultInstance())) + .build(); + + private final UnaryCallable craftEvilPlanCallable; + private final BidiStreamingCallable brainstormEvilPlansCallable; + private final ClientStreamingCallable persuadeEvilPlanCallable; + + private final BackgroundResource backgroundResources; + private final GrpcOperationsStub operationsStub; + private final GrpcStubCallableFactory callableFactory; + + public static final GrpcWickedStub create(WickedStubSettings settings) throws IOException { + return new GrpcWickedStub(settings, ClientContext.create(settings)); + } + + public static final GrpcWickedStub create(ClientContext clientContext) throws IOException { + return new GrpcWickedStub(WickedStubSettings.newBuilder().build(), clientContext); + } + + public static final GrpcWickedStub create( + ClientContext clientContext, GrpcStubCallableFactory callableFactory) throws IOException { + return new GrpcWickedStub( + WickedStubSettings.newBuilder().build(), clientContext, callableFactory); } /** - * Constructs an instance of WickedClient, using the given settings. The channels are created - * based on the settings passed in, or defaults for any settings that are not set. + * Constructs an instance of GrpcWickedStub, 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. */ - public static final WickedClient create(WickedSettings settings) throws IOException { - return new WickedClient(settings); + protected GrpcWickedStub(WickedStubSettings settings, ClientContext clientContext) + throws IOException { + this(settings, clientContext, new GrpcWickedCallableFactory()); } /** - * Constructs an instance of WickedClient, using the given stub for making calls. This is for - * advanced usage - prefer using create(WickedSettings). + * Constructs an instance of GrpcWickedStub, 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. */ - public static final WickedClient create(WickedStub stub) { - return new WickedClient(stub); - } - - /** - * Constructs an instance of WickedClient, 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 WickedClient(WickedSettings settings) throws IOException { - this.settings = settings; - this.stub = ((WickedStubSettings) settings.getStubSettings()).createStub(); - } - - protected WickedClient(WickedStub stub) { - this.settings = null; - this.stub = stub; + protected GrpcWickedStub( + WickedStubSettings settings, + ClientContext clientContext, + GrpcStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + this.operationsStub = GrpcOperationsStub.create(clientContext, callableFactory); + + GrpcCallSettings craftEvilPlanTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(craftEvilPlanMethodDescriptor) + .build(); + GrpcCallSettings brainstormEvilPlansTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(brainstormEvilPlansMethodDescriptor) + .build(); + GrpcCallSettings persuadeEvilPlanTransportSettings = + GrpcCallSettings.newBuilder() + .setMethodDescriptor(persuadeEvilPlanMethodDescriptor) + .build(); + + this.craftEvilPlanCallable = + callableFactory.createUnaryCallable( + craftEvilPlanTransportSettings, settings.craftEvilPlanSettings(), clientContext); + this.brainstormEvilPlansCallable = + callableFactory.createBidiStreamingCallable( + brainstormEvilPlansTransportSettings, + settings.brainstormEvilPlansSettings(), + clientContext); + this.persuadeEvilPlanCallable = + callableFactory.createClientStreamingCallable( + persuadeEvilPlanTransportSettings, settings.persuadeEvilPlanSettings(), clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + public GrpcOperationsStub getOperationsStub() { + return operationsStub; } - public final WickedSettings getSettings() { - return settings; - } - - public WickedStub getStub() { - return stub; - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *

{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   EvilResponse response = wickedClient.craftEvilPlan(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 EvilResponse craftEvilPlan(EvilRequest request) { - return craftEvilPlanCallable().call(request); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   ApiFuture future = wickedClient.craftEvilPlanCallable().futureCall(request);
-   *   // Do something.
-   *   EvilResponse response = future.get();
-   * }
-   * }
- */ - public final UnaryCallable craftEvilPlanCallable() { - return stub.craftEvilPlanCallable(); + @Override + public UnaryCallable craftEvilPlanCallable() { + return craftEvilPlanCallable; } - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   BidiStream bidiStream =
-   *       wickedClient.brainstormEvilPlansCallable().call();
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   bidiStream.send(request);
-   *   for (EvilResponse response : bidiStream) {
-   *     // Do something when a response is received.
-   *   }
-   * }
-   * }
- */ - public final BidiStreamingCallable brainstormEvilPlansCallable() { - return stub.brainstormEvilPlansCallable(); + @Override + public BidiStreamingCallable brainstormEvilPlansCallable() { + return brainstormEvilPlansCallable; } - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   ApiStreamObserver responseObserver =
-   *       new ApiStreamObserver() {
-   *         {@literal @}Override
-   *         public void onNext(EvilResponse response) {
-   *           // Do something when a response is received.
-   *         }
-   *
-   *         {@literal @}Override
-   *         public void onError(Throwable t) {
-   *           // Add error-handling
-   *         }
-   *
-   *         {@literal @}Override
-   *         public void onCompleted() {
-   *           // Do something when complete.
-   *         }
-   *       };
-   *   ApiStreamObserver requestObserver =
-   *       wickedClient.persuadeEvilPlan().clientStreamingCall(responseObserver);
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   requestObserver.onNext(request);
-   * }
-   * }
- */ - public final ClientStreamingCallable persuadeEvilPlanCallable() { - return stub.persuadeEvilPlanCallable(); + @Override + public ClientStreamingCallable persuadeEvilPlanCallable() { + return persuadeEvilPlanCallable; } @Override public final void close() { - stub.close(); + try { + backgroundResources.close(); + } catch (RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IllegalStateException("Failed to close resource", e); + } } @Override public void shutdown() { - stub.shutdown(); + backgroundResources.shutdown(); } @Override public boolean isShutdown() { - return stub.isShutdown(); + return backgroundResources.isShutdown(); } @Override public boolean isTerminated() { - return stub.isTerminated(); + return backgroundResources.isTerminated(); } @Override public void shutdownNow() { - stub.shutdownNow(); + backgroundResources.shutdownNow(); } @Override public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { - return stub.awaitTermination(duration, unit); + return backgroundResources.awaitTermination(duration, unit); } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedCallableFactory.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedCallableFactory.golden deleted file mode 100644 index 67f9212085..0000000000 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedCallableFactory.golden +++ /dev/null @@ -1,278 +0,0 @@ -package com.google.showcase.v1beta1; - -import com.google.api.core.BetaApi; -import com.google.api.gax.core.BackgroundResource; -import com.google.api.gax.rpc.BidiStreamingCallable; -import com.google.api.gax.rpc.ClientStreamingCallable; -import com.google.api.gax.rpc.UnaryCallable; -import com.google.showcase.v1beta1.stub.WickedStub; -import com.google.showcase.v1beta1.stub.WickedStubSettings; -import java.io.IOException; -import java.util.concurrent.TimeUnit; -import javax.annotation.Generated; - -// AUTO-GENERATED DOCUMENTATION AND CLASS. -/** - * 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
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * try (WickedClient wickedClient = WickedClient.create()) {
- *   EvilRequest request =
- *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
- *   EvilResponse response = wickedClient.craftEvilPlan(request);
- * }
- * }
- * - *

Note: close() needs to be called on the WickedClient 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 WickedSettings to create(). - * For example: - * - *

To customize credentials: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * WickedSettings wickedSettings =
- *     WickedSettings.newBuilder()
- *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
- *         .build();
- * WickedClient wickedClient = WickedClient.create(wickedSettings);
- * }
- * - *

To customize the endpoint: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * WickedSettings wickedSettings = WickedSettings.newBuilder().setEndpoint(myEndpoint).build();
- * WickedClient wickedClient = WickedClient.create(wickedSettings);
- * }
- * - *

Please refer to the GitHub repository's samples for more quickstart code snippets. - */ -@BetaApi -@Generated("by gapic-generator-java") -public class WickedClient implements BackgroundResource { - private final WickedSettings settings; - private final WickedStub stub; - - /** Constructs an instance of WickedClient with default settings. */ - public static final WickedClient create() throws IOException { - return create(WickedSettings.newBuilder().build()); - } - - /** - * Constructs an instance of WickedClient, 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 WickedClient create(WickedSettings settings) throws IOException { - return new WickedClient(settings); - } - - /** - * Constructs an instance of WickedClient, using the given stub for making calls. This is for - * advanced usage - prefer using create(WickedSettings). - */ - public static final WickedClient create(WickedStub stub) { - return new WickedClient(stub); - } - - /** - * Constructs an instance of WickedClient, 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 WickedClient(WickedSettings settings) throws IOException { - this.settings = settings; - this.stub = ((WickedStubSettings) settings.getStubSettings()).createStub(); - } - - protected WickedClient(WickedStub stub) { - this.settings = null; - this.stub = stub; - } - - public final WickedSettings getSettings() { - return settings; - } - - public WickedStub getStub() { - return stub; - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *

{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   EvilResponse response = wickedClient.craftEvilPlan(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 EvilResponse craftEvilPlan(EvilRequest request) { - return craftEvilPlanCallable().call(request); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   ApiFuture future = wickedClient.craftEvilPlanCallable().futureCall(request);
-   *   // Do something.
-   *   EvilResponse response = future.get();
-   * }
-   * }
- */ - public final UnaryCallable craftEvilPlanCallable() { - return stub.craftEvilPlanCallable(); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   BidiStream bidiStream =
-   *       wickedClient.brainstormEvilPlansCallable().call();
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   bidiStream.send(request);
-   *   for (EvilResponse response : bidiStream) {
-   *     // Do something when a response is received.
-   *   }
-   * }
-   * }
- */ - public final BidiStreamingCallable brainstormEvilPlansCallable() { - return stub.brainstormEvilPlansCallable(); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   ApiStreamObserver responseObserver =
-   *       new ApiStreamObserver() {
-   *         {@literal @}Override
-   *         public void onNext(EvilResponse response) {
-   *           // Do something when a response is received.
-   *         }
-   *
-   *         {@literal @}Override
-   *         public void onError(Throwable t) {
-   *           // Add error-handling
-   *         }
-   *
-   *         {@literal @}Override
-   *         public void onCompleted() {
-   *           // Do something when complete.
-   *         }
-   *       };
-   *   ApiStreamObserver requestObserver =
-   *       wickedClient.persuadeEvilPlan().clientStreamingCall(responseObserver);
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   requestObserver.onNext(request);
-   * }
-   * }
- */ - public final ClientStreamingCallable persuadeEvilPlanCallable() { - return stub.persuadeEvilPlanCallable(); - } - - @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); - } -} diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedStub.golden deleted file mode 100644 index 67f9212085..0000000000 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/HttpJsonWickedStub.golden +++ /dev/null @@ -1,278 +0,0 @@ -package com.google.showcase.v1beta1; - -import com.google.api.core.BetaApi; -import com.google.api.gax.core.BackgroundResource; -import com.google.api.gax.rpc.BidiStreamingCallable; -import com.google.api.gax.rpc.ClientStreamingCallable; -import com.google.api.gax.rpc.UnaryCallable; -import com.google.showcase.v1beta1.stub.WickedStub; -import com.google.showcase.v1beta1.stub.WickedStubSettings; -import java.io.IOException; -import java.util.concurrent.TimeUnit; -import javax.annotation.Generated; - -// AUTO-GENERATED DOCUMENTATION AND CLASS. -/** - * 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
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * try (WickedClient wickedClient = WickedClient.create()) {
- *   EvilRequest request =
- *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
- *   EvilResponse response = wickedClient.craftEvilPlan(request);
- * }
- * }
- * - *

Note: close() needs to be called on the WickedClient 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 WickedSettings to create(). - * For example: - * - *

To customize credentials: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * WickedSettings wickedSettings =
- *     WickedSettings.newBuilder()
- *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
- *         .build();
- * WickedClient wickedClient = WickedClient.create(wickedSettings);
- * }
- * - *

To customize the endpoint: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * WickedSettings wickedSettings = WickedSettings.newBuilder().setEndpoint(myEndpoint).build();
- * WickedClient wickedClient = WickedClient.create(wickedSettings);
- * }
- * - *

Please refer to the GitHub repository's samples for more quickstart code snippets. - */ -@BetaApi -@Generated("by gapic-generator-java") -public class WickedClient implements BackgroundResource { - private final WickedSettings settings; - private final WickedStub stub; - - /** Constructs an instance of WickedClient with default settings. */ - public static final WickedClient create() throws IOException { - return create(WickedSettings.newBuilder().build()); - } - - /** - * Constructs an instance of WickedClient, 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 WickedClient create(WickedSettings settings) throws IOException { - return new WickedClient(settings); - } - - /** - * Constructs an instance of WickedClient, using the given stub for making calls. This is for - * advanced usage - prefer using create(WickedSettings). - */ - public static final WickedClient create(WickedStub stub) { - return new WickedClient(stub); - } - - /** - * Constructs an instance of WickedClient, 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 WickedClient(WickedSettings settings) throws IOException { - this.settings = settings; - this.stub = ((WickedStubSettings) settings.getStubSettings()).createStub(); - } - - protected WickedClient(WickedStub stub) { - this.settings = null; - this.stub = stub; - } - - public final WickedSettings getSettings() { - return settings; - } - - public WickedStub getStub() { - return stub; - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *

{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   EvilResponse response = wickedClient.craftEvilPlan(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 EvilResponse craftEvilPlan(EvilRequest request) { - return craftEvilPlanCallable().call(request); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   ApiFuture future = wickedClient.craftEvilPlanCallable().futureCall(request);
-   *   // Do something.
-   *   EvilResponse response = future.get();
-   * }
-   * }
- */ - public final UnaryCallable craftEvilPlanCallable() { - return stub.craftEvilPlanCallable(); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   BidiStream bidiStream =
-   *       wickedClient.brainstormEvilPlansCallable().call();
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   bidiStream.send(request);
-   *   for (EvilResponse response : bidiStream) {
-   *     // Do something when a response is received.
-   *   }
-   * }
-   * }
- */ - public final BidiStreamingCallable brainstormEvilPlansCallable() { - return stub.brainstormEvilPlansCallable(); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   ApiStreamObserver responseObserver =
-   *       new ApiStreamObserver() {
-   *         {@literal @}Override
-   *         public void onNext(EvilResponse response) {
-   *           // Do something when a response is received.
-   *         }
-   *
-   *         {@literal @}Override
-   *         public void onError(Throwable t) {
-   *           // Add error-handling
-   *         }
-   *
-   *         {@literal @}Override
-   *         public void onCompleted() {
-   *           // Do something when complete.
-   *         }
-   *       };
-   *   ApiStreamObserver requestObserver =
-   *       wickedClient.persuadeEvilPlan().clientStreamingCall(responseObserver);
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   requestObserver.onNext(request);
-   * }
-   * }
- */ - public final ClientStreamingCallable persuadeEvilPlanCallable() { - return stub.persuadeEvilPlanCallable(); - } - - @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); - } -} diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClientHttpJsonTest.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClientHttpJsonTest.golden deleted file mode 100644 index 67f9212085..0000000000 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedClientHttpJsonTest.golden +++ /dev/null @@ -1,278 +0,0 @@ -package com.google.showcase.v1beta1; - -import com.google.api.core.BetaApi; -import com.google.api.gax.core.BackgroundResource; -import com.google.api.gax.rpc.BidiStreamingCallable; -import com.google.api.gax.rpc.ClientStreamingCallable; -import com.google.api.gax.rpc.UnaryCallable; -import com.google.showcase.v1beta1.stub.WickedStub; -import com.google.showcase.v1beta1.stub.WickedStubSettings; -import java.io.IOException; -import java.util.concurrent.TimeUnit; -import javax.annotation.Generated; - -// AUTO-GENERATED DOCUMENTATION AND CLASS. -/** - * 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
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * try (WickedClient wickedClient = WickedClient.create()) {
- *   EvilRequest request =
- *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
- *   EvilResponse response = wickedClient.craftEvilPlan(request);
- * }
- * }
- * - *

Note: close() needs to be called on the WickedClient 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 WickedSettings to create(). - * For example: - * - *

To customize credentials: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * WickedSettings wickedSettings =
- *     WickedSettings.newBuilder()
- *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
- *         .build();
- * WickedClient wickedClient = WickedClient.create(wickedSettings);
- * }
- * - *

To customize the endpoint: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * WickedSettings wickedSettings = WickedSettings.newBuilder().setEndpoint(myEndpoint).build();
- * WickedClient wickedClient = WickedClient.create(wickedSettings);
- * }
- * - *

Please refer to the GitHub repository's samples for more quickstart code snippets. - */ -@BetaApi -@Generated("by gapic-generator-java") -public class WickedClient implements BackgroundResource { - private final WickedSettings settings; - private final WickedStub stub; - - /** Constructs an instance of WickedClient with default settings. */ - public static final WickedClient create() throws IOException { - return create(WickedSettings.newBuilder().build()); - } - - /** - * Constructs an instance of WickedClient, 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 WickedClient create(WickedSettings settings) throws IOException { - return new WickedClient(settings); - } - - /** - * Constructs an instance of WickedClient, using the given stub for making calls. This is for - * advanced usage - prefer using create(WickedSettings). - */ - public static final WickedClient create(WickedStub stub) { - return new WickedClient(stub); - } - - /** - * Constructs an instance of WickedClient, 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 WickedClient(WickedSettings settings) throws IOException { - this.settings = settings; - this.stub = ((WickedStubSettings) settings.getStubSettings()).createStub(); - } - - protected WickedClient(WickedStub stub) { - this.settings = null; - this.stub = stub; - } - - public final WickedSettings getSettings() { - return settings; - } - - public WickedStub getStub() { - return stub; - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *

{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   EvilResponse response = wickedClient.craftEvilPlan(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 EvilResponse craftEvilPlan(EvilRequest request) { - return craftEvilPlanCallable().call(request); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   ApiFuture future = wickedClient.craftEvilPlanCallable().futureCall(request);
-   *   // Do something.
-   *   EvilResponse response = future.get();
-   * }
-   * }
- */ - public final UnaryCallable craftEvilPlanCallable() { - return stub.craftEvilPlanCallable(); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   BidiStream bidiStream =
-   *       wickedClient.brainstormEvilPlansCallable().call();
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   bidiStream.send(request);
-   *   for (EvilResponse response : bidiStream) {
-   *     // Do something when a response is received.
-   *   }
-   * }
-   * }
- */ - public final BidiStreamingCallable brainstormEvilPlansCallable() { - return stub.brainstormEvilPlansCallable(); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   ApiStreamObserver responseObserver =
-   *       new ApiStreamObserver() {
-   *         {@literal @}Override
-   *         public void onNext(EvilResponse response) {
-   *           // Do something when a response is received.
-   *         }
-   *
-   *         {@literal @}Override
-   *         public void onError(Throwable t) {
-   *           // Add error-handling
-   *         }
-   *
-   *         {@literal @}Override
-   *         public void onCompleted() {
-   *           // Do something when complete.
-   *         }
-   *       };
-   *   ApiStreamObserver requestObserver =
-   *       wickedClient.persuadeEvilPlan().clientStreamingCall(responseObserver);
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   requestObserver.onNext(request);
-   * }
-   * }
- */ - public final ClientStreamingCallable persuadeEvilPlanCallable() { - return stub.persuadeEvilPlanCallable(); - } - - @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); - } -} From dc02ecc85c229c50bb5856e91dda102f04732d90 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 24 Jan 2023 14:03:29 -0500 Subject: [PATCH 53/63] chore: Revert back to original sample name --- .../composer/samplecode/ServiceClientHeaderSampleComposer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientHeaderSampleComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientHeaderSampleComposer.java index 239fd5eec6..b979f87744 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientHeaderSampleComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/samplecode/ServiceClientHeaderSampleComposer.java @@ -342,7 +342,7 @@ public static Sample composeTransportSample( RegionTag.builder() .setServiceName(service.name()) .setRpcName(rpcName) - .setOverloadDisambiguation("composeTransport") + .setOverloadDisambiguation("setCredentialsProvider") .build(); return Sample.builder().setBody(sampleBody).setRegionTag(regionTag).build(); } From 76c67e100fcb4ee40509fd569f94c457f6c3b4e2 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 24 Jan 2023 14:07:20 -0500 Subject: [PATCH 54/63] chore: Update showcase and goldens --- ...ort.java => SyncCreateSetCredentialsProvider1.java} | 10 +++++----- ...ort.java => SyncCreateSetCredentialsProvider1.java} | 10 +++++----- ...ort.java => SyncCreateSetCredentialsProvider1.java} | 10 +++++----- ...ort.java => SyncCreateSetCredentialsProvider1.java} | 10 +++++----- ...ort.java => SyncCreateSetCredentialsProvider1.java} | 10 +++++----- ...ort.java => SyncCreateSetCredentialsProvider1.java} | 10 +++++----- ...ort.java => SyncCreateSetCredentialsProvider1.java} | 10 +++++----- ...ort.java => SyncCreateSetCredentialsProvider1.java} | 10 +++++----- ...ort.java => SyncCreateSetCredentialsProvider1.java} | 10 +++++----- ...ort.java => SyncCreateSetCredentialsProvider1.java} | 10 +++++----- ...ort.java => SyncCreateSetCredentialsProvider1.java} | 10 +++++----- 11 files changed, 55 insertions(+), 55 deletions(-) rename showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/compliance/create/{SyncCreateComposeTransport.java => SyncCreateSetCredentialsProvider1.java} (80%) rename showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/echo/create/{SyncCreateComposeTransport.java => SyncCreateSetCredentialsProvider1.java} (80%) rename showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/identity/create/{SyncCreateComposeTransport.java => SyncCreateSetCredentialsProvider1.java} (80%) rename showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/messaging/create/{SyncCreateComposeTransport.java => SyncCreateSetCredentialsProvider1.java} (80%) rename showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/sequenceservice/create/{SyncCreateComposeTransport.java => SyncCreateSetCredentialsProvider1.java} (84%) rename showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/testing/create/{SyncCreateComposeTransport.java => SyncCreateSetCredentialsProvider1.java} (80%) rename test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/{SyncCreateComposeTransport.java => SyncCreateSetCredentialsProvider1.java} (81%) rename test/integration/goldens/asset/samples/snippets/generated/main/java/com/google/cloud/asset/v1/assetservice/create/{SyncCreateComposeTransport.java => SyncCreateSetCredentialsProvider1.java} (81%) rename test/integration/goldens/credentials/samples/snippets/generated/main/java/com/google/cloud/iam/credentials/v1/iamcredentials/create/{SyncCreateComposeTransport.java => SyncCreateSetCredentialsProvider1.java} (81%) rename test/integration/goldens/library/samples/snippets/generated/main/java/com/google/cloud/example/library/v1/libraryservice/create/{SyncCreateComposeTransport.java => SyncCreateSetCredentialsProvider1.java} (81%) rename test/integration/goldens/redis/samples/snippets/generated/main/java/com/google/cloud/redis/v1beta1/cloudredis/create/{SyncCreateComposeTransport.java => SyncCreateSetCredentialsProvider1.java} (81%) diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/compliance/create/SyncCreateComposeTransport.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/compliance/create/SyncCreateSetCredentialsProvider1.java similarity index 80% rename from showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/compliance/create/SyncCreateComposeTransport.java rename to showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/compliance/create/SyncCreateSetCredentialsProvider1.java index a2b9dca59d..f28602378a 100644 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/compliance/create/SyncCreateComposeTransport.java +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/compliance/create/SyncCreateSetCredentialsProvider1.java @@ -16,17 +16,17 @@ package com.google.showcase.v1beta1.samples; -// [START localhost7469_v1beta1_generated_Compliance_Create_ComposeTransport_sync] +// [START localhost7469_v1beta1_generated_Compliance_Create_SetCredentialsProvider1_sync] import com.google.showcase.v1beta1.ComplianceClient; import com.google.showcase.v1beta1.ComplianceSettings; -public class SyncCreateComposeTransport { +public class SyncCreateSetCredentialsProvider1 { public static void main(String[] args) throws Exception { - syncCreateComposeTransport(); + syncCreateSetCredentialsProvider1(); } - public static void syncCreateComposeTransport() throws Exception { + public static void syncCreateSetCredentialsProvider1() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -36,4 +36,4 @@ public static void syncCreateComposeTransport() throws Exception { ComplianceClient complianceClient = ComplianceClient.create(complianceSettings); } } -// [END localhost7469_v1beta1_generated_Compliance_Create_ComposeTransport_sync] +// [END localhost7469_v1beta1_generated_Compliance_Create_SetCredentialsProvider1_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/echo/create/SyncCreateComposeTransport.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/echo/create/SyncCreateSetCredentialsProvider1.java similarity index 80% rename from showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/echo/create/SyncCreateComposeTransport.java rename to showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/echo/create/SyncCreateSetCredentialsProvider1.java index ee4819a5dc..cb6c708da6 100644 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/echo/create/SyncCreateComposeTransport.java +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/echo/create/SyncCreateSetCredentialsProvider1.java @@ -16,17 +16,17 @@ package com.google.showcase.v1beta1.samples; -// [START localhost7469_v1beta1_generated_Echo_Create_ComposeTransport_sync] +// [START localhost7469_v1beta1_generated_Echo_Create_SetCredentialsProvider1_sync] import com.google.showcase.v1beta1.EchoClient; import com.google.showcase.v1beta1.EchoSettings; -public class SyncCreateComposeTransport { +public class SyncCreateSetCredentialsProvider1 { public static void main(String[] args) throws Exception { - syncCreateComposeTransport(); + syncCreateSetCredentialsProvider1(); } - public static void syncCreateComposeTransport() throws Exception { + public static void syncCreateSetCredentialsProvider1() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -36,4 +36,4 @@ public static void syncCreateComposeTransport() throws Exception { EchoClient echoClient = EchoClient.create(echoSettings); } } -// [END localhost7469_v1beta1_generated_Echo_Create_ComposeTransport_sync] +// [END localhost7469_v1beta1_generated_Echo_Create_SetCredentialsProvider1_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/identity/create/SyncCreateComposeTransport.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/identity/create/SyncCreateSetCredentialsProvider1.java similarity index 80% rename from showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/identity/create/SyncCreateComposeTransport.java rename to showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/identity/create/SyncCreateSetCredentialsProvider1.java index 818c29b039..4ef4b5c388 100644 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/identity/create/SyncCreateComposeTransport.java +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/identity/create/SyncCreateSetCredentialsProvider1.java @@ -16,17 +16,17 @@ package com.google.showcase.v1beta1.samples; -// [START localhost7469_v1beta1_generated_Identity_Create_ComposeTransport_sync] +// [START localhost7469_v1beta1_generated_Identity_Create_SetCredentialsProvider1_sync] import com.google.showcase.v1beta1.IdentityClient; import com.google.showcase.v1beta1.IdentitySettings; -public class SyncCreateComposeTransport { +public class SyncCreateSetCredentialsProvider1 { public static void main(String[] args) throws Exception { - syncCreateComposeTransport(); + syncCreateSetCredentialsProvider1(); } - public static void syncCreateComposeTransport() throws Exception { + public static void syncCreateSetCredentialsProvider1() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -36,4 +36,4 @@ public static void syncCreateComposeTransport() throws Exception { IdentityClient identityClient = IdentityClient.create(identitySettings); } } -// [END localhost7469_v1beta1_generated_Identity_Create_ComposeTransport_sync] +// [END localhost7469_v1beta1_generated_Identity_Create_SetCredentialsProvider1_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/messaging/create/SyncCreateComposeTransport.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/messaging/create/SyncCreateSetCredentialsProvider1.java similarity index 80% rename from showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/messaging/create/SyncCreateComposeTransport.java rename to showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/messaging/create/SyncCreateSetCredentialsProvider1.java index 807e0cdabb..ac54a1ca4e 100644 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/messaging/create/SyncCreateComposeTransport.java +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/messaging/create/SyncCreateSetCredentialsProvider1.java @@ -16,17 +16,17 @@ package com.google.showcase.v1beta1.samples; -// [START localhost7469_v1beta1_generated_Messaging_Create_ComposeTransport_sync] +// [START localhost7469_v1beta1_generated_Messaging_Create_SetCredentialsProvider1_sync] import com.google.showcase.v1beta1.MessagingClient; import com.google.showcase.v1beta1.MessagingSettings; -public class SyncCreateComposeTransport { +public class SyncCreateSetCredentialsProvider1 { public static void main(String[] args) throws Exception { - syncCreateComposeTransport(); + syncCreateSetCredentialsProvider1(); } - public static void syncCreateComposeTransport() throws Exception { + public static void syncCreateSetCredentialsProvider1() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -36,4 +36,4 @@ public static void syncCreateComposeTransport() throws Exception { MessagingClient messagingClient = MessagingClient.create(messagingSettings); } } -// [END localhost7469_v1beta1_generated_Messaging_Create_ComposeTransport_sync] +// [END localhost7469_v1beta1_generated_Messaging_Create_SetCredentialsProvider1_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/sequenceservice/create/SyncCreateComposeTransport.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/sequenceservice/create/SyncCreateSetCredentialsProvider1.java similarity index 84% rename from showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/sequenceservice/create/SyncCreateComposeTransport.java rename to showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/sequenceservice/create/SyncCreateSetCredentialsProvider1.java index 19dc167fd4..5f6f2f63f8 100644 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/sequenceservice/create/SyncCreateComposeTransport.java +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/sequenceservice/create/SyncCreateSetCredentialsProvider1.java @@ -16,17 +16,17 @@ package com.google.showcase.v1beta1.samples; -// [START localhost7469_v1beta1_generated_SequenceService_Create_ComposeTransport_sync] +// [START localhost7469_v1beta1_generated_SequenceService_Create_SetCredentialsProvider1_sync] import com.google.showcase.v1beta1.SequenceServiceClient; import com.google.showcase.v1beta1.SequenceServiceSettings; -public class SyncCreateComposeTransport { +public class SyncCreateSetCredentialsProvider1 { public static void main(String[] args) throws Exception { - syncCreateComposeTransport(); + syncCreateSetCredentialsProvider1(); } - public static void syncCreateComposeTransport() throws Exception { + public static void syncCreateSetCredentialsProvider1() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -38,4 +38,4 @@ public static void syncCreateComposeTransport() throws Exception { SequenceServiceClient.create(sequenceServiceSettings); } } -// [END localhost7469_v1beta1_generated_SequenceService_Create_ComposeTransport_sync] +// [END localhost7469_v1beta1_generated_SequenceService_Create_SetCredentialsProvider1_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/testing/create/SyncCreateComposeTransport.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/testing/create/SyncCreateSetCredentialsProvider1.java similarity index 80% rename from showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/testing/create/SyncCreateComposeTransport.java rename to showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/testing/create/SyncCreateSetCredentialsProvider1.java index 11113a5693..98fb47f1f2 100644 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/testing/create/SyncCreateComposeTransport.java +++ b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/testing/create/SyncCreateSetCredentialsProvider1.java @@ -16,17 +16,17 @@ package com.google.showcase.v1beta1.samples; -// [START localhost7469_v1beta1_generated_Testing_Create_ComposeTransport_sync] +// [START localhost7469_v1beta1_generated_Testing_Create_SetCredentialsProvider1_sync] import com.google.showcase.v1beta1.TestingClient; import com.google.showcase.v1beta1.TestingSettings; -public class SyncCreateComposeTransport { +public class SyncCreateSetCredentialsProvider1 { public static void main(String[] args) throws Exception { - syncCreateComposeTransport(); + syncCreateSetCredentialsProvider1(); } - public static void syncCreateComposeTransport() throws Exception { + public static void syncCreateSetCredentialsProvider1() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -36,4 +36,4 @@ public static void syncCreateComposeTransport() throws Exception { TestingClient testingClient = TestingClient.create(testingSettings); } } -// [END localhost7469_v1beta1_generated_Testing_Create_ComposeTransport_sync] +// [END localhost7469_v1beta1_generated_Testing_Create_SetCredentialsProvider1_sync] diff --git a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateComposeTransport.java b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetCredentialsProvider1.java similarity index 81% rename from test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateComposeTransport.java rename to test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetCredentialsProvider1.java index d229135e21..b2a5bd5657 100644 --- a/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateComposeTransport.java +++ b/test/integration/goldens/apigeeconnect/samples/snippets/generated/main/java/com/google/cloud/apigeeconnect/v1/connectionservice/create/SyncCreateSetCredentialsProvider1.java @@ -16,17 +16,17 @@ package com.google.cloud.apigeeconnect.v1.samples; -// [START apigeeconnect_v1_generated_ConnectionService_Create_ComposeTransport_sync] +// [START apigeeconnect_v1_generated_ConnectionService_Create_SetCredentialsProvider1_sync] import com.google.cloud.apigeeconnect.v1.ConnectionServiceClient; import com.google.cloud.apigeeconnect.v1.ConnectionServiceSettings; -public class SyncCreateComposeTransport { +public class SyncCreateSetCredentialsProvider1 { public static void main(String[] args) throws Exception { - syncCreateComposeTransport(); + syncCreateSetCredentialsProvider1(); } - public static void syncCreateComposeTransport() throws Exception { + public static void syncCreateSetCredentialsProvider1() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -38,4 +38,4 @@ public static void syncCreateComposeTransport() throws Exception { ConnectionServiceClient.create(connectionServiceSettings); } } -// [END apigeeconnect_v1_generated_ConnectionService_Create_ComposeTransport_sync] +// [END apigeeconnect_v1_generated_ConnectionService_Create_SetCredentialsProvider1_sync] diff --git a/test/integration/goldens/asset/samples/snippets/generated/main/java/com/google/cloud/asset/v1/assetservice/create/SyncCreateComposeTransport.java b/test/integration/goldens/asset/samples/snippets/generated/main/java/com/google/cloud/asset/v1/assetservice/create/SyncCreateSetCredentialsProvider1.java similarity index 81% rename from test/integration/goldens/asset/samples/snippets/generated/main/java/com/google/cloud/asset/v1/assetservice/create/SyncCreateComposeTransport.java rename to test/integration/goldens/asset/samples/snippets/generated/main/java/com/google/cloud/asset/v1/assetservice/create/SyncCreateSetCredentialsProvider1.java index 5e229f0902..84fa8e108a 100644 --- a/test/integration/goldens/asset/samples/snippets/generated/main/java/com/google/cloud/asset/v1/assetservice/create/SyncCreateComposeTransport.java +++ b/test/integration/goldens/asset/samples/snippets/generated/main/java/com/google/cloud/asset/v1/assetservice/create/SyncCreateSetCredentialsProvider1.java @@ -16,17 +16,17 @@ package com.google.cloud.asset.v1.samples; -// [START cloudasset_v1_generated_AssetService_Create_ComposeTransport_sync] +// [START cloudasset_v1_generated_AssetService_Create_SetCredentialsProvider1_sync] import com.google.cloud.asset.v1.AssetServiceClient; import com.google.cloud.asset.v1.AssetServiceSettings; -public class SyncCreateComposeTransport { +public class SyncCreateSetCredentialsProvider1 { public static void main(String[] args) throws Exception { - syncCreateComposeTransport(); + syncCreateSetCredentialsProvider1(); } - public static void syncCreateComposeTransport() throws Exception { + public static void syncCreateSetCredentialsProvider1() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -36,4 +36,4 @@ public static void syncCreateComposeTransport() throws Exception { AssetServiceClient assetServiceClient = AssetServiceClient.create(assetServiceSettings); } } -// [END cloudasset_v1_generated_AssetService_Create_ComposeTransport_sync] +// [END cloudasset_v1_generated_AssetService_Create_SetCredentialsProvider1_sync] diff --git a/test/integration/goldens/credentials/samples/snippets/generated/main/java/com/google/cloud/iam/credentials/v1/iamcredentials/create/SyncCreateComposeTransport.java b/test/integration/goldens/credentials/samples/snippets/generated/main/java/com/google/cloud/iam/credentials/v1/iamcredentials/create/SyncCreateSetCredentialsProvider1.java similarity index 81% rename from test/integration/goldens/credentials/samples/snippets/generated/main/java/com/google/cloud/iam/credentials/v1/iamcredentials/create/SyncCreateComposeTransport.java rename to test/integration/goldens/credentials/samples/snippets/generated/main/java/com/google/cloud/iam/credentials/v1/iamcredentials/create/SyncCreateSetCredentialsProvider1.java index cf044e04b5..91ce887f89 100644 --- a/test/integration/goldens/credentials/samples/snippets/generated/main/java/com/google/cloud/iam/credentials/v1/iamcredentials/create/SyncCreateComposeTransport.java +++ b/test/integration/goldens/credentials/samples/snippets/generated/main/java/com/google/cloud/iam/credentials/v1/iamcredentials/create/SyncCreateSetCredentialsProvider1.java @@ -16,17 +16,17 @@ package com.google.cloud.iam.credentials.v1.samples; -// [START iamcredentials_v1_generated_IAMCredentials_Create_ComposeTransport_sync] +// [START iamcredentials_v1_generated_IAMCredentials_Create_SetCredentialsProvider1_sync] import com.google.cloud.iam.credentials.v1.IamCredentialsClient; import com.google.cloud.iam.credentials.v1.IamCredentialsSettings; -public class SyncCreateComposeTransport { +public class SyncCreateSetCredentialsProvider1 { public static void main(String[] args) throws Exception { - syncCreateComposeTransport(); + syncCreateSetCredentialsProvider1(); } - public static void syncCreateComposeTransport() throws Exception { + public static void syncCreateSetCredentialsProvider1() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -37,4 +37,4 @@ public static void syncCreateComposeTransport() throws Exception { IamCredentialsClient iamCredentialsClient = IamCredentialsClient.create(iamCredentialsSettings); } } -// [END iamcredentials_v1_generated_IAMCredentials_Create_ComposeTransport_sync] +// [END iamcredentials_v1_generated_IAMCredentials_Create_SetCredentialsProvider1_sync] diff --git a/test/integration/goldens/library/samples/snippets/generated/main/java/com/google/cloud/example/library/v1/libraryservice/create/SyncCreateComposeTransport.java b/test/integration/goldens/library/samples/snippets/generated/main/java/com/google/cloud/example/library/v1/libraryservice/create/SyncCreateSetCredentialsProvider1.java similarity index 81% rename from test/integration/goldens/library/samples/snippets/generated/main/java/com/google/cloud/example/library/v1/libraryservice/create/SyncCreateComposeTransport.java rename to test/integration/goldens/library/samples/snippets/generated/main/java/com/google/cloud/example/library/v1/libraryservice/create/SyncCreateSetCredentialsProvider1.java index e417db72f1..3258a152b4 100644 --- a/test/integration/goldens/library/samples/snippets/generated/main/java/com/google/cloud/example/library/v1/libraryservice/create/SyncCreateComposeTransport.java +++ b/test/integration/goldens/library/samples/snippets/generated/main/java/com/google/cloud/example/library/v1/libraryservice/create/SyncCreateSetCredentialsProvider1.java @@ -16,17 +16,17 @@ package com.google.cloud.example.library.v1.samples; -// [START example_v1_generated_LibraryService_Create_ComposeTransport_sync] +// [START example_v1_generated_LibraryService_Create_SetCredentialsProvider1_sync] import com.google.cloud.example.library.v1.LibraryServiceClient; import com.google.cloud.example.library.v1.LibraryServiceSettings; -public class SyncCreateComposeTransport { +public class SyncCreateSetCredentialsProvider1 { public static void main(String[] args) throws Exception { - syncCreateComposeTransport(); + syncCreateSetCredentialsProvider1(); } - public static void syncCreateComposeTransport() throws Exception { + public static void syncCreateSetCredentialsProvider1() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -37,4 +37,4 @@ public static void syncCreateComposeTransport() throws Exception { LibraryServiceClient libraryServiceClient = LibraryServiceClient.create(libraryServiceSettings); } } -// [END example_v1_generated_LibraryService_Create_ComposeTransport_sync] +// [END example_v1_generated_LibraryService_Create_SetCredentialsProvider1_sync] diff --git a/test/integration/goldens/redis/samples/snippets/generated/main/java/com/google/cloud/redis/v1beta1/cloudredis/create/SyncCreateComposeTransport.java b/test/integration/goldens/redis/samples/snippets/generated/main/java/com/google/cloud/redis/v1beta1/cloudredis/create/SyncCreateSetCredentialsProvider1.java similarity index 81% rename from test/integration/goldens/redis/samples/snippets/generated/main/java/com/google/cloud/redis/v1beta1/cloudredis/create/SyncCreateComposeTransport.java rename to test/integration/goldens/redis/samples/snippets/generated/main/java/com/google/cloud/redis/v1beta1/cloudredis/create/SyncCreateSetCredentialsProvider1.java index b168d941ea..9d906a88e4 100644 --- a/test/integration/goldens/redis/samples/snippets/generated/main/java/com/google/cloud/redis/v1beta1/cloudredis/create/SyncCreateComposeTransport.java +++ b/test/integration/goldens/redis/samples/snippets/generated/main/java/com/google/cloud/redis/v1beta1/cloudredis/create/SyncCreateSetCredentialsProvider1.java @@ -16,17 +16,17 @@ package com.google.cloud.redis.v1beta1.samples; -// [START redis_v1beta1_generated_CloudRedis_Create_ComposeTransport_sync] +// [START redis_v1beta1_generated_CloudRedis_Create_SetCredentialsProvider1_sync] import com.google.cloud.redis.v1beta1.CloudRedisClient; import com.google.cloud.redis.v1beta1.CloudRedisSettings; -public class SyncCreateComposeTransport { +public class SyncCreateSetCredentialsProvider1 { public static void main(String[] args) throws Exception { - syncCreateComposeTransport(); + syncCreateSetCredentialsProvider1(); } - public static void syncCreateComposeTransport() throws Exception { + public static void syncCreateSetCredentialsProvider1() throws Exception { // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: // - It may require correct/in-range values for request initialization. @@ -36,4 +36,4 @@ public static void syncCreateComposeTransport() throws Exception { CloudRedisClient cloudRedisClient = CloudRedisClient.create(cloudRedisSettings); } } -// [END redis_v1beta1_generated_CloudRedis_Create_ComposeTransport_sync] +// [END redis_v1beta1_generated_CloudRedis_Create_SetCredentialsProvider1_sync] From 0aa24df058f52beef55c7ed0776dcb3b5ae33a60 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 24 Jan 2023 14:16:55 -0500 Subject: [PATCH 55/63] chore: Leave framework but remove wicked proto from showcase extended --- showcase/BUILD.bazel | 24 +- .../gapic-showcase-extended/proto/BUILD.bazel | 12 +- .../craftevilplan/SyncCraftEvilPlan.java | 48 -- .../AsyncBrainstormEvilPlans.java | 49 -- .../craftevilplan/AsyncCraftEvilPlan.java | 46 -- .../craftevilplan/SyncCraftEvilPlan.java | 43 -- .../SyncCreateSetCredentialsProvider.java | 44 -- .../wicked/create/SyncCreateSetEndpoint.java | 40 -- .../AsyncPersuadeEvilPlan.java | 63 -- .../craftevilplan/SyncCraftEvilPlan.java | 48 -- .../google/showcase/v1beta1/WickedClient.java | 299 ---------- .../showcase/v1beta1/WickedSettings.java | 207 ------- .../showcase/v1beta1/gapic_metadata.json | 18 - .../google/showcase/v1beta1/package-info.java | 22 - .../stub/GrpcWickedCallableFactory.java | 115 ---- .../showcase/v1beta1/stub/GrpcWickedStub.java | 198 ------- .../showcase/v1beta1/stub/WickedStub.java | 52 -- .../v1beta1/stub/WickedStubSettings.java | 301 ---------- .../google/showcase/v1beta1/MockWicked.java | 59 -- .../showcase/v1beta1/MockWickedImpl.java | 154 ----- .../showcase/v1beta1/WickedClientTest.java | 213 ------- .../google/showcase/v1beta1/WickedGrpc.java | 392 ------------ .../google/showcase/v1beta1/EvilRequest.java | 559 ------------------ .../v1beta1/EvilRequestOrBuilder.java | 21 - .../google/showcase/v1beta1/EvilResponse.java | 559 ------------------ .../v1beta1/EvilResponseOrBuilder.java | 21 - .../showcase/v1beta1/WickedOuterClass.java | 79 --- showcase/scripts/update.sh | 4 +- showcase/scripts/verify.sh | 4 +- 29 files changed, 21 insertions(+), 3673 deletions(-) delete mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/stub/wickedstubsettings/craftevilplan/SyncCraftEvilPlan.java delete mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/brainstormevilplans/AsyncBrainstormEvilPlans.java delete mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/AsyncCraftEvilPlan.java delete mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/SyncCraftEvilPlan.java delete mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetCredentialsProvider.java delete mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetEndpoint.java delete mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/persuadeevilplan/AsyncPersuadeEvilPlan.java delete mode 100644 showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wickedsettings/craftevilplan/SyncCraftEvilPlan.java delete mode 100644 showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedClient.java delete mode 100644 showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedSettings.java delete mode 100644 showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedCallableFactory.java delete mode 100644 showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedStub.java delete mode 100644 showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStub.java delete mode 100644 showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStubSettings.java delete mode 100644 showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWicked.java delete mode 100644 showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWickedImpl.java delete mode 100644 showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/WickedClientTest.java delete mode 100644 showcase/grpc-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedGrpc.java delete mode 100644 showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequest.java delete mode 100644 showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequestOrBuilder.java delete mode 100644 showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponse.java delete mode 100644 showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponseOrBuilder.java delete mode 100644 showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedOuterClass.java diff --git a/showcase/BUILD.bazel b/showcase/BUILD.bazel index a594f66924..bb8f42e5b9 100644 --- a/showcase/BUILD.bazel +++ b/showcase/BUILD.bazel @@ -14,7 +14,7 @@ proto_library_with_info( name = "showcase_proto_with_info", deps = [ "@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_proto", - "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", +# "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", "@com_google_googleapis//google/cloud:common_resources_proto", ], ) @@ -23,7 +23,7 @@ java_proto_library( name = "showcase_java_proto", deps = [ "@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_proto", - "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", +# "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", ], ) @@ -33,13 +33,13 @@ java_grpc_library( deps = [":showcase_java_proto"], ) -java_grpc_library( - name = "showcase_java_grpc_extended", - srcs = [ - "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", - ], - deps = [":showcase_java_proto"], -) +#java_grpc_library( +# name = "showcase_java_grpc_extended", +# srcs = [ +# "//showcase/gapic-showcase-extended/proto:showcase_proto_extended", +# ], +# deps = [":showcase_java_proto"], +#) java_gapic_library( name = "showcase_java_gapic", @@ -50,7 +50,7 @@ java_gapic_library( service_yaml = "@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_v1beta1.yaml", test_deps = [ ":showcase_java_grpc", - ":showcase_java_grpc_extended", +# ":showcase_java_grpc_extended", ], transport = "grpc+rest", deps = [ @@ -113,10 +113,10 @@ sh_binary( # GRPC Showcase : Update and Verify GRPC_DATA = [ "libshowcase_java_grpc-src.jar", - "libshowcase_java_grpc_extended-src.jar", +# "libshowcase_java_grpc_extended-src.jar", ":grpc_gapic_showcase_files", ":showcase_java_grpc", - ":showcase_java_grpc_extended" +# ":showcase_java_grpc_extended" ] sh_binary( diff --git a/showcase/gapic-showcase-extended/proto/BUILD.bazel b/showcase/gapic-showcase-extended/proto/BUILD.bazel index 6984ae2386..3be218f7fc 100644 --- a/showcase/gapic-showcase-extended/proto/BUILD.bazel +++ b/showcase/gapic-showcase-extended/proto/BUILD.bazel @@ -21,10 +21,8 @@ load ("@rules_proto//proto:defs.bzl", "proto_library") # This is an API workspace, having public visibility by default makes perfect sense. package(default_visibility = ["//visibility:public"]) -proto_library( - name = "showcase_proto_extended", - srcs = [ ":wicked.proto" ], - deps = [ - "@com_google_googleapis//google/api:client_proto", - ] -) \ No newline at end of file +#proto_library( +# name = "showcase_proto_extended", +# srcs = [], +# deps = [] +#) \ No newline at end of file diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/stub/wickedstubsettings/craftevilplan/SyncCraftEvilPlan.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/stub/wickedstubsettings/craftevilplan/SyncCraftEvilPlan.java deleted file mode 100644 index de6207f682..0000000000 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/stub/wickedstubsettings/craftevilplan/SyncCraftEvilPlan.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1.stub.samples; - -// [START localhost7469_v1beta1_generated_WickedStubSettings_CraftEvilPlan_sync] -import com.google.showcase.v1beta1.stub.WickedStubSettings; -import java.time.Duration; - -public class SyncCraftEvilPlan { - - public static void main(String[] args) throws Exception { - syncCraftEvilPlan(); - } - - public static void syncCraftEvilPlan() throws Exception { - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in - // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library - WickedStubSettings.Builder wickedSettingsBuilder = WickedStubSettings.newBuilder(); - wickedSettingsBuilder - .craftEvilPlanSettings() - .setRetrySettings( - wickedSettingsBuilder - .craftEvilPlanSettings() - .getRetrySettings() - .toBuilder() - .setTotalTimeout(Duration.ofSeconds(30)) - .build()); - WickedStubSettings wickedSettings = wickedSettingsBuilder.build(); - } -} -// [END localhost7469_v1beta1_generated_WickedStubSettings_CraftEvilPlan_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/brainstormevilplans/AsyncBrainstormEvilPlans.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/brainstormevilplans/AsyncBrainstormEvilPlans.java deleted file mode 100644 index 8bcb58afbb..0000000000 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/brainstormevilplans/AsyncBrainstormEvilPlans.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1.samples; - -// [START localhost7469_v1beta1_generated_Wicked_BrainstormEvilPlans_async] -import com.google.api.gax.rpc.BidiStream; -import com.google.showcase.v1beta1.EvilRequest; -import com.google.showcase.v1beta1.EvilResponse; -import com.google.showcase.v1beta1.WickedClient; - -public class AsyncBrainstormEvilPlans { - - public static void main(String[] args) throws Exception { - asyncBrainstormEvilPlans(); - } - - public static void asyncBrainstormEvilPlans() throws Exception { - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in - // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library - try (WickedClient wickedClient = WickedClient.create()) { - BidiStream bidiStream = - wickedClient.brainstormEvilPlansCallable().call(); - EvilRequest request = - EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); - bidiStream.send(request); - for (EvilResponse response : bidiStream) { - // Do something when a response is received. - } - } - } -} -// [END localhost7469_v1beta1_generated_Wicked_BrainstormEvilPlans_async] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/AsyncCraftEvilPlan.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/AsyncCraftEvilPlan.java deleted file mode 100644 index 8be0e67e7c..0000000000 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/AsyncCraftEvilPlan.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1.samples; - -// [START localhost7469_v1beta1_generated_Wicked_CraftEvilPlan_async] -import com.google.api.core.ApiFuture; -import com.google.showcase.v1beta1.EvilRequest; -import com.google.showcase.v1beta1.EvilResponse; -import com.google.showcase.v1beta1.WickedClient; - -public class AsyncCraftEvilPlan { - - public static void main(String[] args) throws Exception { - asyncCraftEvilPlan(); - } - - public static void asyncCraftEvilPlan() throws Exception { - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in - // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library - try (WickedClient wickedClient = WickedClient.create()) { - EvilRequest request = - EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); - ApiFuture future = wickedClient.craftEvilPlanCallable().futureCall(request); - // Do something. - EvilResponse response = future.get(); - } - } -} -// [END localhost7469_v1beta1_generated_Wicked_CraftEvilPlan_async] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/SyncCraftEvilPlan.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/SyncCraftEvilPlan.java deleted file mode 100644 index 4b7aeb0f9c..0000000000 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/craftevilplan/SyncCraftEvilPlan.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1.samples; - -// [START localhost7469_v1beta1_generated_Wicked_CraftEvilPlan_sync] -import com.google.showcase.v1beta1.EvilRequest; -import com.google.showcase.v1beta1.EvilResponse; -import com.google.showcase.v1beta1.WickedClient; - -public class SyncCraftEvilPlan { - - public static void main(String[] args) throws Exception { - syncCraftEvilPlan(); - } - - public static void syncCraftEvilPlan() throws Exception { - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in - // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library - try (WickedClient wickedClient = WickedClient.create()) { - EvilRequest request = - EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); - EvilResponse response = wickedClient.craftEvilPlan(request); - } - } -} -// [END localhost7469_v1beta1_generated_Wicked_CraftEvilPlan_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetCredentialsProvider.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetCredentialsProvider.java deleted file mode 100644 index c4eb08016b..0000000000 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetCredentialsProvider.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1.samples; - -// [START localhost7469_v1beta1_generated_Wicked_Create_SetCredentialsProvider_sync] -import com.google.api.gax.core.FixedCredentialsProvider; -import com.google.showcase.v1beta1.WickedClient; -import com.google.showcase.v1beta1.WickedSettings; -import com.google.showcase.v1beta1.myCredentials; - -public class SyncCreateSetCredentialsProvider { - - public static void main(String[] args) throws Exception { - syncCreateSetCredentialsProvider(); - } - - public static void syncCreateSetCredentialsProvider() throws Exception { - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in - // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library - WickedSettings wickedSettings = - WickedSettings.newBuilder() - .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials)) - .build(); - WickedClient wickedClient = WickedClient.create(wickedSettings); - } -} -// [END localhost7469_v1beta1_generated_Wicked_Create_SetCredentialsProvider_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetEndpoint.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetEndpoint.java deleted file mode 100644 index bff6d56f2b..0000000000 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/create/SyncCreateSetEndpoint.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1.samples; - -// [START localhost7469_v1beta1_generated_Wicked_Create_SetEndpoint_sync] -import com.google.showcase.v1beta1.WickedClient; -import com.google.showcase.v1beta1.WickedSettings; -import com.google.showcase.v1beta1.myEndpoint; - -public class SyncCreateSetEndpoint { - - public static void main(String[] args) throws Exception { - syncCreateSetEndpoint(); - } - - public static void syncCreateSetEndpoint() throws Exception { - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in - // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library - WickedSettings wickedSettings = WickedSettings.newBuilder().setEndpoint(myEndpoint).build(); - WickedClient wickedClient = WickedClient.create(wickedSettings); - } -} -// [END localhost7469_v1beta1_generated_Wicked_Create_SetEndpoint_sync] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/persuadeevilplan/AsyncPersuadeEvilPlan.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/persuadeevilplan/AsyncPersuadeEvilPlan.java deleted file mode 100644 index 88d9d4f18e..0000000000 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wicked/persuadeevilplan/AsyncPersuadeEvilPlan.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1.samples; - -// [START localhost7469_v1beta1_generated_Wicked_PersuadeEvilPlan_async] -import com.google.api.gax.rpc.ApiStreamObserver; -import com.google.showcase.v1beta1.EvilRequest; -import com.google.showcase.v1beta1.EvilResponse; -import com.google.showcase.v1beta1.WickedClient; - -public class AsyncPersuadeEvilPlan { - - public static void main(String[] args) throws Exception { - asyncPersuadeEvilPlan(); - } - - public static void asyncPersuadeEvilPlan() throws Exception { - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in - // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library - try (WickedClient wickedClient = WickedClient.create()) { - ApiStreamObserver responseObserver = - new ApiStreamObserver() { - @Override - public void onNext(EvilResponse response) { - // Do something when a response is received. - } - - @Override - public void onError(Throwable t) { - // Add error-handling - } - - @Override - public void onCompleted() { - // Do something when complete. - } - }; - ApiStreamObserver requestObserver = - wickedClient.persuadeEvilPlan().clientStreamingCall(responseObserver); - EvilRequest request = - EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); - requestObserver.onNext(request); - } - } -} -// [END localhost7469_v1beta1_generated_Wicked_PersuadeEvilPlan_async] diff --git a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wickedsettings/craftevilplan/SyncCraftEvilPlan.java b/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wickedsettings/craftevilplan/SyncCraftEvilPlan.java deleted file mode 100644 index ee9bc599ad..0000000000 --- a/showcase/gapic-showcase/samples/snippets/generated/src/main/java/com/google/showcase/v1beta1/wickedsettings/craftevilplan/SyncCraftEvilPlan.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1.samples; - -// [START localhost7469_v1beta1_generated_WickedSettings_CraftEvilPlan_sync] -import com.google.showcase.v1beta1.WickedSettings; -import java.time.Duration; - -public class SyncCraftEvilPlan { - - public static void main(String[] args) throws Exception { - syncCraftEvilPlan(); - } - - public static void syncCraftEvilPlan() throws Exception { - // This snippet has been automatically generated and should be regarded as a code template only. - // It will require modifications to work: - // - It may require correct/in-range values for request initialization. - // - It may require specifying regional endpoints when creating the service client as shown in - // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library - WickedSettings.Builder wickedSettingsBuilder = WickedSettings.newBuilder(); - wickedSettingsBuilder - .craftEvilPlanSettings() - .setRetrySettings( - wickedSettingsBuilder - .craftEvilPlanSettings() - .getRetrySettings() - .toBuilder() - .setTotalTimeout(Duration.ofSeconds(30)) - .build()); - WickedSettings wickedSettings = wickedSettingsBuilder.build(); - } -} -// [END localhost7469_v1beta1_generated_WickedSettings_CraftEvilPlan_sync] diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedClient.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedClient.java deleted file mode 100644 index 4fcd65361b..0000000000 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedClient.java +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1; - -import com.google.api.core.BetaApi; -import com.google.api.gax.core.BackgroundResource; -import com.google.api.gax.rpc.BidiStreamingCallable; -import com.google.api.gax.rpc.ClientStreamingCallable; -import com.google.api.gax.rpc.UnaryCallable; -import com.google.showcase.v1beta1.stub.WickedStub; -import com.google.showcase.v1beta1.stub.WickedStubSettings; -import java.io.IOException; -import java.util.concurrent.TimeUnit; -import javax.annotation.Generated; - -// AUTO-GENERATED DOCUMENTATION AND CLASS. -/** - * Service Description: This service is used to show a Service with either non-enabled or - * non-eligible RPCs for HttpJson (Http 1.1). Non-Enabled: Missing the (google.api.http) annotation - * to enabled it Non-Eligible: BIDI and Client side streaming are not supported with Http 1.1 - * Service name is reference to `No REST for the Wicked` - * - *

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
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * try (WickedClient wickedClient = WickedClient.create()) {
- *   EvilRequest request =
- *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
- *   EvilResponse response = wickedClient.craftEvilPlan(request);
- * }
- * }
- * - *

Note: close() needs to be called on the WickedClient 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 WickedSettings to create(). - * For example: - * - *

To customize credentials: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * WickedSettings wickedSettings =
- *     WickedSettings.newBuilder()
- *         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
- *         .build();
- * WickedClient wickedClient = WickedClient.create(wickedSettings);
- * }
- * - *

To customize the endpoint: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * WickedSettings wickedSettings = WickedSettings.newBuilder().setEndpoint(myEndpoint).build();
- * WickedClient wickedClient = WickedClient.create(wickedSettings);
- * }
- * - *

Please refer to the GitHub repository's samples for more quickstart code snippets. - */ -@BetaApi -@Generated("by gapic-generator-java") -public class WickedClient implements BackgroundResource { - private final WickedSettings settings; - private final WickedStub stub; - - /** Constructs an instance of WickedClient with default settings. */ - public static final WickedClient create() throws IOException { - return create(WickedSettings.newBuilder().build()); - } - - /** - * Constructs an instance of WickedClient, 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 WickedClient create(WickedSettings settings) throws IOException { - return new WickedClient(settings); - } - - /** - * Constructs an instance of WickedClient, using the given stub for making calls. This is for - * advanced usage - prefer using create(WickedSettings). - */ - public static final WickedClient create(WickedStub stub) { - return new WickedClient(stub); - } - - /** - * Constructs an instance of WickedClient, 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 WickedClient(WickedSettings settings) throws IOException { - this.settings = settings; - this.stub = ((WickedStubSettings) settings.getStubSettings()).createStub(); - } - - protected WickedClient(WickedStub stub) { - this.settings = null; - this.stub = stub; - } - - public final WickedSettings getSettings() { - return settings; - } - - public WickedStub getStub() { - return stub; - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *

{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   EvilResponse response = wickedClient.craftEvilPlan(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 EvilResponse craftEvilPlan(EvilRequest request) { - return craftEvilPlanCallable().call(request); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   ApiFuture future = wickedClient.craftEvilPlanCallable().futureCall(request);
-   *   // Do something.
-   *   EvilResponse response = future.get();
-   * }
-   * }
- */ - public final UnaryCallable craftEvilPlanCallable() { - return stub.craftEvilPlanCallable(); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   BidiStream bidiStream =
-   *       wickedClient.brainstormEvilPlansCallable().call();
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   bidiStream.send(request);
-   *   for (EvilResponse response : bidiStream) {
-   *     // Do something when a response is received.
-   *   }
-   * }
-   * }
- */ - public final BidiStreamingCallable brainstormEvilPlansCallable() { - return stub.brainstormEvilPlansCallable(); - } - - // AUTO-GENERATED DOCUMENTATION AND METHOD. - /** - * Sample code: - * - *
{@code
-   * // This snippet has been automatically generated and should be regarded as a code template only.
-   * // It will require modifications to work:
-   * // - It may require correct/in-range values for request initialization.
-   * // - It may require specifying regional endpoints when creating the service client as shown in
-   * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
-   * try (WickedClient wickedClient = WickedClient.create()) {
-   *   ApiStreamObserver responseObserver =
-   *       new ApiStreamObserver() {
-   *         {@literal @}Override
-   *         public void onNext(EvilResponse response) {
-   *           // Do something when a response is received.
-   *         }
-   *
-   *         {@literal @}Override
-   *         public void onError(Throwable t) {
-   *           // Add error-handling
-   *         }
-   *
-   *         {@literal @}Override
-   *         public void onCompleted() {
-   *           // Do something when complete.
-   *         }
-   *       };
-   *   ApiStreamObserver requestObserver =
-   *       wickedClient.persuadeEvilPlan().clientStreamingCall(responseObserver);
-   *   EvilRequest request =
-   *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
-   *   requestObserver.onNext(request);
-   * }
-   * }
- */ - public final ClientStreamingCallable persuadeEvilPlanCallable() { - return stub.persuadeEvilPlanCallable(); - } - - @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); - } -} diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedSettings.java deleted file mode 100644 index 0eb6ba54be..0000000000 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/WickedSettings.java +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1; - -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.StreamingCallSettings; -import com.google.api.gax.rpc.StubSettings; -import com.google.api.gax.rpc.TransportChannelProvider; -import com.google.api.gax.rpc.UnaryCallSettings; -import com.google.showcase.v1beta1.stub.WickedStubSettings; -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 WickedClient}. - * - *

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

    - *
  • The default service address (localhost) and default port (7469) 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 craftEvilPlan to 30 seconds: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * WickedSettings.Builder wickedSettingsBuilder = WickedSettings.newBuilder();
- * wickedSettingsBuilder
- *     .craftEvilPlanSettings()
- *     .setRetrySettings(
- *         wickedSettingsBuilder
- *             .craftEvilPlanSettings()
- *             .getRetrySettings()
- *             .toBuilder()
- *             .setTotalTimeout(Duration.ofSeconds(30))
- *             .build());
- * WickedSettings wickedSettings = wickedSettingsBuilder.build();
- * }
- */ -@BetaApi -@Generated("by gapic-generator-java") -public class WickedSettings extends ClientSettings { - - /** Returns the object with the settings used for calls to craftEvilPlan. */ - public UnaryCallSettings craftEvilPlanSettings() { - return ((WickedStubSettings) getStubSettings()).craftEvilPlanSettings(); - } - - /** Returns the object with the settings used for calls to brainstormEvilPlans. */ - public StreamingCallSettings brainstormEvilPlansSettings() { - return ((WickedStubSettings) getStubSettings()).brainstormEvilPlansSettings(); - } - - /** Returns the object with the settings used for calls to persuadeEvilPlan. */ - public StreamingCallSettings persuadeEvilPlanSettings() { - return ((WickedStubSettings) getStubSettings()).persuadeEvilPlanSettings(); - } - - public static final WickedSettings create(WickedStubSettings stub) throws IOException { - return new WickedSettings.Builder(stub.toBuilder()).build(); - } - - /** Returns a builder for the default ExecutorProvider for this service. */ - public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { - return WickedStubSettings.defaultExecutorProviderBuilder(); - } - - /** Returns the default service endpoint. */ - public static String getDefaultEndpoint() { - return WickedStubSettings.getDefaultEndpoint(); - } - - /** Returns the default service scopes. */ - public static List getDefaultServiceScopes() { - return WickedStubSettings.getDefaultServiceScopes(); - } - - /** Returns a builder for the default credentials for this service. */ - public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder() { - return WickedStubSettings.defaultCredentialsProviderBuilder(); - } - - /** Returns a builder for the default gRPC ChannelProvider for this service. */ - public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder() { - return WickedStubSettings.defaultGrpcTransportProviderBuilder(); - } - - public static TransportChannelProvider defaultTransportChannelProvider() { - return WickedStubSettings.defaultTransportChannelProvider(); - } - - @BetaApi("The surface for customizing headers is not stable yet and may change in the future.") - public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { - return WickedStubSettings.defaultApiClientHeaderProviderBuilder(); - } - - /** Returns a new gRPC 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 WickedSettings(Builder settingsBuilder) throws IOException { - super(settingsBuilder); - } - - /** Builder for WickedSettings. */ - public static class Builder extends ClientSettings.Builder { - - protected Builder() throws IOException { - this(((ClientContext) null)); - } - - protected Builder(ClientContext clientContext) { - super(WickedStubSettings.newBuilder(clientContext)); - } - - protected Builder(WickedSettings settings) { - super(settings.getStubSettings().toBuilder()); - } - - protected Builder(WickedStubSettings.Builder stubSettings) { - super(stubSettings); - } - - private static Builder createDefault() { - return new Builder(WickedStubSettings.newBuilder()); - } - - public WickedStubSettings.Builder getStubSettingsBuilder() { - return ((WickedStubSettings.Builder) getStubSettings()); - } - - /** - * 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) { - super.applyToAllUnaryMethods( - getStubSettingsBuilder().unaryMethodSettingsBuilders(), settingsUpdater); - return this; - } - - /** Returns the builder for the settings used for calls to craftEvilPlan. */ - public UnaryCallSettings.Builder craftEvilPlanSettings() { - return getStubSettingsBuilder().craftEvilPlanSettings(); - } - - /** Returns the builder for the settings used for calls to brainstormEvilPlans. */ - public StreamingCallSettings.Builder brainstormEvilPlansSettings() { - return getStubSettingsBuilder().brainstormEvilPlansSettings(); - } - - /** Returns the builder for the settings used for calls to persuadeEvilPlan. */ - public StreamingCallSettings.Builder persuadeEvilPlanSettings() { - return getStubSettingsBuilder().persuadeEvilPlanSettings(); - } - - @Override - public WickedSettings build() throws IOException { - return new WickedSettings(this); - } - } -} diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json index 0321772764..31f51f17ef 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/gapic_metadata.json @@ -205,24 +205,6 @@ } } } - }, - "Wicked": { - "clients": { - "grpc": { - "libraryClient": "WickedClient", - "rpcs": { - "BrainstormEvilPlans": { - "methods": ["brainstormEvilPlansCallable"] - }, - "CraftEvilPlan": { - "methods": ["craftEvilPlan", "craftEvilPlanCallable"] - }, - "PersuadeEvilPlan": { - "methods": ["persuadeEvilPlanCallable"] - } - } - } - } } } } \ No newline at end of file diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java index c13b194922..be1926a090 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/package-info.java @@ -155,28 +155,6 @@ * Session response = testingClient.createSession(request); * } * } - * - *

======================= WickedClient ======================= - * - *

Service Description: This service is used to show a Service with either non-enabled or - * non-eligible RPCs for HttpJson (Http 1.1). Non-Enabled: Missing the (google.api.http) annotation - * to enabled it Non-Eligible: BIDI and Client side streaming are not supported with Http 1.1 - * Service name is reference to `No REST for the Wicked` - * - *

Sample for WickedClient: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * try (WickedClient wickedClient = WickedClient.create()) {
- *   EvilRequest request =
- *       EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build();
- *   EvilResponse response = wickedClient.craftEvilPlan(request);
- * }
- * }
*/ @Generated("by gapic-generator-java") package com.google.showcase.v1beta1; diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedCallableFactory.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedCallableFactory.java deleted file mode 100644 index a98141bc97..0000000000 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedCallableFactory.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1.stub; - -import com.google.api.core.BetaApi; -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 Wicked service API. - * - *

This class is for advanced usage. - */ -@BetaApi -@Generated("by gapic-generator-java") -public class GrpcWickedCallableFactory 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/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedStub.java deleted file mode 100644 index 88cd1ff457..0000000000 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/GrpcWickedStub.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1.stub; - -import com.google.api.core.BetaApi; -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.BidiStreamingCallable; -import com.google.api.gax.rpc.ClientContext; -import com.google.api.gax.rpc.ClientStreamingCallable; -import com.google.api.gax.rpc.UnaryCallable; -import com.google.longrunning.stub.GrpcOperationsStub; -import com.google.showcase.v1beta1.EvilRequest; -import com.google.showcase.v1beta1.EvilResponse; -import io.grpc.MethodDescriptor; -import io.grpc.protobuf.ProtoUtils; -import java.io.IOException; -import java.util.concurrent.TimeUnit; -import javax.annotation.Generated; - -// AUTO-GENERATED DOCUMENTATION AND CLASS. -/** - * gRPC stub implementation for the Wicked service API. - * - *

This class is for advanced usage and reflects the underlying API directly. - */ -@BetaApi -@Generated("by gapic-generator-java") -public class GrpcWickedStub extends WickedStub { - private static final MethodDescriptor craftEvilPlanMethodDescriptor = - MethodDescriptor.newBuilder() - .setType(MethodDescriptor.MethodType.UNARY) - .setFullMethodName("google.showcase.v1beta1.Wicked/CraftEvilPlan") - .setRequestMarshaller(ProtoUtils.marshaller(EvilRequest.getDefaultInstance())) - .setResponseMarshaller(ProtoUtils.marshaller(EvilResponse.getDefaultInstance())) - .build(); - - private static final MethodDescriptor - brainstormEvilPlansMethodDescriptor = - MethodDescriptor.newBuilder() - .setType(MethodDescriptor.MethodType.BIDI_STREAMING) - .setFullMethodName("google.showcase.v1beta1.Wicked/BrainstormEvilPlans") - .setRequestMarshaller(ProtoUtils.marshaller(EvilRequest.getDefaultInstance())) - .setResponseMarshaller(ProtoUtils.marshaller(EvilResponse.getDefaultInstance())) - .build(); - - private static final MethodDescriptor - persuadeEvilPlanMethodDescriptor = - MethodDescriptor.newBuilder() - .setType(MethodDescriptor.MethodType.CLIENT_STREAMING) - .setFullMethodName("google.showcase.v1beta1.Wicked/PersuadeEvilPlan") - .setRequestMarshaller(ProtoUtils.marshaller(EvilRequest.getDefaultInstance())) - .setResponseMarshaller(ProtoUtils.marshaller(EvilResponse.getDefaultInstance())) - .build(); - - private final UnaryCallable craftEvilPlanCallable; - private final BidiStreamingCallable brainstormEvilPlansCallable; - private final ClientStreamingCallable persuadeEvilPlanCallable; - - private final BackgroundResource backgroundResources; - private final GrpcOperationsStub operationsStub; - private final GrpcStubCallableFactory callableFactory; - - public static final GrpcWickedStub create(WickedStubSettings settings) throws IOException { - return new GrpcWickedStub(settings, ClientContext.create(settings)); - } - - public static final GrpcWickedStub create(ClientContext clientContext) throws IOException { - return new GrpcWickedStub(WickedStubSettings.newBuilder().build(), clientContext); - } - - public static final GrpcWickedStub create( - ClientContext clientContext, GrpcStubCallableFactory callableFactory) throws IOException { - return new GrpcWickedStub( - WickedStubSettings.newBuilder().build(), clientContext, callableFactory); - } - - /** - * Constructs an instance of GrpcWickedStub, 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 GrpcWickedStub(WickedStubSettings settings, ClientContext clientContext) - throws IOException { - this(settings, clientContext, new GrpcWickedCallableFactory()); - } - - /** - * Constructs an instance of GrpcWickedStub, 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 GrpcWickedStub( - WickedStubSettings settings, - ClientContext clientContext, - GrpcStubCallableFactory callableFactory) - throws IOException { - this.callableFactory = callableFactory; - this.operationsStub = GrpcOperationsStub.create(clientContext, callableFactory); - - GrpcCallSettings craftEvilPlanTransportSettings = - GrpcCallSettings.newBuilder() - .setMethodDescriptor(craftEvilPlanMethodDescriptor) - .build(); - GrpcCallSettings brainstormEvilPlansTransportSettings = - GrpcCallSettings.newBuilder() - .setMethodDescriptor(brainstormEvilPlansMethodDescriptor) - .build(); - GrpcCallSettings persuadeEvilPlanTransportSettings = - GrpcCallSettings.newBuilder() - .setMethodDescriptor(persuadeEvilPlanMethodDescriptor) - .build(); - - this.craftEvilPlanCallable = - callableFactory.createUnaryCallable( - craftEvilPlanTransportSettings, settings.craftEvilPlanSettings(), clientContext); - this.brainstormEvilPlansCallable = - callableFactory.createBidiStreamingCallable( - brainstormEvilPlansTransportSettings, - settings.brainstormEvilPlansSettings(), - clientContext); - this.persuadeEvilPlanCallable = - callableFactory.createClientStreamingCallable( - persuadeEvilPlanTransportSettings, settings.persuadeEvilPlanSettings(), clientContext); - - this.backgroundResources = - new BackgroundResourceAggregation(clientContext.getBackgroundResources()); - } - - public GrpcOperationsStub getOperationsStub() { - return operationsStub; - } - - @Override - public UnaryCallable craftEvilPlanCallable() { - return craftEvilPlanCallable; - } - - @Override - public BidiStreamingCallable brainstormEvilPlansCallable() { - return brainstormEvilPlansCallable; - } - - @Override - public ClientStreamingCallable persuadeEvilPlanCallable() { - return persuadeEvilPlanCallable; - } - - @Override - public final void close() { - try { - backgroundResources.close(); - } catch (RuntimeException e) { - throw e; - } catch (Exception e) { - throw new IllegalStateException("Failed to close resource", e); - } - } - - @Override - public void shutdown() { - backgroundResources.shutdown(); - } - - @Override - public boolean isShutdown() { - return backgroundResources.isShutdown(); - } - - @Override - public boolean isTerminated() { - return backgroundResources.isTerminated(); - } - - @Override - public void shutdownNow() { - backgroundResources.shutdownNow(); - } - - @Override - public boolean awaitTermination(long duration, TimeUnit unit) throws InterruptedException { - return backgroundResources.awaitTermination(duration, unit); - } -} diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStub.java deleted file mode 100644 index feb2240a60..0000000000 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStub.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1.stub; - -import com.google.api.core.BetaApi; -import com.google.api.gax.core.BackgroundResource; -import com.google.api.gax.rpc.BidiStreamingCallable; -import com.google.api.gax.rpc.ClientStreamingCallable; -import com.google.api.gax.rpc.UnaryCallable; -import com.google.showcase.v1beta1.EvilRequest; -import com.google.showcase.v1beta1.EvilResponse; -import javax.annotation.Generated; - -// AUTO-GENERATED DOCUMENTATION AND CLASS. -/** - * Base stub class for the Wicked service API. - * - *

This class is for advanced usage and reflects the underlying API directly. - */ -@BetaApi -@Generated("by gapic-generator-java") -public abstract class WickedStub implements BackgroundResource { - - public UnaryCallable craftEvilPlanCallable() { - throw new UnsupportedOperationException("Not implemented: craftEvilPlanCallable()"); - } - - public BidiStreamingCallable brainstormEvilPlansCallable() { - throw new UnsupportedOperationException("Not implemented: brainstormEvilPlansCallable()"); - } - - public ClientStreamingCallable persuadeEvilPlanCallable() { - throw new UnsupportedOperationException("Not implemented: persuadeEvilPlanCallable()"); - } - - @Override - public abstract void close(); -} diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStubSettings.java deleted file mode 100644 index 22db29bd53..0000000000 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/WickedStubSettings.java +++ /dev/null @@ -1,301 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1.stub; - -import com.google.api.core.ApiFunction; -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.ApiClientHeaderProvider; -import com.google.api.gax.rpc.ClientContext; -import com.google.api.gax.rpc.StatusCode; -import com.google.api.gax.rpc.StreamingCallSettings; -import com.google.api.gax.rpc.StubSettings; -import com.google.api.gax.rpc.TransportChannelProvider; -import com.google.api.gax.rpc.UnaryCallSettings; -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.showcase.v1beta1.EvilRequest; -import com.google.showcase.v1beta1.EvilResponse; -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 WickedStub}. - * - *

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

    - *
  • The default service address (localhost) and default port (7469) 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 craftEvilPlan to 30 seconds: - * - *

{@code
- * // This snippet has been automatically generated and should be regarded as a code template only.
- * // It will require modifications to work:
- * // - It may require correct/in-range values for request initialization.
- * // - It may require specifying regional endpoints when creating the service client as shown in
- * // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
- * WickedStubSettings.Builder wickedSettingsBuilder = WickedStubSettings.newBuilder();
- * wickedSettingsBuilder
- *     .craftEvilPlanSettings()
- *     .setRetrySettings(
- *         wickedSettingsBuilder
- *             .craftEvilPlanSettings()
- *             .getRetrySettings()
- *             .toBuilder()
- *             .setTotalTimeout(Duration.ofSeconds(30))
- *             .build());
- * WickedStubSettings wickedSettings = wickedSettingsBuilder.build();
- * }
- */ -@BetaApi -@Generated("by gapic-generator-java") -public class WickedStubSettings extends StubSettings { - /** The default scopes of the service. */ - private static final ImmutableList DEFAULT_SERVICE_SCOPES = - ImmutableList.builder().build(); - - private final UnaryCallSettings craftEvilPlanSettings; - private final StreamingCallSettings brainstormEvilPlansSettings; - private final StreamingCallSettings persuadeEvilPlanSettings; - - /** Returns the object with the settings used for calls to craftEvilPlan. */ - public UnaryCallSettings craftEvilPlanSettings() { - return craftEvilPlanSettings; - } - - /** Returns the object with the settings used for calls to brainstormEvilPlans. */ - public StreamingCallSettings brainstormEvilPlansSettings() { - return brainstormEvilPlansSettings; - } - - /** Returns the object with the settings used for calls to persuadeEvilPlan. */ - public StreamingCallSettings persuadeEvilPlanSettings() { - return persuadeEvilPlanSettings; - } - - public WickedStub createStub() throws IOException { - if (getTransportChannelProvider() - .getTransportName() - .equals(GrpcTransportChannel.getGrpcTransportName())) { - return GrpcWickedStub.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 "localhost:7469"; - } - - /** Returns the default mTLS service endpoint. */ - public static String getDefaultMtlsEndpoint() { - return "localhost:7469"; - } - - /** 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) - .setUseJwtAccessWithScope(true); - } - - /** Returns a builder for the default gRPC 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 defaultGrpcApiClientHeaderProviderBuilder() { - return ApiClientHeaderProvider.newBuilder() - .setGeneratedLibToken("gapic", GaxProperties.getLibraryVersion(WickedStubSettings.class)) - .setTransportToken( - GaxGrpcProperties.getGrpcTokenName(), GaxGrpcProperties.getGrpcVersion()); - } - - public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder() { - return WickedStubSettings.defaultGrpcApiClientHeaderProviderBuilder(); - } - - /** Returns a new gRPC 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 WickedStubSettings(Builder settingsBuilder) throws IOException { - super(settingsBuilder); - - craftEvilPlanSettings = settingsBuilder.craftEvilPlanSettings().build(); - brainstormEvilPlansSettings = settingsBuilder.brainstormEvilPlansSettings().build(); - persuadeEvilPlanSettings = settingsBuilder.persuadeEvilPlanSettings().build(); - } - - /** Builder for WickedStubSettings. */ - public static class Builder extends StubSettings.Builder { - private final ImmutableList> unaryMethodSettingsBuilders; - private final UnaryCallSettings.Builder craftEvilPlanSettings; - private final StreamingCallSettings.Builder - brainstormEvilPlansSettings; - private final StreamingCallSettings.Builder persuadeEvilPlanSettings; - private static final ImmutableMap> - RETRYABLE_CODE_DEFINITIONS; - - static { - ImmutableMap.Builder> definitions = - ImmutableMap.builder(); - definitions.put("no_retry_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().setRpcTimeoutMultiplier(1.0).build(); - definitions.put("no_retry_params", settings); - RETRY_PARAM_DEFINITIONS = definitions.build(); - } - - protected Builder() { - this(((ClientContext) null)); - } - - protected Builder(ClientContext clientContext) { - super(clientContext); - - craftEvilPlanSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); - brainstormEvilPlansSettings = StreamingCallSettings.newBuilder(); - persuadeEvilPlanSettings = StreamingCallSettings.newBuilder(); - - unaryMethodSettingsBuilders = - ImmutableList.>of(craftEvilPlanSettings); - initDefaults(this); - } - - protected Builder(WickedStubSettings settings) { - super(settings); - - craftEvilPlanSettings = settings.craftEvilPlanSettings.toBuilder(); - brainstormEvilPlansSettings = settings.brainstormEvilPlansSettings.toBuilder(); - persuadeEvilPlanSettings = settings.persuadeEvilPlanSettings.toBuilder(); - - unaryMethodSettingsBuilders = - ImmutableList.>of(craftEvilPlanSettings); - } - - private static Builder createDefault() { - Builder builder = new Builder(((ClientContext) null)); - - builder.setTransportChannelProvider(defaultTransportChannelProvider()); - builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); - builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); - builder.setEndpoint(getDefaultEndpoint()); - builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); - builder.setSwitchToMtlsEndpointAllowed(true); - - return initDefaults(builder); - } - - private static Builder initDefaults(Builder builder) { - builder - .craftEvilPlanSettings() - .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("no_retry_codes")) - .setRetrySettings(RETRY_PARAM_DEFINITIONS.get("no_retry_params")); - - return builder; - } - - /** - * 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) { - super.applyToAllUnaryMethods(unaryMethodSettingsBuilders, settingsUpdater); - return this; - } - - public ImmutableList> unaryMethodSettingsBuilders() { - return unaryMethodSettingsBuilders; - } - - /** Returns the builder for the settings used for calls to craftEvilPlan. */ - public UnaryCallSettings.Builder craftEvilPlanSettings() { - return craftEvilPlanSettings; - } - - /** Returns the builder for the settings used for calls to brainstormEvilPlans. */ - public StreamingCallSettings.Builder brainstormEvilPlansSettings() { - return brainstormEvilPlansSettings; - } - - /** Returns the builder for the settings used for calls to persuadeEvilPlan. */ - public StreamingCallSettings.Builder persuadeEvilPlanSettings() { - return persuadeEvilPlanSettings; - } - - @Override - public WickedStubSettings build() throws IOException { - return new WickedStubSettings(this); - } - } -} diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWicked.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWicked.java deleted file mode 100644 index 94a2d21499..0000000000 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWicked.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1; - -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 MockWicked implements MockGrpcService { - private final MockWickedImpl serviceImpl; - - public MockWicked() { - serviceImpl = new MockWickedImpl(); - } - - @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/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWickedImpl.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWickedImpl.java deleted file mode 100644 index 0db01ba8a6..0000000000 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/MockWickedImpl.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1; - -import com.google.api.core.BetaApi; -import com.google.protobuf.AbstractMessage; -import com.google.showcase.v1beta1.WickedGrpc.WickedImplBase; -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 MockWickedImpl extends WickedImplBase { - private List requests; - private Queue responses; - - public MockWickedImpl() { - 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 craftEvilPlan(EvilRequest request, StreamObserver responseObserver) { - Object response = responses.poll(); - if (response instanceof EvilResponse) { - requests.add(request); - responseObserver.onNext(((EvilResponse) 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 CraftEvilPlan, expected %s or %s", - response == null ? "null" : response.getClass().getName(), - EvilResponse.class.getName(), - Exception.class.getName()))); - } - } - - @Override - public StreamObserver brainstormEvilPlans( - final StreamObserver responseObserver) { - StreamObserver requestObserver = - new StreamObserver() { - @Override - public void onNext(EvilRequest value) { - requests.add(value); - final Object response = responses.remove(); - if (response instanceof EvilResponse) { - responseObserver.onNext(((EvilResponse) response)); - } else if (response instanceof Exception) { - responseObserver.onError(((Exception) response)); - } else { - responseObserver.onError( - new IllegalArgumentException( - String.format( - "Unrecognized response type %s for method BrainstormEvilPlans, expected %s or %s", - response == null ? "null" : response.getClass().getName(), - EvilResponse.class.getName(), - Exception.class.getName()))); - } - } - - @Override - public void onError(Throwable t) { - responseObserver.onError(t); - } - - @Override - public void onCompleted() { - responseObserver.onCompleted(); - } - }; - return requestObserver; - } - - @Override - public StreamObserver persuadeEvilPlan( - final StreamObserver responseObserver) { - StreamObserver requestObserver = - new StreamObserver() { - @Override - public void onNext(EvilRequest value) { - requests.add(value); - final Object response = responses.remove(); - if (response instanceof EvilResponse) { - responseObserver.onNext(((EvilResponse) response)); - } else if (response instanceof Exception) { - responseObserver.onError(((Exception) response)); - } else { - responseObserver.onError( - new IllegalArgumentException( - String.format( - "Unrecognized response type %s for method PersuadeEvilPlan, expected %s or %s", - response == null ? "null" : response.getClass().getName(), - EvilResponse.class.getName(), - Exception.class.getName()))); - } - } - - @Override - public void onError(Throwable t) { - responseObserver.onError(t); - } - - @Override - public void onCompleted() { - responseObserver.onCompleted(); - } - }; - return requestObserver; - } -} diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/WickedClientTest.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/WickedClientTest.java deleted file mode 100644 index 518fa9b7e2..0000000000 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/WickedClientTest.java +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright 2022 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.google.showcase.v1beta1; - -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.grpc.testing.MockStreamObserver; -import com.google.api.gax.rpc.ApiClientHeaderProvider; -import com.google.api.gax.rpc.ApiStreamObserver; -import com.google.api.gax.rpc.BidiStreamingCallable; -import com.google.api.gax.rpc.ClientStreamingCallable; -import com.google.api.gax.rpc.InvalidArgumentException; -import com.google.api.gax.rpc.StatusCode; -import com.google.protobuf.AbstractMessage; -import io.grpc.StatusRuntimeException; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -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 WickedClientTest { - private static MockServiceHelper mockServiceHelper; - private static MockWicked mockWicked; - private LocalChannelProvider channelProvider; - private WickedClient client; - - @BeforeClass - public static void startStaticServer() { - mockWicked = new MockWicked(); - mockServiceHelper = - new MockServiceHelper( - UUID.randomUUID().toString(), Arrays.asList(mockWicked)); - mockServiceHelper.start(); - } - - @AfterClass - public static void stopServer() { - mockServiceHelper.stop(); - } - - @Before - public void setUp() throws IOException { - mockServiceHelper.reset(); - channelProvider = mockServiceHelper.createChannelProvider(); - WickedSettings settings = - WickedSettings.newBuilder() - .setTransportChannelProvider(channelProvider) - .setCredentialsProvider(NoCredentialsProvider.create()) - .build(); - client = WickedClient.create(settings); - } - - @After - public void tearDown() throws Exception { - client.close(); - } - - @Test - public void craftEvilPlanTest() throws Exception { - EvilResponse expectedResponse = - EvilResponse.newBuilder().setMaliciousPlan("maliciousPlan712757759").build(); - mockWicked.addResponse(expectedResponse); - - EvilRequest request = - EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); - - EvilResponse actualResponse = client.craftEvilPlan(request); - Assert.assertEquals(expectedResponse, actualResponse); - - List actualRequests = mockWicked.getRequests(); - Assert.assertEquals(1, actualRequests.size()); - EvilRequest actualRequest = ((EvilRequest) actualRequests.get(0)); - - Assert.assertEquals(request.getMaliciousIdea(), actualRequest.getMaliciousIdea()); - Assert.assertTrue( - channelProvider.isHeaderSent( - ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), - GaxGrpcProperties.getDefaultApiClientHeaderPattern())); - } - - @Test - public void craftEvilPlanExceptionTest() throws Exception { - StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); - mockWicked.addException(exception); - - try { - EvilRequest request = - EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); - client.craftEvilPlan(request); - Assert.fail("No exception raised"); - } catch (InvalidArgumentException e) { - // Expected exception. - } - } - - @Test - public void brainstormEvilPlansTest() throws Exception { - EvilResponse expectedResponse = - EvilResponse.newBuilder().setMaliciousPlan("maliciousPlan712757759").build(); - mockWicked.addResponse(expectedResponse); - EvilRequest request = - EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); - - MockStreamObserver responseObserver = new MockStreamObserver<>(); - - BidiStreamingCallable callable = - client.brainstormEvilPlansCallable(); - ApiStreamObserver requestObserver = callable.bidiStreamingCall(responseObserver); - - requestObserver.onNext(request); - requestObserver.onCompleted(); - - List actualResponses = responseObserver.future().get(); - Assert.assertEquals(1, actualResponses.size()); - Assert.assertEquals(expectedResponse, actualResponses.get(0)); - } - - @Test - public void brainstormEvilPlansExceptionTest() throws Exception { - StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); - mockWicked.addException(exception); - EvilRequest request = - EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); - - MockStreamObserver responseObserver = new MockStreamObserver<>(); - - BidiStreamingCallable callable = - client.brainstormEvilPlansCallable(); - ApiStreamObserver requestObserver = callable.bidiStreamingCall(responseObserver); - - requestObserver.onNext(request); - - try { - List actualResponses = responseObserver.future().get(); - Assert.fail("No exception thrown"); - } catch (ExecutionException e) { - Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); - InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); - Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); - } - } - - @Test - public void persuadeEvilPlanTest() throws Exception { - EvilResponse expectedResponse = - EvilResponse.newBuilder().setMaliciousPlan("maliciousPlan712757759").build(); - mockWicked.addResponse(expectedResponse); - EvilRequest request = - EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); - - MockStreamObserver responseObserver = new MockStreamObserver<>(); - - ClientStreamingCallable callable = client.persuadeEvilPlanCallable(); - ApiStreamObserver requestObserver = callable.clientStreamingCall(responseObserver); - - requestObserver.onNext(request); - requestObserver.onCompleted(); - - List actualResponses = responseObserver.future().get(); - Assert.assertEquals(1, actualResponses.size()); - Assert.assertEquals(expectedResponse, actualResponses.get(0)); - } - - @Test - public void persuadeEvilPlanExceptionTest() throws Exception { - StatusRuntimeException exception = new StatusRuntimeException(io.grpc.Status.INVALID_ARGUMENT); - mockWicked.addException(exception); - EvilRequest request = - EvilRequest.newBuilder().setMaliciousIdea("maliciousIdea712541645").build(); - - MockStreamObserver responseObserver = new MockStreamObserver<>(); - - ClientStreamingCallable callable = client.persuadeEvilPlanCallable(); - ApiStreamObserver requestObserver = callable.clientStreamingCall(responseObserver); - - requestObserver.onNext(request); - - try { - List actualResponses = responseObserver.future().get(); - Assert.fail("No exception thrown"); - } catch (ExecutionException e) { - Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); - InvalidArgumentException apiException = ((InvalidArgumentException) e.getCause()); - Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); - } - } -} diff --git a/showcase/grpc-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedGrpc.java b/showcase/grpc-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedGrpc.java deleted file mode 100644 index 79b2a6f5cf..0000000000 --- a/showcase/grpc-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedGrpc.java +++ /dev/null @@ -1,392 +0,0 @@ -package com.google.showcase.v1beta1; - -import static io.grpc.MethodDescriptor.generateFullMethodName; - -/** - */ -@javax.annotation.Generated( - value = "by gRPC proto compiler", - comments = "Source: showcase/gapic-showcase-extended/proto/wicked.proto") -@io.grpc.stub.annotations.GrpcGenerated -public final class WickedGrpc { - - private WickedGrpc() {} - - public static final String SERVICE_NAME = "google.showcase.v1beta1.Wicked"; - - // Static method descriptors that strictly reflect the proto. - private static volatile io.grpc.MethodDescriptor getCraftEvilPlanMethod; - - @io.grpc.stub.annotations.RpcMethod( - fullMethodName = SERVICE_NAME + '/' + "CraftEvilPlan", - requestType = com.google.showcase.v1beta1.EvilRequest.class, - responseType = com.google.showcase.v1beta1.EvilResponse.class, - methodType = io.grpc.MethodDescriptor.MethodType.UNARY) - public static io.grpc.MethodDescriptor getCraftEvilPlanMethod() { - io.grpc.MethodDescriptor getCraftEvilPlanMethod; - if ((getCraftEvilPlanMethod = WickedGrpc.getCraftEvilPlanMethod) == null) { - synchronized (WickedGrpc.class) { - if ((getCraftEvilPlanMethod = WickedGrpc.getCraftEvilPlanMethod) == null) { - WickedGrpc.getCraftEvilPlanMethod = getCraftEvilPlanMethod = - io.grpc.MethodDescriptor.newBuilder() - .setType(io.grpc.MethodDescriptor.MethodType.UNARY) - .setFullMethodName(generateFullMethodName(SERVICE_NAME, "CraftEvilPlan")) - .setSampledToLocalTracing(true) - .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( - com.google.showcase.v1beta1.EvilRequest.getDefaultInstance())) - .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( - com.google.showcase.v1beta1.EvilResponse.getDefaultInstance())) - .setSchemaDescriptor(new WickedMethodDescriptorSupplier("CraftEvilPlan")) - .build(); - } - } - } - return getCraftEvilPlanMethod; - } - - private static volatile io.grpc.MethodDescriptor getBrainstormEvilPlansMethod; - - @io.grpc.stub.annotations.RpcMethod( - fullMethodName = SERVICE_NAME + '/' + "BrainstormEvilPlans", - requestType = com.google.showcase.v1beta1.EvilRequest.class, - responseType = com.google.showcase.v1beta1.EvilResponse.class, - methodType = io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING) - public static io.grpc.MethodDescriptor getBrainstormEvilPlansMethod() { - io.grpc.MethodDescriptor getBrainstormEvilPlansMethod; - if ((getBrainstormEvilPlansMethod = WickedGrpc.getBrainstormEvilPlansMethod) == null) { - synchronized (WickedGrpc.class) { - if ((getBrainstormEvilPlansMethod = WickedGrpc.getBrainstormEvilPlansMethod) == null) { - WickedGrpc.getBrainstormEvilPlansMethod = getBrainstormEvilPlansMethod = - io.grpc.MethodDescriptor.newBuilder() - .setType(io.grpc.MethodDescriptor.MethodType.BIDI_STREAMING) - .setFullMethodName(generateFullMethodName(SERVICE_NAME, "BrainstormEvilPlans")) - .setSampledToLocalTracing(true) - .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( - com.google.showcase.v1beta1.EvilRequest.getDefaultInstance())) - .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( - com.google.showcase.v1beta1.EvilResponse.getDefaultInstance())) - .setSchemaDescriptor(new WickedMethodDescriptorSupplier("BrainstormEvilPlans")) - .build(); - } - } - } - return getBrainstormEvilPlansMethod; - } - - private static volatile io.grpc.MethodDescriptor getPersuadeEvilPlanMethod; - - @io.grpc.stub.annotations.RpcMethod( - fullMethodName = SERVICE_NAME + '/' + "PersuadeEvilPlan", - requestType = com.google.showcase.v1beta1.EvilRequest.class, - responseType = com.google.showcase.v1beta1.EvilResponse.class, - methodType = io.grpc.MethodDescriptor.MethodType.CLIENT_STREAMING) - public static io.grpc.MethodDescriptor getPersuadeEvilPlanMethod() { - io.grpc.MethodDescriptor getPersuadeEvilPlanMethod; - if ((getPersuadeEvilPlanMethod = WickedGrpc.getPersuadeEvilPlanMethod) == null) { - synchronized (WickedGrpc.class) { - if ((getPersuadeEvilPlanMethod = WickedGrpc.getPersuadeEvilPlanMethod) == null) { - WickedGrpc.getPersuadeEvilPlanMethod = getPersuadeEvilPlanMethod = - io.grpc.MethodDescriptor.newBuilder() - .setType(io.grpc.MethodDescriptor.MethodType.CLIENT_STREAMING) - .setFullMethodName(generateFullMethodName(SERVICE_NAME, "PersuadeEvilPlan")) - .setSampledToLocalTracing(true) - .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( - com.google.showcase.v1beta1.EvilRequest.getDefaultInstance())) - .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( - com.google.showcase.v1beta1.EvilResponse.getDefaultInstance())) - .setSchemaDescriptor(new WickedMethodDescriptorSupplier("PersuadeEvilPlan")) - .build(); - } - } - } - return getPersuadeEvilPlanMethod; - } - - /** - * Creates a new async stub that supports all call types for the service - */ - public static WickedStub newStub(io.grpc.Channel channel) { - io.grpc.stub.AbstractStub.StubFactory factory = - new io.grpc.stub.AbstractStub.StubFactory() { - @java.lang.Override - public WickedStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { - return new WickedStub(channel, callOptions); - } - }; - return WickedStub.newStub(factory, channel); - } - - /** - * Creates a new blocking-style stub that supports unary and streaming output calls on the service - */ - public static WickedBlockingStub newBlockingStub( - io.grpc.Channel channel) { - io.grpc.stub.AbstractStub.StubFactory factory = - new io.grpc.stub.AbstractStub.StubFactory() { - @java.lang.Override - public WickedBlockingStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { - return new WickedBlockingStub(channel, callOptions); - } - }; - return WickedBlockingStub.newStub(factory, channel); - } - - /** - * Creates a new ListenableFuture-style stub that supports unary calls on the service - */ - public static WickedFutureStub newFutureStub( - io.grpc.Channel channel) { - io.grpc.stub.AbstractStub.StubFactory factory = - new io.grpc.stub.AbstractStub.StubFactory() { - @java.lang.Override - public WickedFutureStub newStub(io.grpc.Channel channel, io.grpc.CallOptions callOptions) { - return new WickedFutureStub(channel, callOptions); - } - }; - return WickedFutureStub.newStub(factory, channel); - } - - /** - */ - public static abstract class WickedImplBase implements io.grpc.BindableService { - - /** - */ - public void craftEvilPlan(com.google.showcase.v1beta1.EvilRequest request, - io.grpc.stub.StreamObserver responseObserver) { - io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getCraftEvilPlanMethod(), responseObserver); - } - - /** - */ - public io.grpc.stub.StreamObserver brainstormEvilPlans( - io.grpc.stub.StreamObserver responseObserver) { - return io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall(getBrainstormEvilPlansMethod(), responseObserver); - } - - /** - */ - public io.grpc.stub.StreamObserver persuadeEvilPlan( - io.grpc.stub.StreamObserver responseObserver) { - return io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall(getPersuadeEvilPlanMethod(), responseObserver); - } - - @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() { - return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()) - .addMethod( - getCraftEvilPlanMethod(), - io.grpc.stub.ServerCalls.asyncUnaryCall( - new MethodHandlers< - com.google.showcase.v1beta1.EvilRequest, - com.google.showcase.v1beta1.EvilResponse>( - this, METHODID_CRAFT_EVIL_PLAN))) - .addMethod( - getBrainstormEvilPlansMethod(), - io.grpc.stub.ServerCalls.asyncBidiStreamingCall( - new MethodHandlers< - com.google.showcase.v1beta1.EvilRequest, - com.google.showcase.v1beta1.EvilResponse>( - this, METHODID_BRAINSTORM_EVIL_PLANS))) - .addMethod( - getPersuadeEvilPlanMethod(), - io.grpc.stub.ServerCalls.asyncClientStreamingCall( - new MethodHandlers< - com.google.showcase.v1beta1.EvilRequest, - com.google.showcase.v1beta1.EvilResponse>( - this, METHODID_PERSUADE_EVIL_PLAN))) - .build(); - } - } - - /** - */ - public static final class WickedStub extends io.grpc.stub.AbstractAsyncStub { - private WickedStub( - io.grpc.Channel channel, io.grpc.CallOptions callOptions) { - super(channel, callOptions); - } - - @java.lang.Override - protected WickedStub build( - io.grpc.Channel channel, io.grpc.CallOptions callOptions) { - return new WickedStub(channel, callOptions); - } - - /** - */ - public void craftEvilPlan(com.google.showcase.v1beta1.EvilRequest request, - io.grpc.stub.StreamObserver responseObserver) { - io.grpc.stub.ClientCalls.asyncUnaryCall( - getChannel().newCall(getCraftEvilPlanMethod(), getCallOptions()), request, responseObserver); - } - - /** - */ - public io.grpc.stub.StreamObserver brainstormEvilPlans( - io.grpc.stub.StreamObserver responseObserver) { - return io.grpc.stub.ClientCalls.asyncBidiStreamingCall( - getChannel().newCall(getBrainstormEvilPlansMethod(), getCallOptions()), responseObserver); - } - - /** - */ - public io.grpc.stub.StreamObserver persuadeEvilPlan( - io.grpc.stub.StreamObserver responseObserver) { - return io.grpc.stub.ClientCalls.asyncClientStreamingCall( - getChannel().newCall(getPersuadeEvilPlanMethod(), getCallOptions()), responseObserver); - } - } - - /** - */ - public static final class WickedBlockingStub extends io.grpc.stub.AbstractBlockingStub { - private WickedBlockingStub( - io.grpc.Channel channel, io.grpc.CallOptions callOptions) { - super(channel, callOptions); - } - - @java.lang.Override - protected WickedBlockingStub build( - io.grpc.Channel channel, io.grpc.CallOptions callOptions) { - return new WickedBlockingStub(channel, callOptions); - } - - /** - */ - public com.google.showcase.v1beta1.EvilResponse craftEvilPlan(com.google.showcase.v1beta1.EvilRequest request) { - return io.grpc.stub.ClientCalls.blockingUnaryCall( - getChannel(), getCraftEvilPlanMethod(), getCallOptions(), request); - } - } - - /** - */ - public static final class WickedFutureStub extends io.grpc.stub.AbstractFutureStub { - private WickedFutureStub( - io.grpc.Channel channel, io.grpc.CallOptions callOptions) { - super(channel, callOptions); - } - - @java.lang.Override - protected WickedFutureStub build( - io.grpc.Channel channel, io.grpc.CallOptions callOptions) { - return new WickedFutureStub(channel, callOptions); - } - - /** - */ - public com.google.common.util.concurrent.ListenableFuture craftEvilPlan( - com.google.showcase.v1beta1.EvilRequest request) { - return io.grpc.stub.ClientCalls.futureUnaryCall( - getChannel().newCall(getCraftEvilPlanMethod(), getCallOptions()), request); - } - } - - private static final int METHODID_CRAFT_EVIL_PLAN = 0; - private static final int METHODID_BRAINSTORM_EVIL_PLANS = 1; - private static final int METHODID_PERSUADE_EVIL_PLAN = 2; - - private static final class MethodHandlers implements - io.grpc.stub.ServerCalls.UnaryMethod, - io.grpc.stub.ServerCalls.ServerStreamingMethod, - io.grpc.stub.ServerCalls.ClientStreamingMethod, - io.grpc.stub.ServerCalls.BidiStreamingMethod { - private final WickedImplBase serviceImpl; - private final int methodId; - - MethodHandlers(WickedImplBase serviceImpl, int methodId) { - this.serviceImpl = serviceImpl; - this.methodId = methodId; - } - - @java.lang.Override - @java.lang.SuppressWarnings("unchecked") - public void invoke(Req request, io.grpc.stub.StreamObserver responseObserver) { - switch (methodId) { - case METHODID_CRAFT_EVIL_PLAN: - serviceImpl.craftEvilPlan((com.google.showcase.v1beta1.EvilRequest) request, - (io.grpc.stub.StreamObserver) responseObserver); - break; - default: - throw new AssertionError(); - } - } - - @java.lang.Override - @java.lang.SuppressWarnings("unchecked") - public io.grpc.stub.StreamObserver invoke( - io.grpc.stub.StreamObserver responseObserver) { - switch (methodId) { - case METHODID_BRAINSTORM_EVIL_PLANS: - return (io.grpc.stub.StreamObserver) serviceImpl.brainstormEvilPlans( - (io.grpc.stub.StreamObserver) responseObserver); - case METHODID_PERSUADE_EVIL_PLAN: - return (io.grpc.stub.StreamObserver) serviceImpl.persuadeEvilPlan( - (io.grpc.stub.StreamObserver) responseObserver); - default: - throw new AssertionError(); - } - } - } - - private static abstract class WickedBaseDescriptorSupplier - implements io.grpc.protobuf.ProtoFileDescriptorSupplier, io.grpc.protobuf.ProtoServiceDescriptorSupplier { - WickedBaseDescriptorSupplier() {} - - @java.lang.Override - public com.google.protobuf.Descriptors.FileDescriptor getFileDescriptor() { - return com.google.showcase.v1beta1.WickedOuterClass.getDescriptor(); - } - - @java.lang.Override - public com.google.protobuf.Descriptors.ServiceDescriptor getServiceDescriptor() { - return getFileDescriptor().findServiceByName("Wicked"); - } - } - - private static final class WickedFileDescriptorSupplier - extends WickedBaseDescriptorSupplier { - WickedFileDescriptorSupplier() {} - } - - private static final class WickedMethodDescriptorSupplier - extends WickedBaseDescriptorSupplier - implements io.grpc.protobuf.ProtoMethodDescriptorSupplier { - private final String methodName; - - WickedMethodDescriptorSupplier(String methodName) { - this.methodName = methodName; - } - - @java.lang.Override - public com.google.protobuf.Descriptors.MethodDescriptor getMethodDescriptor() { - return getServiceDescriptor().findMethodByName(methodName); - } - } - - private static volatile io.grpc.ServiceDescriptor serviceDescriptor; - - public static io.grpc.ServiceDescriptor getServiceDescriptor() { - io.grpc.ServiceDescriptor result = serviceDescriptor; - if (result == null) { - synchronized (WickedGrpc.class) { - result = serviceDescriptor; - if (result == null) { - serviceDescriptor = result = io.grpc.ServiceDescriptor.newBuilder(SERVICE_NAME) - .setSchemaDescriptor(new WickedFileDescriptorSupplier()) - .addMethod(getCraftEvilPlanMethod()) - .addMethod(getBrainstormEvilPlansMethod()) - .addMethod(getPersuadeEvilPlanMethod()) - .build(); - } - } - } - return result; - } -} diff --git a/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequest.java b/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequest.java deleted file mode 100644 index 8d4aba952a..0000000000 --- a/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequest.java +++ /dev/null @@ -1,559 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: showcase/gapic-showcase-extended/proto/wicked.proto - -package com.google.showcase.v1beta1; - -/** - * Protobuf type {@code google.showcase.v1beta1.EvilRequest} - */ -public final class EvilRequest extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:google.showcase.v1beta1.EvilRequest) - EvilRequestOrBuilder { -private static final long serialVersionUID = 0L; - // Use EvilRequest.newBuilder() to construct. - private EvilRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private EvilRequest() { - maliciousIdea_ = ""; - } - - @java.lang.Override - @SuppressWarnings({"unused"}) - protected java.lang.Object newInstance( - UnusedPrivateParameter unused) { - return new EvilRequest(); - } - - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return this.unknownFields; - } - private EvilRequest( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - case 10: { - java.lang.String s = input.readStringRequireUtf8(); - - maliciousIdea_ = s; - break; - } - default: { - if (!parseUnknownField( - input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (com.google.protobuf.UninitializedMessageException e) { - throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilRequest_descriptor; - } - - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilRequest_fieldAccessorTable - .ensureFieldAccessorsInitialized( - com.google.showcase.v1beta1.EvilRequest.class, com.google.showcase.v1beta1.EvilRequest.Builder.class); - } - - public static final int MALICIOUS_IDEA_FIELD_NUMBER = 1; - private volatile java.lang.Object maliciousIdea_; - /** - * string malicious_idea = 1; - * @return The maliciousIdea. - */ - @java.lang.Override - public java.lang.String getMaliciousIdea() { - java.lang.Object ref = maliciousIdea_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - maliciousIdea_ = s; - return s; - } - } - /** - * string malicious_idea = 1; - * @return The bytes for maliciousIdea. - */ - @java.lang.Override - public com.google.protobuf.ByteString - getMaliciousIdeaBytes() { - java.lang.Object ref = maliciousIdea_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - maliciousIdea_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - private byte memoizedIsInitialized = -1; - @java.lang.Override - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - @java.lang.Override - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(maliciousIdea_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, maliciousIdea_); - } - unknownFields.writeTo(output); - } - - @java.lang.Override - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(maliciousIdea_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, maliciousIdea_); - } - size += unknownFields.getSerializedSize(); - memoizedSize = size; - return size; - } - - @java.lang.Override - public boolean equals(final java.lang.Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof com.google.showcase.v1beta1.EvilRequest)) { - return super.equals(obj); - } - com.google.showcase.v1beta1.EvilRequest other = (com.google.showcase.v1beta1.EvilRequest) obj; - - if (!getMaliciousIdea() - .equals(other.getMaliciousIdea())) return false; - if (!unknownFields.equals(other.unknownFields)) return false; - return true; - } - - @java.lang.Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptor().hashCode(); - hash = (37 * hash) + MALICIOUS_IDEA_FIELD_NUMBER; - hash = (53 * hash) + getMaliciousIdea().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static com.google.showcase.v1beta1.EvilRequest parseFrom( - java.nio.ByteBuffer data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static com.google.showcase.v1beta1.EvilRequest parseFrom( - java.nio.ByteBuffer data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static com.google.showcase.v1beta1.EvilRequest parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static com.google.showcase.v1beta1.EvilRequest parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static com.google.showcase.v1beta1.EvilRequest parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static com.google.showcase.v1beta1.EvilRequest parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static com.google.showcase.v1beta1.EvilRequest parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static com.google.showcase.v1beta1.EvilRequest parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static com.google.showcase.v1beta1.EvilRequest parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static com.google.showcase.v1beta1.EvilRequest parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static com.google.showcase.v1beta1.EvilRequest parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static com.google.showcase.v1beta1.EvilRequest parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - @java.lang.Override - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(com.google.showcase.v1beta1.EvilRequest prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - @java.lang.Override - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code google.showcase.v1beta1.EvilRequest} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:google.showcase.v1beta1.EvilRequest) - com.google.showcase.v1beta1.EvilRequestOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilRequest_descriptor; - } - - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilRequest_fieldAccessorTable - .ensureFieldAccessorsInitialized( - com.google.showcase.v1beta1.EvilRequest.class, com.google.showcase.v1beta1.EvilRequest.Builder.class); - } - - // Construct using com.google.showcase.v1beta1.EvilRequest.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - @java.lang.Override - public Builder clear() { - super.clear(); - maliciousIdea_ = ""; - - return this; - } - - @java.lang.Override - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilRequest_descriptor; - } - - @java.lang.Override - public com.google.showcase.v1beta1.EvilRequest getDefaultInstanceForType() { - return com.google.showcase.v1beta1.EvilRequest.getDefaultInstance(); - } - - @java.lang.Override - public com.google.showcase.v1beta1.EvilRequest build() { - com.google.showcase.v1beta1.EvilRequest result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - @java.lang.Override - public com.google.showcase.v1beta1.EvilRequest buildPartial() { - com.google.showcase.v1beta1.EvilRequest result = new com.google.showcase.v1beta1.EvilRequest(this); - result.maliciousIdea_ = maliciousIdea_; - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - @java.lang.Override - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.setField(field, value); - } - @java.lang.Override - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - @java.lang.Override - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - @java.lang.Override - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - @java.lang.Override - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.addRepeatedField(field, value); - } - @java.lang.Override - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.showcase.v1beta1.EvilRequest) { - return mergeFrom((com.google.showcase.v1beta1.EvilRequest)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(com.google.showcase.v1beta1.EvilRequest other) { - if (other == com.google.showcase.v1beta1.EvilRequest.getDefaultInstance()) return this; - if (!other.getMaliciousIdea().isEmpty()) { - maliciousIdea_ = other.maliciousIdea_; - onChanged(); - } - this.mergeUnknownFields(other.unknownFields); - onChanged(); - return this; - } - - @java.lang.Override - public final boolean isInitialized() { - return true; - } - - @java.lang.Override - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.showcase.v1beta1.EvilRequest parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (com.google.showcase.v1beta1.EvilRequest) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private java.lang.Object maliciousIdea_ = ""; - /** - * string malicious_idea = 1; - * @return The maliciousIdea. - */ - public java.lang.String getMaliciousIdea() { - java.lang.Object ref = maliciousIdea_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - maliciousIdea_ = s; - return s; - } else { - return (java.lang.String) ref; - } - } - /** - * string malicious_idea = 1; - * @return The bytes for maliciousIdea. - */ - public com.google.protobuf.ByteString - getMaliciousIdeaBytes() { - java.lang.Object ref = maliciousIdea_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - maliciousIdea_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * string malicious_idea = 1; - * @param value The maliciousIdea to set. - * @return This builder for chaining. - */ - public Builder setMaliciousIdea( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - - maliciousIdea_ = value; - onChanged(); - return this; - } - /** - * string malicious_idea = 1; - * @return This builder for chaining. - */ - public Builder clearMaliciousIdea() { - - maliciousIdea_ = getDefaultInstance().getMaliciousIdea(); - onChanged(); - return this; - } - /** - * string malicious_idea = 1; - * @param value The bytes for maliciousIdea to set. - * @return This builder for chaining. - */ - public Builder setMaliciousIdeaBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - maliciousIdea_ = value; - onChanged(); - return this; - } - @java.lang.Override - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFields(unknownFields); - } - - @java.lang.Override - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.mergeUnknownFields(unknownFields); - } - - - // @@protoc_insertion_point(builder_scope:google.showcase.v1beta1.EvilRequest) - } - - // @@protoc_insertion_point(class_scope:google.showcase.v1beta1.EvilRequest) - private static final com.google.showcase.v1beta1.EvilRequest DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new com.google.showcase.v1beta1.EvilRequest(); - } - - public static com.google.showcase.v1beta1.EvilRequest getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - @java.lang.Override - public EvilRequest parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new EvilRequest(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @java.lang.Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - @java.lang.Override - public com.google.showcase.v1beta1.EvilRequest getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - -} - diff --git a/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequestOrBuilder.java b/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequestOrBuilder.java deleted file mode 100644 index 3b9d11f981..0000000000 --- a/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilRequestOrBuilder.java +++ /dev/null @@ -1,21 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: showcase/gapic-showcase-extended/proto/wicked.proto - -package com.google.showcase.v1beta1; - -public interface EvilRequestOrBuilder extends - // @@protoc_insertion_point(interface_extends:google.showcase.v1beta1.EvilRequest) - com.google.protobuf.MessageOrBuilder { - - /** - * string malicious_idea = 1; - * @return The maliciousIdea. - */ - java.lang.String getMaliciousIdea(); - /** - * string malicious_idea = 1; - * @return The bytes for maliciousIdea. - */ - com.google.protobuf.ByteString - getMaliciousIdeaBytes(); -} diff --git a/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponse.java b/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponse.java deleted file mode 100644 index c10dbf10d2..0000000000 --- a/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponse.java +++ /dev/null @@ -1,559 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: showcase/gapic-showcase-extended/proto/wicked.proto - -package com.google.showcase.v1beta1; - -/** - * Protobuf type {@code google.showcase.v1beta1.EvilResponse} - */ -public final class EvilResponse extends - com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:google.showcase.v1beta1.EvilResponse) - EvilResponseOrBuilder { -private static final long serialVersionUID = 0L; - // Use EvilResponse.newBuilder() to construct. - private EvilResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { - super(builder); - } - private EvilResponse() { - maliciousPlan_ = ""; - } - - @java.lang.Override - @SuppressWarnings({"unused"}) - protected java.lang.Object newInstance( - UnusedPrivateParameter unused) { - return new EvilResponse(); - } - - @java.lang.Override - public final com.google.protobuf.UnknownFieldSet - getUnknownFields() { - return this.unknownFields; - } - private EvilResponse( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - this(); - if (extensionRegistry == null) { - throw new java.lang.NullPointerException(); - } - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder(); - try { - boolean done = false; - while (!done) { - int tag = input.readTag(); - switch (tag) { - case 0: - done = true; - break; - case 10: { - java.lang.String s = input.readStringRequireUtf8(); - - maliciousPlan_ = s; - break; - } - default: { - if (!parseUnknownField( - input, unknownFields, extensionRegistry, tag)) { - done = true; - } - break; - } - } - } - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - throw e.setUnfinishedMessage(this); - } catch (com.google.protobuf.UninitializedMessageException e) { - throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this); - } catch (java.io.IOException e) { - throw new com.google.protobuf.InvalidProtocolBufferException( - e).setUnfinishedMessage(this); - } finally { - this.unknownFields = unknownFields.build(); - makeExtensionsImmutable(); - } - } - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilResponse_descriptor; - } - - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilResponse_fieldAccessorTable - .ensureFieldAccessorsInitialized( - com.google.showcase.v1beta1.EvilResponse.class, com.google.showcase.v1beta1.EvilResponse.Builder.class); - } - - public static final int MALICIOUS_PLAN_FIELD_NUMBER = 1; - private volatile java.lang.Object maliciousPlan_; - /** - * string malicious_plan = 1; - * @return The maliciousPlan. - */ - @java.lang.Override - public java.lang.String getMaliciousPlan() { - java.lang.Object ref = maliciousPlan_; - if (ref instanceof java.lang.String) { - return (java.lang.String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - maliciousPlan_ = s; - return s; - } - } - /** - * string malicious_plan = 1; - * @return The bytes for maliciousPlan. - */ - @java.lang.Override - public com.google.protobuf.ByteString - getMaliciousPlanBytes() { - java.lang.Object ref = maliciousPlan_; - if (ref instanceof java.lang.String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - maliciousPlan_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - private byte memoizedIsInitialized = -1; - @java.lang.Override - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - memoizedIsInitialized = 1; - return true; - } - - @java.lang.Override - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(maliciousPlan_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, maliciousPlan_); - } - unknownFields.writeTo(output); - } - - @java.lang.Override - public int getSerializedSize() { - int size = memoizedSize; - if (size != -1) return size; - - size = 0; - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(maliciousPlan_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, maliciousPlan_); - } - size += unknownFields.getSerializedSize(); - memoizedSize = size; - return size; - } - - @java.lang.Override - public boolean equals(final java.lang.Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof com.google.showcase.v1beta1.EvilResponse)) { - return super.equals(obj); - } - com.google.showcase.v1beta1.EvilResponse other = (com.google.showcase.v1beta1.EvilResponse) obj; - - if (!getMaliciousPlan() - .equals(other.getMaliciousPlan())) return false; - if (!unknownFields.equals(other.unknownFields)) return false; - return true; - } - - @java.lang.Override - public int hashCode() { - if (memoizedHashCode != 0) { - return memoizedHashCode; - } - int hash = 41; - hash = (19 * hash) + getDescriptor().hashCode(); - hash = (37 * hash) + MALICIOUS_PLAN_FIELD_NUMBER; - hash = (53 * hash) + getMaliciousPlan().hashCode(); - hash = (29 * hash) + unknownFields.hashCode(); - memoizedHashCode = hash; - return hash; - } - - public static com.google.showcase.v1beta1.EvilResponse parseFrom( - java.nio.ByteBuffer data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static com.google.showcase.v1beta1.EvilResponse parseFrom( - java.nio.ByteBuffer data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static com.google.showcase.v1beta1.EvilResponse parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static com.google.showcase.v1beta1.EvilResponse parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static com.google.showcase.v1beta1.EvilResponse parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static com.google.showcase.v1beta1.EvilResponse parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data, extensionRegistry); - } - public static com.google.showcase.v1beta1.EvilResponse parseFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static com.google.showcase.v1beta1.EvilResponse parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - public static com.google.showcase.v1beta1.EvilResponse parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input); - } - public static com.google.showcase.v1beta1.EvilResponse parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseDelimitedWithIOException(PARSER, input, extensionRegistry); - } - public static com.google.showcase.v1beta1.EvilResponse parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input); - } - public static com.google.showcase.v1beta1.EvilResponse parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return com.google.protobuf.GeneratedMessageV3 - .parseWithIOException(PARSER, input, extensionRegistry); - } - - @java.lang.Override - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder() { - return DEFAULT_INSTANCE.toBuilder(); - } - public static Builder newBuilder(com.google.showcase.v1beta1.EvilResponse prototype) { - return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); - } - @java.lang.Override - public Builder toBuilder() { - return this == DEFAULT_INSTANCE - ? new Builder() : new Builder().mergeFrom(this); - } - - @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - /** - * Protobuf type {@code google.showcase.v1beta1.EvilResponse} - */ - public static final class Builder extends - com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:google.showcase.v1beta1.EvilResponse) - com.google.showcase.v1beta1.EvilResponseOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilResponse_descriptor; - } - - @java.lang.Override - protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilResponse_fieldAccessorTable - .ensureFieldAccessorsInitialized( - com.google.showcase.v1beta1.EvilResponse.class, com.google.showcase.v1beta1.EvilResponse.Builder.class); - } - - // Construct using com.google.showcase.v1beta1.EvilResponse.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder( - com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessageV3 - .alwaysUseFieldBuilders) { - } - } - @java.lang.Override - public Builder clear() { - super.clear(); - maliciousPlan_ = ""; - - return this; - } - - @java.lang.Override - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return com.google.showcase.v1beta1.WickedOuterClass.internal_static_google_showcase_v1beta1_EvilResponse_descriptor; - } - - @java.lang.Override - public com.google.showcase.v1beta1.EvilResponse getDefaultInstanceForType() { - return com.google.showcase.v1beta1.EvilResponse.getDefaultInstance(); - } - - @java.lang.Override - public com.google.showcase.v1beta1.EvilResponse build() { - com.google.showcase.v1beta1.EvilResponse result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - @java.lang.Override - public com.google.showcase.v1beta1.EvilResponse buildPartial() { - com.google.showcase.v1beta1.EvilResponse result = new com.google.showcase.v1beta1.EvilResponse(this); - result.maliciousPlan_ = maliciousPlan_; - onBuilt(); - return result; - } - - @java.lang.Override - public Builder clone() { - return super.clone(); - } - @java.lang.Override - public Builder setField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.setField(field, value); - } - @java.lang.Override - public Builder clearField( - com.google.protobuf.Descriptors.FieldDescriptor field) { - return super.clearField(field); - } - @java.lang.Override - public Builder clearOneof( - com.google.protobuf.Descriptors.OneofDescriptor oneof) { - return super.clearOneof(oneof); - } - @java.lang.Override - public Builder setRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - int index, java.lang.Object value) { - return super.setRepeatedField(field, index, value); - } - @java.lang.Override - public Builder addRepeatedField( - com.google.protobuf.Descriptors.FieldDescriptor field, - java.lang.Object value) { - return super.addRepeatedField(field, value); - } - @java.lang.Override - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.google.showcase.v1beta1.EvilResponse) { - return mergeFrom((com.google.showcase.v1beta1.EvilResponse)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(com.google.showcase.v1beta1.EvilResponse other) { - if (other == com.google.showcase.v1beta1.EvilResponse.getDefaultInstance()) return this; - if (!other.getMaliciousPlan().isEmpty()) { - maliciousPlan_ = other.maliciousPlan_; - onChanged(); - } - this.mergeUnknownFields(other.unknownFields); - onChanged(); - return this; - } - - @java.lang.Override - public final boolean isInitialized() { - return true; - } - - @java.lang.Override - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.showcase.v1beta1.EvilResponse parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (com.google.showcase.v1beta1.EvilResponse) e.getUnfinishedMessage(); - throw e.unwrapIOException(); - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - - private java.lang.Object maliciousPlan_ = ""; - /** - * string malicious_plan = 1; - * @return The maliciousPlan. - */ - public java.lang.String getMaliciousPlan() { - java.lang.Object ref = maliciousPlan_; - if (!(ref instanceof java.lang.String)) { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - java.lang.String s = bs.toStringUtf8(); - maliciousPlan_ = s; - return s; - } else { - return (java.lang.String) ref; - } - } - /** - * string malicious_plan = 1; - * @return The bytes for maliciousPlan. - */ - public com.google.protobuf.ByteString - getMaliciousPlanBytes() { - java.lang.Object ref = maliciousPlan_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - maliciousPlan_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - /** - * string malicious_plan = 1; - * @param value The maliciousPlan to set. - * @return This builder for chaining. - */ - public Builder setMaliciousPlan( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - - maliciousPlan_ = value; - onChanged(); - return this; - } - /** - * string malicious_plan = 1; - * @return This builder for chaining. - */ - public Builder clearMaliciousPlan() { - - maliciousPlan_ = getDefaultInstance().getMaliciousPlan(); - onChanged(); - return this; - } - /** - * string malicious_plan = 1; - * @param value The bytes for maliciousPlan to set. - * @return This builder for chaining. - */ - public Builder setMaliciousPlanBytes( - com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - checkByteStringIsUtf8(value); - - maliciousPlan_ = value; - onChanged(); - return this; - } - @java.lang.Override - public final Builder setUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.setUnknownFields(unknownFields); - } - - @java.lang.Override - public final Builder mergeUnknownFields( - final com.google.protobuf.UnknownFieldSet unknownFields) { - return super.mergeUnknownFields(unknownFields); - } - - - // @@protoc_insertion_point(builder_scope:google.showcase.v1beta1.EvilResponse) - } - - // @@protoc_insertion_point(class_scope:google.showcase.v1beta1.EvilResponse) - private static final com.google.showcase.v1beta1.EvilResponse DEFAULT_INSTANCE; - static { - DEFAULT_INSTANCE = new com.google.showcase.v1beta1.EvilResponse(); - } - - public static com.google.showcase.v1beta1.EvilResponse getDefaultInstance() { - return DEFAULT_INSTANCE; - } - - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { - @java.lang.Override - public EvilResponse parsePartialFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return new EvilResponse(input, extensionRegistry); - } - }; - - public static com.google.protobuf.Parser parser() { - return PARSER; - } - - @java.lang.Override - public com.google.protobuf.Parser getParserForType() { - return PARSER; - } - - @java.lang.Override - public com.google.showcase.v1beta1.EvilResponse getDefaultInstanceForType() { - return DEFAULT_INSTANCE; - } - -} - diff --git a/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponseOrBuilder.java b/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponseOrBuilder.java deleted file mode 100644 index 4c78259881..0000000000 --- a/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/EvilResponseOrBuilder.java +++ /dev/null @@ -1,21 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: showcase/gapic-showcase-extended/proto/wicked.proto - -package com.google.showcase.v1beta1; - -public interface EvilResponseOrBuilder extends - // @@protoc_insertion_point(interface_extends:google.showcase.v1beta1.EvilResponse) - com.google.protobuf.MessageOrBuilder { - - /** - * string malicious_plan = 1; - * @return The maliciousPlan. - */ - java.lang.String getMaliciousPlan(); - /** - * string malicious_plan = 1; - * @return The bytes for maliciousPlan. - */ - com.google.protobuf.ByteString - getMaliciousPlanBytes(); -} diff --git a/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedOuterClass.java b/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedOuterClass.java deleted file mode 100644 index 7498bd3edd..0000000000 --- a/showcase/proto-gapic-showcase-v1beta1/src/main/java/com/google/showcase/v1beta1/WickedOuterClass.java +++ /dev/null @@ -1,79 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: showcase/gapic-showcase-extended/proto/wicked.proto - -package com.google.showcase.v1beta1; - -public final class WickedOuterClass { - private WickedOuterClass() {} - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistryLite registry) { - } - - public static void registerAllExtensions( - com.google.protobuf.ExtensionRegistry registry) { - registerAllExtensions( - (com.google.protobuf.ExtensionRegistryLite) registry); - } - static final com.google.protobuf.Descriptors.Descriptor - internal_static_google_showcase_v1beta1_EvilRequest_descriptor; - static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_google_showcase_v1beta1_EvilRequest_fieldAccessorTable; - static final com.google.protobuf.Descriptors.Descriptor - internal_static_google_showcase_v1beta1_EvilResponse_descriptor; - static final - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_google_showcase_v1beta1_EvilResponse_fieldAccessorTable; - - public static com.google.protobuf.Descriptors.FileDescriptor - getDescriptor() { - return descriptor; - } - private static com.google.protobuf.Descriptors.FileDescriptor - descriptor; - static { - java.lang.String[] descriptorData = { - "\n3showcase/gapic-showcase-extended/proto" + - "/wicked.proto\022\027google.showcase.v1beta1\032\027" + - "google/api/client.proto\"%\n\013EvilRequest\022\026" + - "\n\016malicious_idea\030\001 \001(\t\"&\n\014EvilResponse\022\026" + - "\n\016malicious_plan\030\001 \001(\t2\304\002\n\006Wicked\022\\\n\rCra" + - "ftEvilPlan\022$.google.showcase.v1beta1.Evi" + - "lRequest\032%.google.showcase.v1beta1.EvilR" + - "esponse\022f\n\023BrainstormEvilPlans\022$.google." + - "showcase.v1beta1.EvilRequest\032%.google.sh" + - "owcase.v1beta1.EvilResponse(\0010\001\022a\n\020Persu" + - "adeEvilPlan\022$.google.showcase.v1beta1.Ev" + - "ilRequest\032%.google.showcase.v1beta1.Evil" + - "Response(\001\032\021\312A\016localhost:7469Bq\n\033com.goo" + - "gle.showcase.v1beta1P\001Z4github.com/googl" + - "eapis/gapic-showcase/server/genproto\352\002\031G" + - "oogle::Showcase::V1beta1b\006proto3" - }; - descriptor = com.google.protobuf.Descriptors.FileDescriptor - .internalBuildGeneratedFileFrom(descriptorData, - new com.google.protobuf.Descriptors.FileDescriptor[] { - com.google.api.ClientProto.getDescriptor(), - }); - internal_static_google_showcase_v1beta1_EvilRequest_descriptor = - getDescriptor().getMessageTypes().get(0); - internal_static_google_showcase_v1beta1_EvilRequest_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_google_showcase_v1beta1_EvilRequest_descriptor, - new java.lang.String[] { "MaliciousIdea", }); - internal_static_google_showcase_v1beta1_EvilResponse_descriptor = - getDescriptor().getMessageTypes().get(1); - internal_static_google_showcase_v1beta1_EvilResponse_fieldAccessorTable = new - com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_google_showcase_v1beta1_EvilResponse_descriptor, - new java.lang.String[] { "MaliciousPlan", }); - com.google.protobuf.ExtensionRegistry registry = - com.google.protobuf.ExtensionRegistry.newInstance(); - registry.add(com.google.api.ClientProto.defaultHost); - com.google.protobuf.Descriptors.FileDescriptor - .internalUpdateFileDescriptor(descriptor, registry); - com.google.api.ClientProto.getDescriptor(); - } - - // @@protoc_insertion_point(outer_class_scope) -} diff --git a/showcase/scripts/update.sh b/showcase/scripts/update.sh index ad94efb740..f7b7e4ee7a 100755 --- a/showcase/scripts/update.sh +++ b/showcase/scripts/update.sh @@ -40,13 +40,13 @@ case $1 in grpc) GRPC_PROJECT_DIR=grpc-gapic-showcase-v1beta1 GRPC_JAR=$(find . -name 'libshowcase_java_grpc-src.jar') - GRPC_JAR_EXTENDED=$(find . -name 'libshowcase_java_grpc_extended-src.jar') +# GRPC_JAR_EXTENDED=$(find . -name 'libshowcase_java_grpc_extended-src.jar') clear_existing $GRPC_PROJECT_DIR create_unpack_dir grpc_unpacked GRPC_UNPACK_DIR=$PWD jar xf "$BAZEL_ROOT/$GRPC_JAR" - jar xf "$BAZEL_ROOT/$GRPC_JAR_EXTENDED" +# jar xf "$BAZEL_ROOT/$GRPC_JAR_EXTENDED" cd "$BUILD_WORKSPACE_DIRECTORY/showcase/$GRPC_PROJECT_DIR" mkdir -p ./src/main/java/com cp -r "$GRPC_UNPACK_DIR"/com/* ./src/main/java/com diff --git a/showcase/scripts/verify.sh b/showcase/scripts/verify.sh index 05ec90266a..41b72565c7 100755 --- a/showcase/scripts/verify.sh +++ b/showcase/scripts/verify.sh @@ -39,12 +39,12 @@ case $1 in grpc) GRPC_PROJECT_DIR=grpc-gapic-showcase-v1beta1 GRPC_JAR=$(find . -name 'libshowcase_java_grpc-src.jar') - GRPC_JAR_EXTENDED=$(find . -name 'libshowcase_java_grpc_extended-src.jar') +# GRPC_JAR_EXTENDED=$(find . -name 'libshowcase_java_grpc_extended-src.jar') create_unpack_dir grpc_unpacked GRPC_UNPACK_DIR=$PWD jar xf "$BAZEL_ROOT/$GRPC_JAR" - jar xf "$BAZEL_ROOT/$GRPC_JAR_EXTENDED" +# jar xf "$BAZEL_ROOT/$GRPC_JAR_EXTENDED" delete_unneeded diff -ru "$SHOWCASE_DIR/$GRPC_PROJECT_DIR"/src/main/java/com "$GRPC_UNPACK_DIR"/com ;; From 717a1b7e32297a5e8c77523e0be1891ca4073159 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 24 Jan 2023 15:51:34 -0500 Subject: [PATCH 56/63] chore: Update showcase project with extended info --- showcase/BUILD.bazel | 3 ++ .../gapic-showcase-extended/proto/BUILD.bazel | 6 +++ .../proto/wicked.proto | 49 ------------------- 3 files changed, 9 insertions(+), 49 deletions(-) delete mode 100644 showcase/gapic-showcase-extended/proto/wicked.proto diff --git a/showcase/BUILD.bazel b/showcase/BUILD.bazel index bb8f42e5b9..1653df2bff 100644 --- a/showcase/BUILD.bazel +++ b/showcase/BUILD.bazel @@ -1,3 +1,6 @@ +# Note: The commented section is the framework for gapic-showcase-extended +# See gapic-showcase-extended folder for more info + load( "//rules_java_gapic:java_gapic.bzl", "java_gapic_library", diff --git a/showcase/gapic-showcase-extended/proto/BUILD.bazel b/showcase/gapic-showcase-extended/proto/BUILD.bazel index 3be218f7fc..bc57596d1b 100644 --- a/showcase/gapic-showcase-extended/proto/BUILD.bazel +++ b/showcase/gapic-showcase-extended/proto/BUILD.bazel @@ -21,6 +21,12 @@ load ("@rules_proto//proto:defs.bzl", "proto_library") # This is an API workspace, having public visibility by default makes perfect sense. package(default_visibility = ["//visibility:public"]) +# This BUILD file is the framework for gapic-showcase-extended (an extension to the existing gapic-showcase) +# It serves to augment the existing showcase project with generic protos not *yet* suited to the upstream project +# +# gapic-showcase project is used to test the generated client behavior with a showcase server +# gapic-showcase-extension project is used to test the generator's behavior + #proto_library( # name = "showcase_proto_extended", # srcs = [], diff --git a/showcase/gapic-showcase-extended/proto/wicked.proto b/showcase/gapic-showcase-extended/proto/wicked.proto deleted file mode 100644 index ea45fee918..0000000000 --- a/showcase/gapic-showcase-extended/proto/wicked.proto +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2023 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. - -syntax = "proto3"; - -import "google/api/client.proto"; - -package google.showcase.v1beta1; - -option go_package = "github.com/googleapis/gapic-showcase/server/genproto"; -option java_package = "com.google.showcase.v1beta1"; -option java_multiple_files = true; -option ruby_package = "Google::Showcase::V1beta1"; - -// This service is used to show a Service with either non-enabled or non-eligible -// RPCs for HttpJson (Http 1.1). -// Non-Enabled: Missing the (google.api.http) annotation to enabled it -// Non-Eligible: BIDI and Client side streaming are not supported with Http 1.1 -// Service name is reference to `No REST for the Wicked` -service Wicked { - // This service is meant to only run locally on the port 7469 (keypad digits - // for "show"). - option (google.api.default_host) = "localhost:7469"; - - rpc CraftEvilPlan(EvilRequest) returns (EvilResponse); - - rpc BrainstormEvilPlans(stream EvilRequest) returns (stream EvilResponse); - - rpc PersuadeEvilPlan(stream EvilRequest) returns (EvilResponse); -} - -message EvilRequest { - string malicious_idea = 1; -} - -message EvilResponse { - string malicious_plan = 1; -} \ No newline at end of file From 55d4cfac940bfaedc802137d24fb33d4ae07f5df Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 24 Jan 2023 15:55:22 -0500 Subject: [PATCH 57/63] chore: Remove comment --- .../gapic/composer/comment/ServiceClientCommentComposer.java | 1 - 1 file changed, 1 deletion(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java index 2d622d7efe..39360e9284 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java @@ -149,7 +149,6 @@ public static List createClassHeaderComments( classHeaderJavadocBuilder.addParagraph(SERVICE_DESCRIPTION_ENDPOINT_SUMMARY_STRING); classHeaderJavadocBuilder.addSampleCode(endpointSampleCode); - // Transport example if (transportSampleCode != null) { classHeaderJavadocBuilder.addParagraph( String.format( From a93b8f4e93652f1a3eaaa544d465201f2ba7430f Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 24 Jan 2023 16:53:22 -0500 Subject: [PATCH 58/63] chore: Use TransportContext instead of duplicate transportName() --- ...ctServiceCallableFactoryClassComposer.java | 6 +-- ...bstractServiceClientTestClassComposer.java | 8 +-- ...tractServiceStubSettingsClassComposer.java | 6 +-- ...ractTransportServiceStubClassComposer.java | 20 +++----- .../ServiceStubSettingsClassComposer.java | 10 +++- ...onServiceCallableFactoryClassComposer.java | 5 -- .../HttpJsonServiceStubClassComposer.java | 9 +--- .../rest/ServiceClientTestClassComposer.java | 5 -- .../ServiceStubSettingsClassComposer.java | 5 -- .../proto/wicked.proto | 49 +++++++++++++++++++ 10 files changed, 71 insertions(+), 52 deletions(-) create mode 100644 showcase/gapic-showcase-extended/proto/wicked.proto diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceCallableFactoryClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceCallableFactoryClassComposer.java index d20900f29d..887dd5af76 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceCallableFactoryClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceCallableFactoryClassComposer.java @@ -61,14 +61,10 @@ protected TransportContext getTransportContext() { return transportContext; } - protected Transport getTransport() { - return Transport.GRPC; - } - @Override public GapicClass generate(GapicContext context, Service service) { // Do not generate the Callable Factory if there are no RPCs enabled for the Transport - if (!service.hasAnyEnabledMethodsForTransport(getTransport())) { + if (!service.hasAnyEnabledMethodsForTransport(getTransportContext().transport())) { return GapicClass.createNonGeneratedGapicClass(); } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java index cd042222c1..c6243d82f1 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java @@ -104,10 +104,6 @@ public TransportContext getTransportContext() { return transportContext; } - protected Transport getTransport() { - return Transport.GRPC; - } - @Override public GapicClass generate(GapicContext context, Service service) { return generate(ClassNames.getServiceClientTestClassName(service), context, service); @@ -115,7 +111,7 @@ public GapicClass generate(GapicContext context, Service service) { protected GapicClass generate(String className, GapicContext context, Service service) { // Do not generate Client Test code for Transport if there are no matching RPCs for a Transport - if (!service.hasAnyEnabledMethodsForTransport(getTransport())) { + if (!service.hasAnyEnabledMethodsForTransport(getTransportContext().transport())) { return GapicClass.createNonGeneratedGapicClass(); } @@ -236,7 +232,7 @@ private List createTestMethods( Map messageTypes = context.messages(); List javaMethods = new ArrayList<>(); for (Method method : service.methods()) { - if (!method.isSupportedByTransport(getTransport())) { + if (!method.isSupportedByTransport(getTransportContext().transport())) { javaMethods.add(createUnsupportedTestMethod(method)); continue; } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java index 70fef2796e..da6d7ca32d 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java @@ -164,10 +164,6 @@ public TransportContext getTransportContext() { return transportContext; } - public Transport getTransport() { - return Transport.GRPC; - } - @Override public GapicClass generate(GapicContext context, Service service) { // TODO(miraleung): Robustify this against a null serviceConfig. @@ -1784,7 +1780,7 @@ private static List createNestedClassConstructorMethods( protected List createNestedClassCreateDefaultMethods( Service service, TypeStore typeStore) { - if (service.hasAnyEnabledMethodsForTransport(getTransport())) { + if (service.hasAnyEnabledMethodsForTransport(getTransportContext().transport())) { List methodDefinitions = new ArrayList<>(); methodDefinitions.add( createNestedClassCreateDefaultMethod( diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java index 05cd965cfd..1e9568d376 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java @@ -134,7 +134,7 @@ private static TypeStore createStaticTypes() { @Override public GapicClass generate(GapicContext context, Service service) { - if (!service.hasAnyEnabledMethodsForTransport(getTransport())) { + if (!service.hasAnyEnabledMethodsForTransport(getTransportContext().transport())) { return GapicClass.createNonGeneratedGapicClass(); } @@ -229,10 +229,6 @@ public GapicClass generate(GapicContext context, Service service) { return GapicClass.create(kind, classDef); } - protected Transport getTransport() { - return Transport.GRPC; - } - protected abstract Statement createMethodDescriptorVariableDecl( Service service, Method protoMethod, @@ -318,7 +314,7 @@ protected List createMethodDescriptorVariableDecls( Map messageTypes, boolean restNumericEnumsEnabled) { return service.methods().stream() - .filter(x -> x.isSupportedByTransport(getTransport())) + .filter(x -> x.isSupportedByTransport(getTransportContext().transport())) .map( m -> createMethodDescriptorVariableDecl( @@ -347,7 +343,7 @@ private static List createClassMemberFieldDeclarations( protected Map createProtoMethodNameToDescriptorClassMembers( Service service, Class descriptorClass) { return service.methods().stream() - .filter(x -> x.isSupportedByTransport(getTransport())) + .filter(x -> x.isSupportedByTransport(getTransportContext().transport())) .collect( Collectors.toMap( Method::name, @@ -379,7 +375,7 @@ private Map createCallableClassMembers( Map callableClassMembers = new LinkedHashMap<>(); // Using a for-loop because the output cardinality is not a 1:1 mapping to the input set. for (Method protoMethod : service.methods()) { - if (!protoMethod.isSupportedByTransport(getTransport())) { + if (!protoMethod.isSupportedByTransport(getTransportContext().transport())) { continue; } String javaStyleProtoMethodName = JavaStyle.toLowerCamelCase(protoMethod.name()); @@ -668,7 +664,7 @@ protected List createConstructorMethods( // Transport settings local variables. Map javaStyleMethodNameToTransportSettingsVarExprs = service.methods().stream() - .filter(x -> x.isSupportedByTransport(getTransport())) + .filter(x -> x.isSupportedByTransport(getTransportContext().transport())) .collect( Collectors.toMap( m -> JavaStyle.toLowerCamelCase(m.name()), @@ -692,7 +688,7 @@ protected List createConstructorMethods( secondCtorExprs.addAll( service.methods().stream() - .filter(x -> x.isSupportedByTransport(getTransport())) + .filter(x -> x.isSupportedByTransport(getTransportContext().transport())) .map( m -> createTransportSettingsInitExpr( @@ -1063,7 +1059,7 @@ private List createStubOverrideMethods( private boolean checkOperationPollingMethod(Service service) { return service.methods().stream() - .filter(x -> x.isSupportedByTransport(getTransport())) + .filter(x -> x.isSupportedByTransport(getTransportContext().transport())) .anyMatch(Method::isOperationPollingMethod); } @@ -1102,7 +1098,7 @@ private TypeStore createDynamicTypes(Service service, String stubPakkage) { typeStore.putAll( service.pakkage(), service.methods().stream() - .filter(x -> x.isSupportedByTransport(getTransport())) + .filter(x -> x.isSupportedByTransport(getTransportContext().transport())) .filter(Method::isPaged) .map(m -> String.format(PAGED_RESPONSE_TYPE_NAME_PATTERN, m.name())) .collect(Collectors.toList()), diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java index e9d957656a..080d7c6334 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java @@ -177,8 +177,14 @@ public MethodDefinition createDefaultTransportChannelProviderMethod() { @Override protected List createNestedClassCreateDefaultMethods( Service service, TypeStore typeStore) { - List methodDefinitions = - super.createNestedClassCreateDefaultMethods(service, typeStore); + List methodDefinitions = new ArrayList<>(); + methodDefinitions.add( + createNestedClassCreateDefaultMethod( + typeStore, + "createDefault", + "defaultTransportChannelProvider", + null, + "defaultApiClientHeaderProviderBuilder")); if (service.hasAnyEnabledMethodsForTransport(Transport.REST)) { methodDefinitions.add( createNestedClassCreateDefaultMethod( diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceCallableFactoryClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceCallableFactoryClassComposer.java index b5b2c4fd4e..b0e3d12651 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceCallableFactoryClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceCallableFactoryClassComposer.java @@ -56,11 +56,6 @@ public static HttpJsonServiceCallableFactoryClassComposer instance() { return INSTANCE; } - @Override - protected Transport getTransport() { - return Transport.REST; - } - @Override protected List createClassAnnotations(Service service, TypeStore typeStore) { List annotations = super.createClassAnnotations(service, typeStore); diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index 277a5f2c7e..bd6c098817 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -117,11 +117,6 @@ private static TypeStore createStaticTypes() { TypeRegistry.class)); } - @Override - protected Transport getTransport() { - return Transport.REST; - } - @Override protected boolean generateOperationsStubLogic(Service service) { return service.hasLroMethods(); @@ -1276,7 +1271,7 @@ protected List createClassMethods( private List createInvalidClassMethods(Service service) { List methodDefinitions = new ArrayList<>(); for (Method protoMethod : service.methods()) { - if (protoMethod.isSupportedByTransport(getTransport())) { + if (protoMethod.isSupportedByTransport(getTransportContext().transport())) { continue; } String javaStyleProtoMethodName = JavaStyle.toLowerCamelCase(protoMethod.name()); @@ -1295,7 +1290,7 @@ private List createInvalidClassMethods(Service service) { .setMessageExpr( String.format( "Not implemented: %s(). %s transport is not implemented for this method yet.", - callableName, getTransport())) + callableName, getTransportContext().transport())) .build()))) .build()); } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java index 6b76d1220e..243adf5300 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java @@ -92,11 +92,6 @@ private static TypeStore createStaticTypes() { MockHttpService.class)); } - @Override - protected Transport getTransport() { - return Transport.REST; - } - @Override protected Map createClassMemberVarExprs( Service service, GapicContext context, TypeStore typeStore) { diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java index b0f0ea1047..68f56604ec 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java @@ -51,11 +51,6 @@ private static TypeStore createStaticTypes() { InstantiatingHttpJsonChannelProvider.class)); } - @Override - public Transport getTransport() { - return Transport.REST; - } - @Override protected List createApiClientHeaderProviderBuilderMethods( Service service, TypeStore typeStore) { diff --git a/showcase/gapic-showcase-extended/proto/wicked.proto b/showcase/gapic-showcase-extended/proto/wicked.proto new file mode 100644 index 0000000000..ea45fee918 --- /dev/null +++ b/showcase/gapic-showcase-extended/proto/wicked.proto @@ -0,0 +1,49 @@ +// Copyright 2023 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. + +syntax = "proto3"; + +import "google/api/client.proto"; + +package google.showcase.v1beta1; + +option go_package = "github.com/googleapis/gapic-showcase/server/genproto"; +option java_package = "com.google.showcase.v1beta1"; +option java_multiple_files = true; +option ruby_package = "Google::Showcase::V1beta1"; + +// This service is used to show a Service with either non-enabled or non-eligible +// RPCs for HttpJson (Http 1.1). +// Non-Enabled: Missing the (google.api.http) annotation to enabled it +// Non-Eligible: BIDI and Client side streaming are not supported with Http 1.1 +// Service name is reference to `No REST for the Wicked` +service Wicked { + // This service is meant to only run locally on the port 7469 (keypad digits + // for "show"). + option (google.api.default_host) = "localhost:7469"; + + rpc CraftEvilPlan(EvilRequest) returns (EvilResponse); + + rpc BrainstormEvilPlans(stream EvilRequest) returns (stream EvilResponse); + + rpc PersuadeEvilPlan(stream EvilRequest) returns (EvilResponse); +} + +message EvilRequest { + string malicious_idea = 1; +} + +message EvilResponse { + string malicious_plan = 1; +} \ No newline at end of file From 1a11c3b1963f89ad00ffa98ba0e688dc475cc53f Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 24 Jan 2023 16:53:53 -0500 Subject: [PATCH 59/63] chore: Fix formatting issues --- .../AbstractServiceCallableFactoryClassComposer.java | 1 - .../AbstractServiceClientTestClassComposer.java | 1 - .../AbstractServiceStubSettingsClassComposer.java | 1 - .../AbstractTransportServiceStubClassComposer.java | 1 - .../grpcrest/ServiceStubSettingsClassComposer.java | 12 ++++++------ .../HttpJsonServiceCallableFactoryClassComposer.java | 1 - .../rest/HttpJsonServiceStubClassComposer.java | 1 - .../rest/ServiceClientTestClassComposer.java | 1 - 8 files changed, 6 insertions(+), 13 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceCallableFactoryClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceCallableFactoryClassComposer.java index 887dd5af76..029cfba23d 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceCallableFactoryClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceCallableFactoryClassComposer.java @@ -42,7 +42,6 @@ import com.google.api.generator.gapic.model.GapicClass.Kind; import com.google.api.generator.gapic.model.GapicContext; import com.google.api.generator.gapic.model.Service; -import com.google.api.generator.gapic.model.Transport; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java index c6243d82f1..a2db5ada32 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientTestClassComposer.java @@ -56,7 +56,6 @@ import com.google.api.generator.gapic.model.MethodArgument; import com.google.api.generator.gapic.model.ResourceName; import com.google.api.generator.gapic.model.Service; -import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java index da6d7ca32d..8a7ba64bc7 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java @@ -95,7 +95,6 @@ import com.google.api.generator.gapic.model.Method.Stream; import com.google.api.generator.gapic.model.Sample; import com.google.api.generator.gapic.model.Service; -import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java index 1e9568d376..d217196a0a 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractTransportServiceStubClassComposer.java @@ -59,7 +59,6 @@ import com.google.api.generator.gapic.model.Message; import com.google.api.generator.gapic.model.Method; import com.google.api.generator.gapic.model.Service; -import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java index 080d7c6334..b79c74ed99 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpcrest/ServiceStubSettingsClassComposer.java @@ -179,12 +179,12 @@ protected List createNestedClassCreateDefaultMethods( Service service, TypeStore typeStore) { List methodDefinitions = new ArrayList<>(); methodDefinitions.add( - createNestedClassCreateDefaultMethod( - typeStore, - "createDefault", - "defaultTransportChannelProvider", - null, - "defaultApiClientHeaderProviderBuilder")); + createNestedClassCreateDefaultMethod( + typeStore, + "createDefault", + "defaultTransportChannelProvider", + null, + "defaultApiClientHeaderProviderBuilder")); if (service.hasAnyEnabledMethodsForTransport(Transport.REST)) { methodDefinitions.add( createNestedClassCreateDefaultMethod( diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceCallableFactoryClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceCallableFactoryClassComposer.java index b0e3d12651..9a973a2b76 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceCallableFactoryClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceCallableFactoryClassComposer.java @@ -33,7 +33,6 @@ import com.google.api.generator.gapic.composer.common.AbstractServiceCallableFactoryClassComposer; import com.google.api.generator.gapic.composer.store.TypeStore; import com.google.api.generator.gapic.model.Service; -import com.google.api.generator.gapic.model.Transport; import com.google.longrunning.Operation; import java.util.ArrayList; import java.util.Arrays; diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java index bd6c098817..2712dd4638 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposer.java @@ -59,7 +59,6 @@ import com.google.api.generator.gapic.model.Method; import com.google.api.generator.gapic.model.OperationResponse; import com.google.api.generator.gapic.model.Service; -import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.BiMap; diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java index 243adf5300..d9fc2843cd 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java @@ -47,7 +47,6 @@ import com.google.api.generator.gapic.model.MethodArgument; import com.google.api.generator.gapic.model.ResourceName; import com.google.api.generator.gapic.model.Service; -import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.collect.ImmutableList; import java.util.ArrayList; From 31a486b49f1e542e2a79913b97c3369d4d9dc889 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 24 Jan 2023 17:06:20 -0500 Subject: [PATCH 60/63] chore: Remove the changed spacing in the file --- .../gapic/composer/comment/ServiceClientCommentComposer.java | 1 - 1 file changed, 1 deletion(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java index 39360e9284..5835c77935 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/ServiceClientCommentComposer.java @@ -148,7 +148,6 @@ public static List createClassHeaderComments( classHeaderJavadocBuilder.addSampleCode(credentialsSampleCode); classHeaderJavadocBuilder.addParagraph(SERVICE_DESCRIPTION_ENDPOINT_SUMMARY_STRING); classHeaderJavadocBuilder.addSampleCode(endpointSampleCode); - if (transportSampleCode != null) { classHeaderJavadocBuilder.addParagraph( String.format( From 55ffcd3bf4c0090a524fa8bed951f9211d7fc061 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 24 Jan 2023 17:27:04 -0500 Subject: [PATCH 61/63] chore: Use transportContext where possible --- .../common/AbstractServiceStubSettingsClassComposer.java | 4 +--- .../gapic/composer/rest/ServiceStubSettingsClassComposer.java | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java index 8a7ba64bc7..50e9c12e71 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java @@ -1780,15 +1780,13 @@ private static List createNestedClassConstructorMethods( protected List createNestedClassCreateDefaultMethods( Service service, TypeStore typeStore) { if (service.hasAnyEnabledMethodsForTransport(getTransportContext().transport())) { - List methodDefinitions = new ArrayList<>(); - methodDefinitions.add( + return Arrays.asList( createNestedClassCreateDefaultMethod( typeStore, "createDefault", "defaultTransportChannelProvider", null, "defaultApiClientHeaderProviderBuilder")); - return methodDefinitions; } else { return Collections.emptyList(); } diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java index 68f56604ec..a7e876b1a1 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java @@ -54,7 +54,7 @@ private static TypeStore createStaticTypes() { @Override protected List createApiClientHeaderProviderBuilderMethods( Service service, TypeStore typeStore) { - if (service.hasAnyEnabledMethodsForTransport(Transport.REST)) { + if (service.hasAnyEnabledMethodsForTransport(getTransportContext().transport())) { return Collections.singletonList( createApiClientHeaderProviderBuilderMethod( service, From f2e6b1778ebab356031b3f602b7dcbce8e50c41e Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 24 Jan 2023 17:38:47 -0500 Subject: [PATCH 62/63] chore: Fix format issues --- .../gapic/composer/rest/ServiceClientTestClassComposer.java | 2 +- .../gapic/composer/rest/ServiceStubSettingsClassComposer.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java index d9fc2843cd..40d5491ab5 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java @@ -59,7 +59,7 @@ import java.util.function.Function; import java.util.stream.Collectors; -public class ServiceClientTestClassComposer extends AbstractServiceClientTestClassComposer { +public class ServiceClientTestClassComposer extends AbstractSServiceClientTestClassComposer { private static final String MOCK_SERVICE_VAR_NAME = "mockService"; diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java index a7e876b1a1..654337fb87 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceStubSettingsClassComposer.java @@ -24,7 +24,6 @@ import com.google.api.generator.gapic.composer.common.AbstractServiceStubSettingsClassComposer; import com.google.api.generator.gapic.composer.store.TypeStore; import com.google.api.generator.gapic.model.Service; -import com.google.api.generator.gapic.model.Transport; import java.util.Arrays; import java.util.Collections; import java.util.List; From 34352254c518ad163e049281ade611baabd754de Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 24 Jan 2023 18:50:12 -0500 Subject: [PATCH 63/63] chore: Fix compile issue --- .../gapic/composer/rest/ServiceClientTestClassComposer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java index 40d5491ab5..d9fc2843cd 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java @@ -59,7 +59,7 @@ import java.util.function.Function; import java.util.stream.Collectors; -public class ServiceClientTestClassComposer extends AbstractSServiceClientTestClassComposer { +public class ServiceClientTestClassComposer extends AbstractServiceClientTestClassComposer { private static final String MOCK_SERVICE_VAR_NAME = "mockService";