From 4c14e48866ff8be152884c71e8ac096bca088645 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 31 Jan 2023 00:34:48 -0500 Subject: [PATCH 01/82] fix: Allow custom http bindings for LROs --- .../stub/HttpJsonOperationsStub.java | 204 ++++++++++++++---- .../stub/OperationsStubSettings.java | 3 +- 2 files changed, 161 insertions(+), 46 deletions(-) diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 5759c41726..23ddf5a858 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -73,7 +73,7 @@ public class HttpJsonOperationsStub extends OperationsStub { private static final Pattern CLIENT_PACKAGE_VERSION_PATTERN = Pattern.compile("\\.(?v\\d+[a-zA-Z]*\\d*[a-zA-Z]*\\d*)\\.[\\w.]*stub"); - private static final ApiMethodDescriptor + private static ApiMethodDescriptor listOperationsMethodDescriptor = ApiMethodDescriptor.newBuilder() .setFullMethodName("google.longrunning.Operations/ListOperations") @@ -107,37 +107,36 @@ public class HttpJsonOperationsStub extends OperationsStub { .build()) .build(); - private static final ApiMethodDescriptor - getOperationMethodDescriptor = - ApiMethodDescriptor.newBuilder() - .setFullMethodName("google.longrunning.Operations/GetOperation") - .setHttpMethod(HttpMethods.GET) - .setRequestFormatter( - ProtoMessageRequestFormatter.newBuilder() - .setPath( - "/v1/{name=**/operations/*}", - request -> { - Map fields = new HashMap<>(); - ProtoRestSerializer serializer = - ProtoRestSerializer.create(); - serializer.putPathParam(fields, "name", request.getName()); - return fields; - }) - .setQueryParamsExtractor(request -> new HashMap<>()) - .setRequestBodyExtractor(request -> null) - .build()) - .setResponseParser( - ProtoMessageResponseParser.newBuilder() - .setDefaultInstance(Operation.getDefaultInstance()) - .build()) - .setOperationSnapshotFactory( - (request, response) -> HttpJsonOperationSnapshot.create(response)) - .setPollingRequestFactory( - compoundOperationId -> - GetOperationRequest.newBuilder().setName(compoundOperationId).build()) - .build(); - - private static final ApiMethodDescriptor + private static ApiMethodDescriptor getOperationMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.longrunning.Operations/GetOperation") + .setHttpMethod(HttpMethods.GET) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/{name=**/operations/*}", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "name", request.getName()); + return fields; + }) + .setQueryParamsExtractor(request -> new HashMap<>()) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Operation.getDefaultInstance()) + .build()) + .setOperationSnapshotFactory( + (request, response) -> HttpJsonOperationSnapshot.create(response)) + .setPollingRequestFactory( + compoundOperationId -> + GetOperationRequest.newBuilder().setName(compoundOperationId).build()) + .build(); + + private static ApiMethodDescriptor deleteOperationMethodDescriptor = ApiMethodDescriptor.newBuilder() .setFullMethodName("google.longrunning.Operations/DeleteOperation") @@ -162,7 +161,7 @@ public class HttpJsonOperationsStub extends OperationsStub { .build()) .build(); - private static final ApiMethodDescriptor + private static ApiMethodDescriptor cancelOperationMethodDescriptor = ApiMethodDescriptor.newBuilder() .setFullMethodName("google.longrunning.Operations/CancelOperation") @@ -198,32 +197,44 @@ public class HttpJsonOperationsStub extends OperationsStub { private final BackgroundResource backgroundResources; private final HttpJsonStubCallableFactory callableFactory; - public static final HttpJsonOperationsStub create(OperationsStubSettings settings) + public static final HttpJsonOperationsStub create( + OperationsStubSettings settings, Map customOperationPaths) throws IOException { - return new HttpJsonOperationsStub(settings, ClientContext.create(settings)); + return new HttpJsonOperationsStub( + settings, ClientContext.create(settings), customOperationPaths); } - public static final HttpJsonOperationsStub create(ClientContext clientContext) - throws IOException { - return new HttpJsonOperationsStub(OperationsStubSettings.newBuilder().build(), clientContext); + public static final HttpJsonOperationsStub create( + ClientContext clientContext, Map customOperationPaths) throws IOException { + return new HttpJsonOperationsStub( + OperationsStubSettings.newBuilder().build(), clientContext, customOperationPaths); } public static final HttpJsonOperationsStub create( - ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory, + Map customOperationPaths) + throws IOException { return new HttpJsonOperationsStub( OperationsStubSettings.newBuilder().build(), clientContext, callableFactory, - TypeRegistry.getEmptyTypeRegistry()); + TypeRegistry.getEmptyTypeRegistry(), + customOperationPaths); } public static final HttpJsonOperationsStub create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, - TypeRegistry typeRegistry) + TypeRegistry typeRegistry, + Map customOperationPaths) throws IOException { return new HttpJsonOperationsStub( - OperationsStubSettings.newBuilder().build(), clientContext, callableFactory, typeRegistry); + OperationsStubSettings.newBuilder().build(), + clientContext, + callableFactory, + typeRegistry, + customOperationPaths); } /** @@ -231,13 +242,17 @@ public static final HttpJsonOperationsStub create( * so that it is easy to make a subclass, but otherwise, the static factory methods should be * preferred. */ - protected HttpJsonOperationsStub(OperationsStubSettings settings, ClientContext clientContext) + protected HttpJsonOperationsStub( + OperationsStubSettings settings, + ClientContext clientContext, + Map customOperationPaths) throws IOException { this( settings, clientContext, new HttpJsonOperationsCallableFactory(), - TypeRegistry.getEmptyTypeRegistry()); + TypeRegistry.getEmptyTypeRegistry(), + customOperationPaths); } /** @@ -249,7 +264,8 @@ protected HttpJsonOperationsStub( OperationsStubSettings settings, ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, - TypeRegistry typeRegistry) + TypeRegistry typeRegistry, + Map customOperationPaths) throws IOException { this.callableFactory = callableFactory; @@ -258,6 +274,8 @@ protected HttpJsonOperationsStub( String apiVersion = packageMatcher.find() ? packageMatcher.group("version") : null; + updateDefaultOperationApiMethodDescriptors(customOperationPaths); + HttpJsonCallSettings listOperationsTransportSettings = HttpJsonCallSettings.newBuilder() @@ -309,6 +327,102 @@ protected HttpJsonOperationsStub( backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources()); } + private static void updateDefaultOperationApiMethodDescriptors( + Map customOperationPath) { + if (customOperationPath.containsKey("google.longrunning.Operations.ListOperations")) { + listOperationsMethodDescriptor = + listOperationsMethodDescriptor + .toBuilder() + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + customOperationPath.get("ListOperations"), + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "name", request.getName()); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "filter", request.getFilter()); + serializer.putQueryParam(fields, "pageSize", request.getPageSize()); + serializer.putQueryParam(fields, "pageToken", request.getPageToken()); + return fields; + }) + .setRequestBodyExtractor(request -> null) + .build()) + .build(); + } + + if (customOperationPath.containsKey("google.longrunning.Operations.GetOperation")) { + getOperationMethodDescriptor = + getOperationMethodDescriptor + .toBuilder() + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + customOperationPath.get("google.longrunning.Operations.GetOperation"), + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "name", request.getName()); + return fields; + }) + .setQueryParamsExtractor(request -> new HashMap<>()) + .setRequestBodyExtractor(request -> null) + .build()) + .build(); + } + + if (customOperationPath.containsKey("google.longrunning.Operations.DeleteOperation")) { + deleteOperationMethodDescriptor = + deleteOperationMethodDescriptor + .toBuilder() + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + customOperationPath.get("google.longrunning.Operations.DeleteOperation"), + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "name", request.getName()); + return fields; + }) + .setQueryParamsExtractor(request -> new HashMap<>()) + .setRequestBodyExtractor(request -> null) + .build()) + .build(); + } + + if (customOperationPath.containsKey("google.longrunning.Operations.CancelOperation")) { + cancelOperationMethodDescriptor = + cancelOperationMethodDescriptor + .toBuilder() + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + customOperationPath.get("google.longrunning.Operations.CancelOperation"), + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "name", request.getName()); + return fields; + }) + .setQueryParamsExtractor(request -> new HashMap<>()) + .setRequestBodyExtractor(request -> null) + .build()) + .build(); + } + } + private static ApiMethodDescriptor getApiVersionedMethodDescriptor( ApiMethodDescriptor methodDescriptor, String apiVersion) { diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java index 5f327a1091..3f722fb66e 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java @@ -64,6 +64,7 @@ import com.google.longrunning.Operation; import com.google.protobuf.Empty; import java.io.IOException; +import java.util.HashMap; import java.util.List; import org.threeten.bp.Duration; @@ -190,7 +191,7 @@ public OperationsStub createStub() throws IOException { if (getTransportChannelProvider() .getTransportName() .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { - return HttpJsonOperationsStub.create(this); + return HttpJsonOperationsStub.create(this, new HashMap<>()); } throw new UnsupportedOperationException( String.format( From 8f5e313b6470b5511aa823adc209903a26b2e6cc Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 31 Jan 2023 15:45:17 -0500 Subject: [PATCH 02/82] fix: Update generator and GAX to support custom HTTP Bindings for operations --- ...ractTransportServiceStubClassComposer.java | 2 + .../HttpJsonServiceStubClassComposer.java | 61 ++++++++++++++++++- .../stub/HttpJsonOperationsStub.java | 51 +++++++++------- 3 files changed, 90 insertions(+), 24 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 d217196a0a..b566ed5a18 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 @@ -649,6 +649,7 @@ protected List createConstructorMethods( if (generateOperationsStubLogic(service)) { secondCtorExprs.addAll( createOperationsStubInitExpr( + context, service, thisExpr, operationsStubClassVarExpr, @@ -758,6 +759,7 @@ protected List createConstructorMethods( } protected List createOperationsStubInitExpr( + GapicContext context, Service service, Expr thisExpr, VariableExpr operationsStubClassVarExpr, 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 2712dd4638..d11c4cb2f5 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 @@ -14,6 +14,7 @@ package com.google.api.generator.gapic.composer.rest; +import com.google.api.HttpRule; import com.google.api.core.InternalApi; import com.google.api.gax.httpjson.ApiMethodDescriptor; import com.google.api.gax.httpjson.ApiMethodDescriptor.MethodType; @@ -89,6 +90,7 @@ public class HttpJsonServiceStubClassComposer extends AbstractTransportServiceSt .setType(FIXED_REST_TYPESTORE.get(TypeRegistry.class.getSimpleName())) .build()) .build(); + private static final String LRO_NAME_PREFIX = "google.longrunning.Operations"; protected HttpJsonServiceStubClassComposer() { super(RestContext.instance()); @@ -1075,6 +1077,7 @@ private List getMethodTypeExpr(Method protoMethod) { @Override protected List createOperationsStubInitExpr( + GapicContext context, Service service, Expr thisExpr, VariableExpr operationsStubClassVarExpr, @@ -1089,7 +1092,50 @@ protected List createOperationsStubInitExpr( arguments.add(TYPE_REGISTRY_VAR_EXPR); } - return Collections.singletonList( + List exprs = new ArrayList<>(); + VariableExpr customHttpBindingsVarExpr = + VariableExpr.withVariable( + Variable.builder() + .setType( + TypeNode.withReference( + ConcreteReference.builder() + .setClazz(Map.class) + .setGenerics( + Arrays.asList( + ConcreteReference.withClazz(String.class), + ConcreteReference.withClazz(String.class))) + .build())) + .setName("customHttpBindingsMap") + .build()); + AssignmentExpr customHttpBindingsAssignmentExpr = + AssignmentExpr.builder() + .setVariableExpr(customHttpBindingsVarExpr.toBuilder().setIsDecl(true).build()) + .setValueExpr( + NewObjectExpr.builder() + .setType(FIXED_REST_TYPESTORE.get("HashMap")) + .setIsGeneric(true) + .build()) + .build(); + + exprs.add(customHttpBindingsAssignmentExpr); + Map operationCustomHttpBindings = parseCustomHttpBindings(context); + for (Map.Entry entrySet : operationCustomHttpBindings.entrySet()) { + String selector = entrySet.getKey(); + String path = entrySet.getValue(); + exprs.add( + MethodInvocationExpr.builder() + .setExprReferenceExpr(customHttpBindingsVarExpr) + .setMethodName("put") + .setArguments( + Arrays.asList( + ValueExpr.withValue(StringObjectValue.withValue(selector)), + ValueExpr.withValue(StringObjectValue.withValue(path)))) + .build()); + } + + arguments.add(customHttpBindingsVarExpr); + + exprs.add( AssignmentExpr.builder() .setVariableExpr( operationsStubClassVarExpr.toBuilder().setExprReferenceExpr(thisExpr).build()) @@ -1101,6 +1147,19 @@ protected List createOperationsStubInitExpr( .setReturnType(operationsStubClassVarExpr.type()) .build()) .build()); + return exprs; + } + + private Map parseCustomHttpBindings(GapicContext context) { + Map customHttpBindings = new HashMap<>(); + com.google.api.Service service = context.serviceYamlProto(); + for (HttpRule httpRule : service.getHttp().getRulesList()) { + String selector = httpRule.getSelector(); + if (selector.contains(LRO_NAME_PREFIX)) { + customHttpBindings.put(selector, httpRule.getGet()); + } + } + return customHttpBindings; } @Override diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 23ddf5a858..6bd54d28b7 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -70,10 +70,14 @@ *

This class is for advanced usage and reflects the underlying API directly. */ public class HttpJsonOperationsStub extends OperationsStub { - private static final Pattern CLIENT_PACKAGE_VERSION_PATTERN = + private static final Pattern CLIENT_PACKAGE_VERSION_PATTERN = Pattern.compile("\\.(?v\\d+[a-zA-Z]*\\d*[a-zA-Z]*\\d*)\\.[\\w.]*stub"); + private static final String LRO_LIST_OPERATIONS = "google.longrunning.Operations.ListOperations"; + private static final String LRO_GET_OPERATION = "google.longrunning.Operations.GetOperation"; + private static final String LRO_DELETE_OPERATION = "google.longrunning.Operations.DeleteOperation"; + private static final String LRO_CANCEL_OPERATION = "google.longrunning.Operations.CancelOperation"; - private static ApiMethodDescriptor + private static ApiMethodDescriptor listOperationsMethodDescriptor = ApiMethodDescriptor.newBuilder() .setFullMethodName("google.longrunning.Operations/ListOperations") @@ -198,43 +202,44 @@ public class HttpJsonOperationsStub extends OperationsStub { private final HttpJsonStubCallableFactory callableFactory; public static final HttpJsonOperationsStub create( - OperationsStubSettings settings, Map customOperationPaths) + OperationsStubSettings settings, Map customOperationHttpBindings) throws IOException { return new HttpJsonOperationsStub( - settings, ClientContext.create(settings), customOperationPaths); + settings, ClientContext.create(settings), customOperationHttpBindings); } public static final HttpJsonOperationsStub create( - ClientContext clientContext, Map customOperationPaths) throws IOException { + ClientContext clientContext, Map customOperationHttpBindings) + throws IOException { return new HttpJsonOperationsStub( - OperationsStubSettings.newBuilder().build(), clientContext, customOperationPaths); + OperationsStubSettings.newBuilder().build(), clientContext, customOperationHttpBindings); } public static final HttpJsonOperationsStub create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, - Map customOperationPaths) + Map customOperationHttpBindings) throws IOException { return new HttpJsonOperationsStub( OperationsStubSettings.newBuilder().build(), clientContext, callableFactory, TypeRegistry.getEmptyTypeRegistry(), - customOperationPaths); + customOperationHttpBindings); } public static final HttpJsonOperationsStub create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, TypeRegistry typeRegistry, - Map customOperationPaths) + Map customOperationHttpBindings) throws IOException { return new HttpJsonOperationsStub( OperationsStubSettings.newBuilder().build(), clientContext, callableFactory, typeRegistry, - customOperationPaths); + customOperationHttpBindings); } /** @@ -245,14 +250,14 @@ public static final HttpJsonOperationsStub create( protected HttpJsonOperationsStub( OperationsStubSettings settings, ClientContext clientContext, - Map customOperationPaths) + Map customOperationHttpBindings) throws IOException { this( settings, clientContext, new HttpJsonOperationsCallableFactory(), TypeRegistry.getEmptyTypeRegistry(), - customOperationPaths); + customOperationHttpBindings); } /** @@ -265,7 +270,7 @@ protected HttpJsonOperationsStub( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, TypeRegistry typeRegistry, - Map customOperationPaths) + Map customOperationHttpBindings) throws IOException { this.callableFactory = callableFactory; @@ -274,7 +279,7 @@ protected HttpJsonOperationsStub( String apiVersion = packageMatcher.find() ? packageMatcher.group("version") : null; - updateDefaultOperationApiMethodDescriptors(customOperationPaths); + updateDefaultOperationApiMethodDescriptors(customOperationHttpBindings); HttpJsonCallSettings listOperationsTransportSettings = @@ -328,15 +333,15 @@ protected HttpJsonOperationsStub( } private static void updateDefaultOperationApiMethodDescriptors( - Map customOperationPath) { - if (customOperationPath.containsKey("google.longrunning.Operations.ListOperations")) { + Map customOperationHttpBindings) { + if (customOperationHttpBindings.containsKey(LRO_LIST_OPERATIONS)) { listOperationsMethodDescriptor = listOperationsMethodDescriptor .toBuilder() .setRequestFormatter( ProtoMessageRequestFormatter.newBuilder() .setPath( - customOperationPath.get("ListOperations"), + customOperationHttpBindings.get(LRO_LIST_OPERATIONS), request -> { Map fields = new HashMap<>(); ProtoRestSerializer serializer = @@ -359,14 +364,14 @@ private static void updateDefaultOperationApiMethodDescriptors( .build(); } - if (customOperationPath.containsKey("google.longrunning.Operations.GetOperation")) { + if (customOperationHttpBindings.containsKey(LRO_GET_OPERATION)) { getOperationMethodDescriptor = getOperationMethodDescriptor .toBuilder() .setRequestFormatter( ProtoMessageRequestFormatter.newBuilder() .setPath( - customOperationPath.get("google.longrunning.Operations.GetOperation"), + customOperationHttpBindings.get(LRO_GET_OPERATION), request -> { Map fields = new HashMap<>(); ProtoRestSerializer serializer = @@ -380,14 +385,14 @@ private static void updateDefaultOperationApiMethodDescriptors( .build(); } - if (customOperationPath.containsKey("google.longrunning.Operations.DeleteOperation")) { + if (customOperationHttpBindings.containsKey(LRO_DELETE_OPERATION)) { deleteOperationMethodDescriptor = deleteOperationMethodDescriptor .toBuilder() .setRequestFormatter( ProtoMessageRequestFormatter.newBuilder() .setPath( - customOperationPath.get("google.longrunning.Operations.DeleteOperation"), + customOperationHttpBindings.get(LRO_DELETE_OPERATION), request -> { Map fields = new HashMap<>(); ProtoRestSerializer serializer = @@ -401,14 +406,14 @@ private static void updateDefaultOperationApiMethodDescriptors( .build(); } - if (customOperationPath.containsKey("google.longrunning.Operations.CancelOperation")) { + if (customOperationHttpBindings.containsKey(LRO_CANCEL_OPERATION)) { cancelOperationMethodDescriptor = cancelOperationMethodDescriptor .toBuilder() .setRequestFormatter( ProtoMessageRequestFormatter.newBuilder() .setPath( - customOperationPath.get("google.longrunning.Operations.CancelOperation"), + customOperationHttpBindings.get(LRO_CANCEL_OPERATION), request -> { Map fields = new HashMap<>(); ProtoRestSerializer serializer = From a6930854acc3dda56e91d7eb9aa97fc6a1dd3a72 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 31 Jan 2023 17:13:48 -0500 Subject: [PATCH 03/82] fix: Use static Map for custom Operation REST Http Bindings --- ...ractTransportServiceStubClassComposer.java | 9 ++ .../HttpJsonServiceStubClassComposer.java | 117 +++++++++++------- .../stub/HttpJsonOperationsStub.java | 16 +-- 3 files changed, 90 insertions(+), 52 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 b566ed5a18..093c03d85d 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 @@ -188,6 +188,7 @@ public GapicClass generate(GapicContext context, Service service) { Map messageTypes = context.messages(); List classStatements = createClassStatements( + context, service, protoMethodNameToDescriptorVarExprs, callableClassMemberVarExprs, @@ -278,6 +279,7 @@ protected List createTypeRegistry(Service service) { } protected List createClassStatements( + GapicContext context, Service service, Map protoMethodNameToDescriptorVarExprs, Map callableClassMemberVarExprs, @@ -298,6 +300,9 @@ protected List createClassStatements( classStatements.add(EMPTY_LINE_STATEMENT); } + classStatements.addAll(createOperationCustomHttpBindingsMapDeclaration(context)); + classStatements.add(EMPTY_LINE_STATEMENT); + classStatements.addAll(createClassMemberFieldDeclarations(callableClassMemberVarExprs)); classStatements.add(EMPTY_LINE_STATEMENT); @@ -307,6 +312,10 @@ protected List createClassStatements( return classStatements; } + protected List createOperationCustomHttpBindingsMapDeclaration(GapicContext context) { + return new ArrayList<>(); + } + protected List createMethodDescriptorVariableDecls( Service service, Map protoMethodNameToDescriptorVarExprs, 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 d11c4cb2f5..b532b32cb8 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 @@ -64,6 +64,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.BiMap; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.google.protobuf.TypeRegistry; import java.util.ArrayList; import java.util.Arrays; @@ -90,6 +91,15 @@ public class HttpJsonServiceStubClassComposer extends AbstractTransportServiceSt .setType(FIXED_REST_TYPESTORE.get(TypeRegistry.class.getSimpleName())) .build()) .build(); + + private static final VariableExpr OPERATION_CUSTOM_HTTP_BINDINGS = + VariableExpr.builder() + .setVariable( + Variable.builder() + .setName("operationCustomHttpBindings") + .setType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) + .build()) + .build(); private static final String LRO_NAME_PREFIX = "google.longrunning.Operations"; protected HttpJsonServiceStubClassComposer() { @@ -112,6 +122,7 @@ private static TypeStore createStaticTypes() { HttpJsonOperationSnapshot.class, HttpJsonStubCallableFactory.class, Map.class, + ImmutableMap.class, ProtoMessageRequestFormatter.class, ProtoMessageResponseParser.class, ProtoRestSerializer.class, @@ -123,6 +134,65 @@ protected boolean generateOperationsStubLogic(Service service) { return service.hasLroMethods(); } + @Override + protected List createOperationCustomHttpBindingsMapDeclaration(GapicContext context) { + VariableExpr operationCustomHttpBindingsVarExpr = + VariableExpr.withVariable( + Variable.builder() + .setType( + TypeNode.withReference( + ConcreteReference.builder() + .setClazz(Map.class) + .setGenerics( + Arrays.asList( + ConcreteReference.withClazz(String.class), + ConcreteReference.withClazz(String.class))) + .build())) + .setName("operationCustomHttpBindings") + .build()) + .toBuilder() + .setIsDecl(true) + .setIsStatic(true) + .setScope(ScopeNode.PRIVATE) + .setIsFinal(true) + .build(); + + Expr operationCustomHttpBindingsBuilderExpr = + MethodInvocationExpr.builder() + .setStaticReferenceType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) + .setMethodName("builder") + .setGenerics(Arrays.asList(TypeNode.STRING.reference(), TypeNode.STRING.reference())) + .build(); + + for (Map.Entry entrySet : parseCustomHttpBindings(context).entrySet()) { + String selector = entrySet.getKey(); + String path = entrySet.getValue(); + operationCustomHttpBindingsBuilderExpr = + MethodInvocationExpr.builder() + .setExprReferenceExpr(operationCustomHttpBindingsBuilderExpr) + .setMethodName("put") + .setArguments( + Arrays.asList( + ValueExpr.withValue(StringObjectValue.withValue(selector)), + ValueExpr.withValue(StringObjectValue.withValue(path)))) + .build(); + } + + operationCustomHttpBindingsBuilderExpr = + MethodInvocationExpr.builder() + .setExprReferenceExpr(operationCustomHttpBindingsBuilderExpr) + .setMethodName("build") + .setReturnType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) + .build(); + + return Collections.singletonList( + ExprStatement.withExpr( + AssignmentExpr.builder() + .setVariableExpr(operationCustomHttpBindingsVarExpr) + .setValueExpr(operationCustomHttpBindingsBuilderExpr) + .build())); + } + @Override protected Statement createMethodDescriptorVariableDecl( Service service, @@ -1091,51 +1161,9 @@ protected List createOperationsStubInitExpr( if (standardOpStub.equals(operationsStubType.reference().fullName())) { arguments.add(TYPE_REGISTRY_VAR_EXPR); } + arguments.add(OPERATION_CUSTOM_HTTP_BINDINGS); - List exprs = new ArrayList<>(); - VariableExpr customHttpBindingsVarExpr = - VariableExpr.withVariable( - Variable.builder() - .setType( - TypeNode.withReference( - ConcreteReference.builder() - .setClazz(Map.class) - .setGenerics( - Arrays.asList( - ConcreteReference.withClazz(String.class), - ConcreteReference.withClazz(String.class))) - .build())) - .setName("customHttpBindingsMap") - .build()); - AssignmentExpr customHttpBindingsAssignmentExpr = - AssignmentExpr.builder() - .setVariableExpr(customHttpBindingsVarExpr.toBuilder().setIsDecl(true).build()) - .setValueExpr( - NewObjectExpr.builder() - .setType(FIXED_REST_TYPESTORE.get("HashMap")) - .setIsGeneric(true) - .build()) - .build(); - - exprs.add(customHttpBindingsAssignmentExpr); - Map operationCustomHttpBindings = parseCustomHttpBindings(context); - for (Map.Entry entrySet : operationCustomHttpBindings.entrySet()) { - String selector = entrySet.getKey(); - String path = entrySet.getValue(); - exprs.add( - MethodInvocationExpr.builder() - .setExprReferenceExpr(customHttpBindingsVarExpr) - .setMethodName("put") - .setArguments( - Arrays.asList( - ValueExpr.withValue(StringObjectValue.withValue(selector)), - ValueExpr.withValue(StringObjectValue.withValue(path)))) - .build()); - } - - arguments.add(customHttpBindingsVarExpr); - - exprs.add( + return Collections.singletonList( AssignmentExpr.builder() .setVariableExpr( operationsStubClassVarExpr.toBuilder().setExprReferenceExpr(thisExpr).build()) @@ -1147,7 +1175,6 @@ protected List createOperationsStubInitExpr( .setReturnType(operationsStubClassVarExpr.type()) .build()) .build()); - return exprs; } private Map parseCustomHttpBindings(GapicContext context) { diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 6bd54d28b7..e7775f3c91 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -70,14 +70,16 @@ *

This class is for advanced usage and reflects the underlying API directly. */ public class HttpJsonOperationsStub extends OperationsStub { - private static final Pattern CLIENT_PACKAGE_VERSION_PATTERN = + private static final Pattern CLIENT_PACKAGE_VERSION_PATTERN = Pattern.compile("\\.(?v\\d+[a-zA-Z]*\\d*[a-zA-Z]*\\d*)\\.[\\w.]*stub"); - private static final String LRO_LIST_OPERATIONS = "google.longrunning.Operations.ListOperations"; - private static final String LRO_GET_OPERATION = "google.longrunning.Operations.GetOperation"; - private static final String LRO_DELETE_OPERATION = "google.longrunning.Operations.DeleteOperation"; - private static final String LRO_CANCEL_OPERATION = "google.longrunning.Operations.CancelOperation"; - - private static ApiMethodDescriptor + private static final String LRO_LIST_OPERATIONS = "google.longrunning.Operations.ListOperations"; + private static final String LRO_GET_OPERATION = "google.longrunning.Operations.GetOperation"; + private static final String LRO_DELETE_OPERATION = + "google.longrunning.Operations.DeleteOperation"; + private static final String LRO_CANCEL_OPERATION = + "google.longrunning.Operations.CancelOperation"; + + private static ApiMethodDescriptor listOperationsMethodDescriptor = ApiMethodDescriptor.newBuilder() .setFullMethodName("google.longrunning.Operations/ListOperations") From f4baa0a9bd90fc0cd4f418dd8d9aa2bd43308f38 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 31 Jan 2023 17:30:34 -0500 Subject: [PATCH 04/82] chore: Update golden test cases --- .../rest/HttpJsonServiceStubClassComposer.java | 10 ++++++---- .../composer/grpcrest/goldens/HttpJsonEchoStub.golden | 7 ++++++- .../rest/goldens/HttpJsonComplianceStub.golden | 4 ++++ 3 files changed, 16 insertions(+), 5 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 b532b32cb8..92090582d1 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 @@ -1180,10 +1180,12 @@ protected List createOperationsStubInitExpr( private Map parseCustomHttpBindings(GapicContext context) { Map customHttpBindings = new HashMap<>(); com.google.api.Service service = context.serviceYamlProto(); - for (HttpRule httpRule : service.getHttp().getRulesList()) { - String selector = httpRule.getSelector(); - if (selector.contains(LRO_NAME_PREFIX)) { - customHttpBindings.put(selector, httpRule.getGet()); + if (service != null && service.getHttp() != null) { + for (HttpRule httpRule : service.getHttp().getRulesList()) { + String selector = httpRule.getSelector(); + if (selector.contains(LRO_NAME_PREFIX)) { + customHttpBindings.put(selector, httpRule.getGet()); + } } } return customHttpBindings; 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 d027d9ed10..d42d0dbd62 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 @@ -21,6 +21,7 @@ import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.OperationCallable; import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.UnaryCallable; +import com.google.common.collect.ImmutableMap; import com.google.longrunning.Operation; import com.google.protobuf.TypeRegistry; import com.google.showcase.grpcrest.v1beta1.BlockRequest; @@ -330,6 +331,9 @@ public class HttpJsonEchoStub extends EchoStub { .build()) .build(); + private static final Map operationCustomHttpBindings = + ImmutableMap.builder().build(); + private final UnaryCallable echoCallable; private final ServerStreamingCallable expandCallable; private final UnaryCallable pagedExpandCallable; @@ -382,7 +386,8 @@ public class HttpJsonEchoStub extends EchoStub { throws IOException { this.callableFactory = callableFactory; this.httpJsonOperationsStub = - HttpJsonOperationsStub.create(clientContext, callableFactory, typeRegistry); + HttpJsonOperationsStub.create( + clientContext, callableFactory, typeRegistry, operationCustomHttpBindings); HttpJsonCallSettings echoTransportSettings = HttpJsonCallSettings.newBuilder() diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonComplianceStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonComplianceStub.golden index bf282ba988..f686841c82 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonComplianceStub.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonComplianceStub.golden @@ -12,6 +12,7 @@ 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.common.collect.ImmutableMap; import com.google.protobuf.TypeRegistry; import com.google.showcase.v1beta1.EnumRequest; import com.google.showcase.v1beta1.EnumResponse; @@ -350,6 +351,9 @@ public class HttpJsonComplianceStub extends ComplianceStub { .build()) .build(); + private static final Map operationCustomHttpBindings = + ImmutableMap.builder().build(); + private final UnaryCallable repeatDataBodyCallable; private final UnaryCallable repeatDataBodyInfoCallable; private final UnaryCallable repeatDataQueryCallable; From 7bde2cfdd276f53ad69007321e03a49779240b1d Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 31 Jan 2023 18:01:58 -0500 Subject: [PATCH 05/82] chore: Update showcase tests --- .../rest/HttpJsonServiceStubClassComposer.java | 15 ++++++++++++++- .../v1beta1/stub/HttpJsonComplianceStub.java | 11 +++++++++++ .../showcase/v1beta1/stub/HttpJsonEchoStub.java | 14 +++++++++++++- .../v1beta1/stub/HttpJsonIdentityStub.java | 11 +++++++++++ .../v1beta1/stub/HttpJsonMessagingStub.java | 14 +++++++++++++- .../v1beta1/stub/HttpJsonSequenceServiceStub.java | 11 +++++++++++ .../v1beta1/stub/HttpJsonTestingStub.java | 11 +++++++++++ 7 files changed, 84 insertions(+), 3 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 92090582d1..421da9ee7c 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 @@ -100,6 +100,19 @@ public class HttpJsonServiceStubClassComposer extends AbstractTransportServiceSt .setType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) .build()) .build(); + + private static final String LRO_LIST_OPERATIONS = "google.longrunning.Operations.ListOperations"; + private static final String LRO_GET_OPERATION = "google.longrunning.Operations.GetOperation"; + private static final String LRO_DELETE_OPERATION = + "google.longrunning.Operations.DeleteOperation"; + private static final String LRO_CANCEL_OPERATION = + "google.longrunning.Operations.CancelOperation"; + + private static final Map> HTTP_RULE_OPERATION = ImmutableMap.>builder() + .put(LRO_LIST_OPERATIONS, HttpRule::getGet) + .put(LRO_GET_OPERATION, HttpRule::getGet) + .put(LRO_DELETE_OPERATION, HttpRule::getDelete) + .put(LRO_CANCEL_OPERATION, HttpRule::getPost).build(); private static final String LRO_NAME_PREFIX = "google.longrunning.Operations"; protected HttpJsonServiceStubClassComposer() { @@ -1184,7 +1197,7 @@ private Map parseCustomHttpBindings(GapicContext context) { for (HttpRule httpRule : service.getHttp().getRulesList()) { String selector = httpRule.getSelector(); if (selector.contains(LRO_NAME_PREFIX)) { - customHttpBindings.put(selector, httpRule.getGet()); + customHttpBindings.put(selector, HTTP_RULE_OPERATION.get(selector).apply(httpRule)); } } } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonComplianceStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonComplianceStub.java index 5fd2556f89..e03972ab58 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonComplianceStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonComplianceStub.java @@ -28,6 +28,7 @@ import com.google.api.gax.httpjson.ProtoRestSerializer; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.UnaryCallable; +import com.google.common.collect.ImmutableMap; import com.google.protobuf.TypeRegistry; import com.google.showcase.v1beta1.EnumRequest; import com.google.showcase.v1beta1.EnumResponse; @@ -516,6 +517,16 @@ public class HttpJsonComplianceStub extends ComplianceStub { .build()) .build(); + private static final Map operationCustomHttpBindings = + ImmutableMap.builder() + .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") + .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") + .put("google.longrunning.Operations.DeleteOperation", "/v1beta1/{name=operations/**}") + .put( + "google.longrunning.Operations.CancelOperation", + "/v1beta1/{name=operations/**}:cancel") + .build(); + private final UnaryCallable repeatDataBodyCallable; private final UnaryCallable repeatDataBodyInfoCallable; private final UnaryCallable repeatDataQueryCallable; 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 ed6ea0f01f..be6a0aecba 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 @@ -38,6 +38,7 @@ import com.google.api.gax.rpc.OperationCallable; import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.UnaryCallable; +import com.google.common.collect.ImmutableMap; import com.google.longrunning.Operation; import com.google.protobuf.TypeRegistry; import com.google.showcase.v1beta1.BlockRequest; @@ -320,6 +321,16 @@ public class HttpJsonEchoStub extends EchoStub { .build()) .build(); + private static final Map operationCustomHttpBindings = + ImmutableMap.builder() + .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") + .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") + .put("google.longrunning.Operations.DeleteOperation", "/v1beta1/{name=operations/**}") + .put( + "google.longrunning.Operations.CancelOperation", + "/v1beta1/{name=operations/**}:cancel") + .build(); + private final UnaryCallable echoCallable; private final ServerStreamingCallable expandCallable; private final UnaryCallable pagedExpandCallable; @@ -373,7 +384,8 @@ protected HttpJsonEchoStub( throws IOException { this.callableFactory = callableFactory; this.httpJsonOperationsStub = - HttpJsonOperationsStub.create(clientContext, callableFactory, typeRegistry); + HttpJsonOperationsStub.create( + clientContext, callableFactory, typeRegistry, operationCustomHttpBindings); HttpJsonCallSettings echoTransportSettings = HttpJsonCallSettings.newBuilder() diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonIdentityStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonIdentityStub.java index 528858e711..72e48134c4 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonIdentityStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonIdentityStub.java @@ -30,6 +30,7 @@ import com.google.api.gax.httpjson.ProtoRestSerializer; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.UnaryCallable; +import com.google.common.collect.ImmutableMap; import com.google.protobuf.Empty; import com.google.protobuf.TypeRegistry; import com.google.showcase.v1beta1.CreateUserRequest; @@ -230,6 +231,16 @@ public class HttpJsonIdentityStub extends IdentityStub { .build()) .build(); + private static final Map operationCustomHttpBindings = + ImmutableMap.builder() + .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") + .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") + .put("google.longrunning.Operations.DeleteOperation", "/v1beta1/{name=operations/**}") + .put( + "google.longrunning.Operations.CancelOperation", + "/v1beta1/{name=operations/**}:cancel") + .build(); + private final UnaryCallable createUserCallable; private final UnaryCallable getUserCallable; private final UnaryCallable updateUserCallable; 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 4eba21b87f..c3e962b5aa 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 @@ -38,6 +38,7 @@ import com.google.api.gax.rpc.OperationCallable; import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.UnaryCallable; +import com.google.common.collect.ImmutableMap; import com.google.longrunning.Operation; import com.google.protobuf.Empty; import com.google.protobuf.TypeRegistry; @@ -515,6 +516,16 @@ public class HttpJsonMessagingStub extends MessagingStub { .build()) .build(); + private static final Map operationCustomHttpBindings = + ImmutableMap.builder() + .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") + .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") + .put("google.longrunning.Operations.DeleteOperation", "/v1beta1/{name=operations/**}") + .put( + "google.longrunning.Operations.CancelOperation", + "/v1beta1/{name=operations/**}:cancel") + .build(); + private final UnaryCallable createRoomCallable; private final UnaryCallable getRoomCallable; private final UnaryCallable updateRoomCallable; @@ -575,7 +586,8 @@ protected HttpJsonMessagingStub( throws IOException { this.callableFactory = callableFactory; this.httpJsonOperationsStub = - HttpJsonOperationsStub.create(clientContext, callableFactory, typeRegistry); + HttpJsonOperationsStub.create( + clientContext, callableFactory, typeRegistry, operationCustomHttpBindings); HttpJsonCallSettings createRoomTransportSettings = HttpJsonCallSettings.newBuilder() diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonSequenceServiceStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonSequenceServiceStub.java index c2522b9648..1d8be13061 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonSequenceServiceStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonSequenceServiceStub.java @@ -28,6 +28,7 @@ import com.google.api.gax.httpjson.ProtoRestSerializer; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.UnaryCallable; +import com.google.common.collect.ImmutableMap; import com.google.protobuf.Empty; import com.google.protobuf.TypeRegistry; import com.google.showcase.v1beta1.AttemptSequenceRequest; @@ -161,6 +162,16 @@ public class HttpJsonSequenceServiceStub extends SequenceServiceStub { .build()) .build(); + private static final Map operationCustomHttpBindings = + ImmutableMap.builder() + .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") + .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") + .put("google.longrunning.Operations.DeleteOperation", "/v1beta1/{name=operations/**}") + .put( + "google.longrunning.Operations.CancelOperation", + "/v1beta1/{name=operations/**}:cancel") + .build(); + private final UnaryCallable createSequenceCallable; private final UnaryCallable getSequenceReportCallable; private final UnaryCallable attemptSequenceCallable; diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonTestingStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonTestingStub.java index eb1a664bb0..bfbe03e67f 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonTestingStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonTestingStub.java @@ -31,6 +31,7 @@ import com.google.api.gax.httpjson.ProtoRestSerializer; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.UnaryCallable; +import com.google.common.collect.ImmutableMap; import com.google.protobuf.Empty; import com.google.protobuf.TypeRegistry; import com.google.showcase.v1beta1.CreateSessionRequest; @@ -342,6 +343,16 @@ public class HttpJsonTestingStub extends TestingStub { .build()) .build(); + private static final Map operationCustomHttpBindings = + ImmutableMap.builder() + .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") + .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") + .put("google.longrunning.Operations.DeleteOperation", "/v1beta1/{name=operations/**}") + .put( + "google.longrunning.Operations.CancelOperation", + "/v1beta1/{name=operations/**}:cancel") + .build(); + private final UnaryCallable createSessionCallable; private final UnaryCallable getSessionCallable; private final UnaryCallable listSessionsCallable; From a3527e1c18a6dfda339177991ba8d0825e524a3b Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 31 Jan 2023 18:10:44 -0500 Subject: [PATCH 06/82] chore: Update golden ITs --- .../stub/HttpJsonConnectionServiceStub.java | 4 ++++ .../v1/stub/HttpJsonAssetServiceStub.java | 7 ++++++- .../v1small/stub/HttpJsonAddressesStub.java | 7 ++++++- .../stub/HttpJsonRegionOperationsStub.java | 4 ++++ .../v1/stub/HttpJsonIamCredentialsStub.java | 4 ++++ .../v1/stub/HttpJsonLibraryServiceStub.java | 4 ++++ .../v1beta1/stub/HttpJsonCloudRedisStub.java | 20 ++++++++++++++++++- 7 files changed, 47 insertions(+), 3 deletions(-) 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 index 1c5701c575..6eb185bf12 100644 --- 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 @@ -32,6 +32,7 @@ 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.protobuf.TypeRegistry; import java.io.IOException; import java.util.ArrayList; @@ -88,6 +89,9 @@ public class HttpJsonConnectionServiceStub extends ConnectionServiceStub { .build()) .build(); + private static final Map operationCustomHttpBindings = + ImmutableMap.builder().build(); + private final UnaryCallable listConnectionsCallable; private final UnaryCallable diff --git a/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/HttpJsonAssetServiceStub.java b/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/HttpJsonAssetServiceStub.java index 4e07ddd7e0..213bc3cf9f 100644 --- a/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/HttpJsonAssetServiceStub.java +++ b/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/HttpJsonAssetServiceStub.java @@ -72,6 +72,7 @@ import com.google.cloud.asset.v1.SearchAllResourcesResponse; import com.google.cloud.asset.v1.UpdateFeedRequest; import com.google.cloud.asset.v1.UpdateSavedQueryRequest; +import com.google.common.collect.ImmutableMap; import com.google.longrunning.Operation; import com.google.protobuf.Empty; import com.google.protobuf.TypeRegistry; @@ -863,6 +864,9 @@ public class HttpJsonAssetServiceStub extends AssetServiceStub { .build()) .build(); + private static final Map operationCustomHttpBindings = + ImmutableMap.builder().build(); + private final UnaryCallable exportAssetsCallable; private final OperationCallable exportAssetsOperationCallable; @@ -949,7 +953,8 @@ protected HttpJsonAssetServiceStub( throws IOException { this.callableFactory = callableFactory; this.httpJsonOperationsStub = - HttpJsonOperationsStub.create(clientContext, callableFactory, typeRegistry); + HttpJsonOperationsStub.create( + clientContext, callableFactory, typeRegistry, operationCustomHttpBindings); HttpJsonCallSettings exportAssetsTransportSettings = HttpJsonCallSettings.newBuilder() diff --git a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonAddressesStub.java b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonAddressesStub.java index b040b1a5d8..c55d106606 100644 --- a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonAddressesStub.java +++ b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonAddressesStub.java @@ -42,6 +42,7 @@ import com.google.cloud.compute.v1small.ListAddressesRequest; import com.google.cloud.compute.v1small.Operation; import com.google.cloud.compute.v1small.Operation.Status; +import com.google.common.collect.ImmutableMap; import com.google.protobuf.TypeRegistry; import java.io.IOException; import java.util.ArrayList; @@ -258,6 +259,9 @@ public class HttpJsonAddressesStub extends AddressesStub { .build()) .build(); + private static final Map operationCustomHttpBindings = + ImmutableMap.builder().build(); + private final UnaryCallable aggregatedListCallable; private final UnaryCallable @@ -312,7 +316,8 @@ protected HttpJsonAddressesStub( throws IOException { this.callableFactory = callableFactory; this.httpJsonOperationsStub = - HttpJsonRegionOperationsStub.create(clientContext, callableFactory); + HttpJsonRegionOperationsStub.create( + clientContext, callableFactory, operationCustomHttpBindings); HttpJsonCallSettings aggregatedListTransportSettings = diff --git a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonRegionOperationsStub.java b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonRegionOperationsStub.java index 9e3ae4468e..3b4cd73c7b 100644 --- a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonRegionOperationsStub.java +++ b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonRegionOperationsStub.java @@ -36,6 +36,7 @@ import com.google.cloud.compute.v1small.Operation; import com.google.cloud.compute.v1small.Operation.Status; import com.google.cloud.compute.v1small.WaitRegionOperationRequest; +import com.google.common.collect.ImmutableMap; import com.google.protobuf.TypeRegistry; import java.io.IOException; import java.util.ArrayList; @@ -147,6 +148,9 @@ public class HttpJsonRegionOperationsStub extends RegionOperationsStub { .build()) .build(); + private static final Map operationCustomHttpBindings = + ImmutableMap.builder().build(); + private final UnaryCallable getCallable; private final UnaryCallable waitCallable; diff --git a/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/HttpJsonIamCredentialsStub.java b/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/HttpJsonIamCredentialsStub.java index 775ed7b4fe..f0b6871772 100644 --- a/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/HttpJsonIamCredentialsStub.java +++ b/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/HttpJsonIamCredentialsStub.java @@ -36,6 +36,7 @@ import com.google.cloud.iam.credentials.v1.SignBlobResponse; import com.google.cloud.iam.credentials.v1.SignJwtRequest; import com.google.cloud.iam.credentials.v1.SignJwtResponse; +import com.google.common.collect.ImmutableMap; import com.google.protobuf.TypeRegistry; import java.io.IOException; import java.util.ArrayList; @@ -204,6 +205,9 @@ public class HttpJsonIamCredentialsStub extends IamCredentialsStub { .build()) .build(); + private static final Map operationCustomHttpBindings = + ImmutableMap.builder().build(); + private final UnaryCallable generateAccessTokenCallable; private final UnaryCallable diff --git a/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/HttpJsonLibraryServiceStub.java b/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/HttpJsonLibraryServiceStub.java index 4e1cec309a..c32c866548 100644 --- a/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/HttpJsonLibraryServiceStub.java +++ b/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/HttpJsonLibraryServiceStub.java @@ -31,6 +31,7 @@ import com.google.api.gax.httpjson.ProtoRestSerializer; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.UnaryCallable; +import com.google.common.collect.ImmutableMap; import com.google.example.library.v1.Book; import com.google.example.library.v1.CreateBookRequest; import com.google.example.library.v1.CreateShelfRequest; @@ -448,6 +449,9 @@ public class HttpJsonLibraryServiceStub extends LibraryServiceStub { .build()) .build(); + private static final Map operationCustomHttpBindings = + ImmutableMap.builder().build(); + private final UnaryCallable createShelfCallable; private final UnaryCallable getShelfCallable; private final UnaryCallable listShelvesCallable; diff --git a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java index aac829bf6f..762980a601 100644 --- a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java +++ b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java @@ -48,6 +48,7 @@ import com.google.cloud.redis.v1beta1.RescheduleMaintenanceRequest; import com.google.cloud.redis.v1beta1.UpdateInstanceRequest; import com.google.cloud.redis.v1beta1.UpgradeInstanceRequest; +import com.google.common.collect.ImmutableMap; import com.google.longrunning.Operation; import com.google.protobuf.Any; import com.google.protobuf.Empty; @@ -500,6 +501,22 @@ public class HttpJsonCloudRedisStub extends CloudRedisStub { HttpJsonOperationSnapshot.create(response)) .build(); + private static final Map operationCustomHttpBindings = + ImmutableMap.builder() + .put( + "google.longrunning.Operations.GetOperation", + "/v1beta1/{name=projects/*/locations/*/operations/*}") + .put( + "google.longrunning.Operations.ListOperations", + "/v1beta1/{name=projects/*/locations/*}/operations") + .put( + "google.longrunning.Operations.DeleteOperation", + "/v1beta1/{name=projects/*/locations/*/operations/*}") + .put( + "google.longrunning.Operations.CancelOperation", + "/v1beta1/{name=projects/*/locations/*/operations/*}:cancel") + .build(); + private final UnaryCallable listInstancesCallable; private final UnaryCallable listInstancesPagedCallable; @@ -575,7 +592,8 @@ protected HttpJsonCloudRedisStub( throws IOException { this.callableFactory = callableFactory; this.httpJsonOperationsStub = - HttpJsonOperationsStub.create(clientContext, callableFactory, typeRegistry); + HttpJsonOperationsStub.create( + clientContext, callableFactory, typeRegistry, operationCustomHttpBindings); HttpJsonCallSettings listInstancesTransportSettings = From 2e1acbc89f59c3e1d249a6c99207d1088755b9bf Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 1 Feb 2023 13:37:03 -0500 Subject: [PATCH 07/82] chore: Add back origin HttpJsonOperationStub.create() methods --- .../stub/HttpJsonOperationsStub.java | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index e7775f3c91..497a5d3d60 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -203,6 +203,45 @@ public class HttpJsonOperationsStub extends OperationsStub { private final BackgroundResource backgroundResources; private final HttpJsonStubCallableFactory callableFactory; + public static final HttpJsonOperationsStub create( + OperationsStubSettings settings) + throws IOException { + return new HttpJsonOperationsStub( + settings, ClientContext.create(settings), new HashMap<>()); + } + + public static final HttpJsonOperationsStub create( + ClientContext clientContext) + throws IOException { + return new HttpJsonOperationsStub( + OperationsStubSettings.newBuilder().build(), clientContext, new HashMap<>()); + } + + public static final HttpJsonOperationsStub create( + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory) + throws IOException { + return new HttpJsonOperationsStub( + OperationsStubSettings.newBuilder().build(), + clientContext, + callableFactory, + TypeRegistry.getEmptyTypeRegistry(), + new HashMap<>()); + } + + public static final HttpJsonOperationsStub create( + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory, + TypeRegistry typeRegistry) + throws IOException { + return new HttpJsonOperationsStub( + OperationsStubSettings.newBuilder().build(), + clientContext, + callableFactory, + typeRegistry, + new HashMap<>()); + } + public static final HttpJsonOperationsStub create( OperationsStubSettings settings, Map customOperationHttpBindings) throws IOException { From 5f3dfe239b144866d193a8cda4bd01f2efdbdfab Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 31 Jan 2023 23:10:06 +0000 Subject: [PATCH 08/82] fix(deps): update dependency com.google.auth:google-auth-library-bom to v1.15.0 (#1278) --- gapic-generator-java-pom-parent/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gapic-generator-java-pom-parent/pom.xml b/gapic-generator-java-pom-parent/pom.xml index ff81fc1ab6..88d2bd3adb 100644 --- a/gapic-generator-java-pom-parent/pom.xml +++ b/gapic-generator-java-pom-parent/pom.xml @@ -27,7 +27,7 @@ consistent across modules in this repository --> 1.3.2 1.52.1 - 1.14.0 + 1.15.0 2.10.1 31.1-jre 3.21.12 From d8761bcff42f8292e1b99e23690d800a5edf0a21 Mon Sep 17 00:00:00 2001 From: Blake Li Date: Wed, 1 Feb 2023 09:33:44 -0500 Subject: [PATCH 09/82] doc: Update DEVELOPMENT.md for local development. (#1237) --- DEVELOPMENT.md | 142 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 100 insertions(+), 42 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index e963700c41..f813d7de4a 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -4,13 +4,23 @@ 1. Clone this repo. -2. Copy the Git pre-commit hooks. This will automatically check the build, run - tests, and perform linting before each commit. (Symlinks don't seem to work, - but if you find a way, please add it here!) +2. (OPTIONAL) Copy the Git pre-commit hooks. This will automatically check the build, run + tests, and perform linting before each commit. (Symlinks don't seem to work, + but if you find a way, please add it here!) - ```sh - cp .githooks/pre-commit .git/hooks/pre-commit - ``` + ```sh + cp .githooks/pre-commit .git/hooks/pre-commit + ``` + + ### Note: You may see this error with the pre-commits due to the monorepo migration: + ``` +[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project gapic-generator-java: Compilation failure: Compilation failure: +[ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java:[19,43] package com.google.api.gax.httpjson.testing does not exist +[ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java:[24,38] package com.google.api.gax.rpc.testing does not exist +[ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/ServiceClientTestClassComposer.java:[18,39] package com.google.api.gax.grpc.testing does not exist + ``` + Remove the pre-commit hooks. Tracking the issue in https://github.com/googleapis/gapic-generator-java/issues/1253 + 3. Install [`bazelisk`](https://github.com/bazelbuild/bazelisk) in your `PATH`. ## Code Formatting @@ -32,17 +42,17 @@ - Run all unit and integration tests. ```sh - mvn test # unit tests + mvn install # unit tests, maven test wouldn't work in root folder because gapic-generator-java is dependant on test jars of gax-java bazel test //... # integration tests ``` - Run all unit tests. ```sh - mvn test + mvn install ``` - -- Run a single or multiple unit tests: +- For running unit tests in `gapic-generator-java` submodule, first build all modules with `mvn install -DskipTests`, then `cd` into `gapic-generator-java` submodule for the following commands: + - Run a single or multiple unit tests: ```sh mvn test -Dtest=JavaCodeGeneratorTest @@ -50,32 +60,32 @@ mvn test "-Dtest=Basic*, !%regex[.*.Unstable.*], !%regex[.*.MyTest.class#one.*|two.*], %regex[#fast.*|slow.*]" ``` -- Update all unit test golden files: + - Update all unit test golden files: - ```sh - mvn test -DupdateUnitGoldens - ``` + ```sh + mvn test -DupdateUnitGoldens + ``` -- Update a single unit test golden file, for example `JavaCodeGeneratorTest.java`: + - Update a single unit test golden file, for example `JavaCodeGeneratorTest.java`: - ```sh - mvn test -DupdateUnitGoldens -Dtest=JavaCodeGeneratorTest - ``` + ```sh + mvn test -DupdateUnitGoldens -Dtest=JavaCodeGeneratorTest + ``` - Run a single integration test for API like `Redis`, it generates Java source code using the Java microgenerator and compares them with the goldens files in `test/integration/goldens/redis`. - ```sh - bazel test //test/integration:redis - ``` + ```sh + bazel test //test/integration:redis + ``` - Update integration test golden files, for example `Redis`. This clobbers all the files in `test/integration/goldens/redis`. - ```sh - bazel run //test/integration:update_redis - ``` + ```sh + bazel run //test/integration:update_redis + ``` ## Showcase Integration Testing @@ -161,40 +171,67 @@ $ cd showcase $ mvn compile -P update ``` -## Running the Plugin +## Running the Plugin under googleapis with local gapic-generator-java -See also above section "Showcase Integration Testing". +For running the Plugin with showcase protos and local gapic-generator-java, see above section "Showcase Integration Testing". To generate a production GAPIC API: 1. Clone [googleapis](https://github.com/googleapis/googleapis). -2. Point to local gapic-generator-java +2. Modify `googleapis/WORKSPACE` to point to local gapic-generator-java - Normally, googleapis's build pulls in googleapis/gapic-generator-java from the - Internet: + Normally, googleapis's build pulls in gapic-generator-java from Maven Central. + For a local run, we first need to build a local SNAPSHOT jar of the generator. Then we point googleapis to + both the local SNAPSHOT jar and the local copy of the generator. + Replace the following section in googleapis ``` - # Java microgenerator. - … - _gapic_generator_java_version = "2.1.0" - - http_archive( - name = "gapic_generator_java", - … - urls = ["https://github.com/googleapis/gapic-generator-java/archive/v%s.zip" % _gapic_generator_java_version], - ) + _gapic_generator_java_version = "2.13.0" + + maven_install( + artifacts = [ + "com.google.api:gapic-generator-java:" + _gapic_generator_java_version, + ], + #Update this False for local development + fail_on_missing_checksum = True, + repositories = [ + "m2Local", + "https://repo.maven.apache.org/maven2/", + ] + ) + + http_archive( + name = "gapic_generator_java", + strip_prefix = "gapic-generator-java-%s" % _gapic_generator_java_version, + urls = ["https://github.com/googleapis/gapic-generator-java/archive/v%s.zip" % _gapic_generator_java_version], + ) ``` - By replacing this portion using the built-in local_repository rule, you can make - it refer to your local development repo: + to ``` + _gapic_generator_java_version = "2.13.1-SNAPSHOT" + + maven_install( + artifacts = [ + "com.google.api:gapic-generator-java:" + _gapic_generator_java_version, + ], + #Update this False for local development + fail_on_missing_checksum = False, + repositories = [ + "m2Local", + "https://repo.maven.apache.org/maven2/", + ] + ) + local_repository( - name = "gapic_generator_java", - path = "/home//gapic-generator-java", + name = "gapic_generator_java", + path = "/absolute/path/to/your/local/gapic-generator-java", ) ``` + + Note: At the time of writing, the gapic-generator version was `2.13.0`. Update the version to the latest version in the pom.xml 3. Build the new target. @@ -208,5 +245,26 @@ To generate a production GAPIC API: bazel build //google/cloud/speech/v2:google-cloud-speech-v2-java ``` + Note: If you are running into bazel build issues, you can try to remove gapic-generator-java cached in your local m2 + Try running this command: + ``` + rm -rf ~/.m2/repository/com/google/api/ + ``` + and then rebuild gapic-generator-java (`mvn clean install`). + +## FAQ + +### Error in workspace: workspace() got unexpected keyword argument 'managed_directories' +Full Error: + +``` +ERROR: Traceback (most recent call last): + File "/home/alicejli/googleapis/WORKSPACE", line 1, column 10, in + workspace( +Error in workspace: workspace() got unexpected keyword argument 'managed_directories' +ERROR: Error computing the main repository mapping: Encountered error while reading extension file 'tools/build_defs/repo/http.bzl': no such package '@bazel_tools//tools/build_defs/repo': error loading package 'external': Could not load //external package +``` +You may be using the latest version of bazel which this project does not support yet. Try installing bazelisk to force +bazel to use the version specified in `.bazeliskrc` \ No newline at end of file From d837f97822b99ef9a4ee705bb6ca2aad7281d286 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 1 Feb 2023 14:39:17 -0500 Subject: [PATCH 10/82] chore: Create a default mapping in OperationStub --- .../HttpJsonServiceStubClassComposer.java | 10 +++-- .../stub/HttpJsonOperationsStub.java | 39 ------------------- .../stub/OperationsStubSettings.java | 7 +++- 3 files changed, 12 insertions(+), 44 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 421da9ee7c..406a04f01a 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 @@ -104,15 +104,17 @@ public class HttpJsonServiceStubClassComposer extends AbstractTransportServiceSt private static final String LRO_LIST_OPERATIONS = "google.longrunning.Operations.ListOperations"; private static final String LRO_GET_OPERATION = "google.longrunning.Operations.GetOperation"; private static final String LRO_DELETE_OPERATION = - "google.longrunning.Operations.DeleteOperation"; + "google.longrunning.Operations.DeleteOperation"; private static final String LRO_CANCEL_OPERATION = - "google.longrunning.Operations.CancelOperation"; + "google.longrunning.Operations.CancelOperation"; - private static final Map> HTTP_RULE_OPERATION = ImmutableMap.>builder() + private static final Map> HTTP_RULE_OPERATION = + ImmutableMap.>builder() .put(LRO_LIST_OPERATIONS, HttpRule::getGet) .put(LRO_GET_OPERATION, HttpRule::getGet) .put(LRO_DELETE_OPERATION, HttpRule::getDelete) - .put(LRO_CANCEL_OPERATION, HttpRule::getPost).build(); + .put(LRO_CANCEL_OPERATION, HttpRule::getPost) + .build(); private static final String LRO_NAME_PREFIX = "google.longrunning.Operations"; protected HttpJsonServiceStubClassComposer() { diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 497a5d3d60..e7775f3c91 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -203,45 +203,6 @@ public class HttpJsonOperationsStub extends OperationsStub { private final BackgroundResource backgroundResources; private final HttpJsonStubCallableFactory callableFactory; - public static final HttpJsonOperationsStub create( - OperationsStubSettings settings) - throws IOException { - return new HttpJsonOperationsStub( - settings, ClientContext.create(settings), new HashMap<>()); - } - - public static final HttpJsonOperationsStub create( - ClientContext clientContext) - throws IOException { - return new HttpJsonOperationsStub( - OperationsStubSettings.newBuilder().build(), clientContext, new HashMap<>()); - } - - public static final HttpJsonOperationsStub create( - ClientContext clientContext, - HttpJsonStubCallableFactory callableFactory) - throws IOException { - return new HttpJsonOperationsStub( - OperationsStubSettings.newBuilder().build(), - clientContext, - callableFactory, - TypeRegistry.getEmptyTypeRegistry(), - new HashMap<>()); - } - - public static final HttpJsonOperationsStub create( - ClientContext clientContext, - HttpJsonStubCallableFactory callableFactory, - TypeRegistry typeRegistry) - throws IOException { - return new HttpJsonOperationsStub( - OperationsStubSettings.newBuilder().build(), - clientContext, - callableFactory, - typeRegistry, - new HashMap<>()); - } - public static final HttpJsonOperationsStub create( OperationsStubSettings settings, Map customOperationHttpBindings) throws IOException { diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java index 3f722fb66e..078f8f0fec 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java @@ -66,6 +66,7 @@ import java.io.IOException; import java.util.HashMap; import java.util.List; +import java.util.Map; import org.threeten.bp.Duration; // AUTO-GENERATED DOCUMENTATION AND CLASS. @@ -188,10 +189,14 @@ public UnaryCallSettings cancelOperationSettings( } public OperationsStub createStub() throws IOException { + return createStub(new HashMap<>()); + } + + public OperationsStub createStub(Map customHttpBindings) throws IOException { if (getTransportChannelProvider() .getTransportName() .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { - return HttpJsonOperationsStub.create(this, new HashMap<>()); + return HttpJsonOperationsStub.create(this, customHttpBindings); } throw new UnsupportedOperationException( String.format( From dfd1e5a85e7ad5c9fe6a97fa7a7bc4c01c8ad4e7 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 1 Feb 2023 14:44:17 -0500 Subject: [PATCH 11/82] chore: Do not generate custom bindings if there are none --- .../composer/rest/HttpJsonServiceStubClassComposer.java | 6 +++++- 1 file changed, 5 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 406a04f01a..7a6b693d88 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 @@ -179,7 +179,11 @@ protected List createOperationCustomHttpBindingsMapDeclaration(GapicC .setGenerics(Arrays.asList(TypeNode.STRING.reference(), TypeNode.STRING.reference())) .build(); - for (Map.Entry entrySet : parseCustomHttpBindings(context).entrySet()) { + Map operationCustomHttpBindingsMap = parseCustomHttpBindings(context); + if (operationCustomHttpBindingsMap.size() == 0) { + return Collections.emptyList(); + } + for (Map.Entry entrySet : operationCustomHttpBindingsMap.entrySet()) { String selector = entrySet.getKey(); String path = entrySet.getValue(); operationCustomHttpBindingsBuilderExpr = From 0a891dc1e4c882dfc534155dba23b4c41d2aae0f Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 1 Feb 2023 14:44:26 -0500 Subject: [PATCH 12/82] chore: Update golden units --- .../gapic/composer/grpcrest/goldens/HttpJsonEchoStub.golden | 3 --- .../gapic/composer/rest/goldens/HttpJsonComplianceStub.golden | 4 ---- 2 files changed, 7 deletions(-) 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 d42d0dbd62..86028e832c 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 @@ -331,9 +331,6 @@ public class HttpJsonEchoStub extends EchoStub { .build()) .build(); - private static final Map operationCustomHttpBindings = - ImmutableMap.builder().build(); - private final UnaryCallable echoCallable; private final ServerStreamingCallable expandCallable; private final UnaryCallable pagedExpandCallable; diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonComplianceStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonComplianceStub.golden index f686841c82..bf282ba988 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonComplianceStub.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonComplianceStub.golden @@ -12,7 +12,6 @@ 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.common.collect.ImmutableMap; import com.google.protobuf.TypeRegistry; import com.google.showcase.v1beta1.EnumRequest; import com.google.showcase.v1beta1.EnumResponse; @@ -351,9 +350,6 @@ public class HttpJsonComplianceStub extends ComplianceStub { .build()) .build(); - private static final Map operationCustomHttpBindings = - ImmutableMap.builder().build(); - private final UnaryCallable repeatDataBodyCallable; private final UnaryCallable repeatDataBodyInfoCallable; private final UnaryCallable repeatDataQueryCallable; From 64fc726f54444e79fb122e962511ba1d31282429 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 1 Feb 2023 15:34:16 -0500 Subject: [PATCH 13/82] chore: Update all test cases --- .../HttpJsonServiceStubClassComposer.java | 19 ++++++++++++++++++- .../grpcrest/goldens/HttpJsonEchoStub.golden | 5 ++++- .../stub/HttpJsonConnectionServiceStub.java | 4 ---- .../v1/stub/HttpJsonAssetServiceStub.java | 8 ++++---- .../v1small/stub/HttpJsonAddressesStub.java | 5 +---- .../stub/HttpJsonRegionOperationsStub.java | 4 ---- .../v1/stub/HttpJsonIamCredentialsStub.java | 4 ---- .../v1/stub/HttpJsonLibraryServiceStub.java | 4 ---- 8 files changed, 27 insertions(+), 26 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 7a6b693d88..07b3edcade 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 @@ -1180,7 +1180,24 @@ protected List createOperationsStubInitExpr( if (standardOpStub.equals(operationsStubType.reference().fullName())) { arguments.add(TYPE_REGISTRY_VAR_EXPR); } - arguments.add(OPERATION_CUSTOM_HTTP_BINDINGS); + if (parseCustomHttpBindings(context).size() > 0) { + arguments.add(OPERATION_CUSTOM_HTTP_BINDINGS); + } else { + Expr operationCustomHttpBindingsBuilderExpr = + MethodInvocationExpr.builder() + .setStaticReferenceType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) + .setMethodName("builder") + .setGenerics(Arrays.asList(TypeNode.STRING.reference(), TypeNode.STRING.reference())) + .build(); + + operationCustomHttpBindingsBuilderExpr = + MethodInvocationExpr.builder() + .setExprReferenceExpr(operationCustomHttpBindingsBuilderExpr) + .setMethodName("build") + .setReturnType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) + .build(); + arguments.add(operationCustomHttpBindingsBuilderExpr); + } return Collections.singletonList( AssignmentExpr.builder() 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 86028e832c..216fde0495 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 @@ -384,7 +384,10 @@ public class HttpJsonEchoStub extends EchoStub { this.callableFactory = callableFactory; this.httpJsonOperationsStub = HttpJsonOperationsStub.create( - clientContext, callableFactory, typeRegistry, operationCustomHttpBindings); + clientContext, + callableFactory, + typeRegistry, + ImmutableMap.builder().build()); HttpJsonCallSettings echoTransportSettings = HttpJsonCallSettings.newBuilder() 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 index 6eb185bf12..1c5701c575 100644 --- 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 @@ -32,7 +32,6 @@ 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.protobuf.TypeRegistry; import java.io.IOException; import java.util.ArrayList; @@ -89,9 +88,6 @@ public class HttpJsonConnectionServiceStub extends ConnectionServiceStub { .build()) .build(); - private static final Map operationCustomHttpBindings = - ImmutableMap.builder().build(); - private final UnaryCallable listConnectionsCallable; private final UnaryCallable diff --git a/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/HttpJsonAssetServiceStub.java b/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/HttpJsonAssetServiceStub.java index 213bc3cf9f..bfe18b11cd 100644 --- a/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/HttpJsonAssetServiceStub.java +++ b/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/HttpJsonAssetServiceStub.java @@ -864,9 +864,6 @@ public class HttpJsonAssetServiceStub extends AssetServiceStub { .build()) .build(); - private static final Map operationCustomHttpBindings = - ImmutableMap.builder().build(); - private final UnaryCallable exportAssetsCallable; private final OperationCallable exportAssetsOperationCallable; @@ -954,7 +951,10 @@ protected HttpJsonAssetServiceStub( this.callableFactory = callableFactory; this.httpJsonOperationsStub = HttpJsonOperationsStub.create( - clientContext, callableFactory, typeRegistry, operationCustomHttpBindings); + clientContext, + callableFactory, + typeRegistry, + ImmutableMap.builder().build()); HttpJsonCallSettings exportAssetsTransportSettings = HttpJsonCallSettings.newBuilder() diff --git a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonAddressesStub.java b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonAddressesStub.java index c55d106606..033d021889 100644 --- a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonAddressesStub.java +++ b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonAddressesStub.java @@ -259,9 +259,6 @@ public class HttpJsonAddressesStub extends AddressesStub { .build()) .build(); - private static final Map operationCustomHttpBindings = - ImmutableMap.builder().build(); - private final UnaryCallable aggregatedListCallable; private final UnaryCallable @@ -317,7 +314,7 @@ protected HttpJsonAddressesStub( this.callableFactory = callableFactory; this.httpJsonOperationsStub = HttpJsonRegionOperationsStub.create( - clientContext, callableFactory, operationCustomHttpBindings); + clientContext, callableFactory, ImmutableMap.builder().build()); HttpJsonCallSettings aggregatedListTransportSettings = diff --git a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonRegionOperationsStub.java b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonRegionOperationsStub.java index 3b4cd73c7b..9e3ae4468e 100644 --- a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonRegionOperationsStub.java +++ b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonRegionOperationsStub.java @@ -36,7 +36,6 @@ import com.google.cloud.compute.v1small.Operation; import com.google.cloud.compute.v1small.Operation.Status; import com.google.cloud.compute.v1small.WaitRegionOperationRequest; -import com.google.common.collect.ImmutableMap; import com.google.protobuf.TypeRegistry; import java.io.IOException; import java.util.ArrayList; @@ -148,9 +147,6 @@ public class HttpJsonRegionOperationsStub extends RegionOperationsStub { .build()) .build(); - private static final Map operationCustomHttpBindings = - ImmutableMap.builder().build(); - private final UnaryCallable getCallable; private final UnaryCallable waitCallable; diff --git a/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/HttpJsonIamCredentialsStub.java b/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/HttpJsonIamCredentialsStub.java index f0b6871772..775ed7b4fe 100644 --- a/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/HttpJsonIamCredentialsStub.java +++ b/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/HttpJsonIamCredentialsStub.java @@ -36,7 +36,6 @@ import com.google.cloud.iam.credentials.v1.SignBlobResponse; import com.google.cloud.iam.credentials.v1.SignJwtRequest; import com.google.cloud.iam.credentials.v1.SignJwtResponse; -import com.google.common.collect.ImmutableMap; import com.google.protobuf.TypeRegistry; import java.io.IOException; import java.util.ArrayList; @@ -205,9 +204,6 @@ public class HttpJsonIamCredentialsStub extends IamCredentialsStub { .build()) .build(); - private static final Map operationCustomHttpBindings = - ImmutableMap.builder().build(); - private final UnaryCallable generateAccessTokenCallable; private final UnaryCallable diff --git a/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/HttpJsonLibraryServiceStub.java b/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/HttpJsonLibraryServiceStub.java index c32c866548..4e1cec309a 100644 --- a/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/HttpJsonLibraryServiceStub.java +++ b/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/HttpJsonLibraryServiceStub.java @@ -31,7 +31,6 @@ import com.google.api.gax.httpjson.ProtoRestSerializer; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.UnaryCallable; -import com.google.common.collect.ImmutableMap; import com.google.example.library.v1.Book; import com.google.example.library.v1.CreateBookRequest; import com.google.example.library.v1.CreateShelfRequest; @@ -449,9 +448,6 @@ public class HttpJsonLibraryServiceStub extends LibraryServiceStub { .build()) .build(); - private static final Map operationCustomHttpBindings = - ImmutableMap.builder().build(); - private final UnaryCallable createShelfCallable; private final UnaryCallable getShelfCallable; private final UnaryCallable listShelvesCallable; From 09031c827b55e063c6a6cdb3343731769ed61035 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 1 Feb 2023 15:37:09 -0500 Subject: [PATCH 14/82] chore: Fix format issues --- .../HttpJsonServiceStubClassComposer.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 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 07b3edcade..292119bd9f 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 @@ -1184,18 +1184,18 @@ protected List createOperationsStubInitExpr( arguments.add(OPERATION_CUSTOM_HTTP_BINDINGS); } else { Expr operationCustomHttpBindingsBuilderExpr = - MethodInvocationExpr.builder() - .setStaticReferenceType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) - .setMethodName("builder") - .setGenerics(Arrays.asList(TypeNode.STRING.reference(), TypeNode.STRING.reference())) - .build(); + MethodInvocationExpr.builder() + .setStaticReferenceType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) + .setMethodName("builder") + .setGenerics(Arrays.asList(TypeNode.STRING.reference(), TypeNode.STRING.reference())) + .build(); operationCustomHttpBindingsBuilderExpr = - MethodInvocationExpr.builder() - .setExprReferenceExpr(operationCustomHttpBindingsBuilderExpr) - .setMethodName("build") - .setReturnType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) - .build(); + MethodInvocationExpr.builder() + .setExprReferenceExpr(operationCustomHttpBindingsBuilderExpr) + .setMethodName("build") + .setReturnType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) + .build(); arguments.add(operationCustomHttpBindingsBuilderExpr); } From 568ad449392ada32164c20277072c515a6cae50e Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 1 Feb 2023 17:49:23 -0500 Subject: [PATCH 15/82] fix: remove constant operation binding field --- ...ractTransportServiceStubClassComposer.java | 4 +- .../HttpJsonServiceStubClassComposer.java | 106 +++++++++++------- 2 files changed, 67 insertions(+), 43 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 093c03d85d..013ec56fe1 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 @@ -300,7 +300,7 @@ protected List createClassStatements( classStatements.add(EMPTY_LINE_STATEMENT); } - classStatements.addAll(createOperationCustomHttpBindingsMapDeclaration(context)); + classStatements.addAll(createCustomHttpBindingsMapDeclaration(context)); classStatements.add(EMPTY_LINE_STATEMENT); classStatements.addAll(createClassMemberFieldDeclarations(callableClassMemberVarExprs)); @@ -312,7 +312,7 @@ protected List createClassStatements( return classStatements; } - protected List createOperationCustomHttpBindingsMapDeclaration(GapicContext context) { + protected List createCustomHttpBindingsMapDeclaration(GapicContext context) { return new ArrayList<>(); } 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 292119bd9f..55e19ecf38 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 @@ -75,6 +75,7 @@ import java.util.Set; import java.util.function.BiFunction; import java.util.function.Function; +import java.util.function.Predicate; import java.util.stream.Collectors; public class HttpJsonServiceStubClassComposer extends AbstractTransportServiceStubClassComposer { @@ -92,15 +93,6 @@ public class HttpJsonServiceStubClassComposer extends AbstractTransportServiceSt .build()) .build(); - private static final VariableExpr OPERATION_CUSTOM_HTTP_BINDINGS = - VariableExpr.builder() - .setVariable( - Variable.builder() - .setName("operationCustomHttpBindings") - .setType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) - .build()) - .build(); - private static final String LRO_LIST_OPERATIONS = "google.longrunning.Operations.ListOperations"; private static final String LRO_GET_OPERATION = "google.longrunning.Operations.GetOperation"; private static final String LRO_DELETE_OPERATION = @@ -150,8 +142,8 @@ protected boolean generateOperationsStubLogic(Service service) { } @Override - protected List createOperationCustomHttpBindingsMapDeclaration(GapicContext context) { - VariableExpr operationCustomHttpBindingsVarExpr = + protected List createCustomHttpBindingsMapDeclaration(GapicContext context) { + VariableExpr customHttpBindingsVarExpr = VariableExpr.withVariable( Variable.builder() .setType( @@ -163,7 +155,7 @@ protected List createOperationCustomHttpBindingsMapDeclaration(GapicC ConcreteReference.withClazz(String.class), ConcreteReference.withClazz(String.class))) .build())) - .setName("operationCustomHttpBindings") + .setName("customHttpBindings") .build()) .toBuilder() .setIsDecl(true) @@ -172,23 +164,23 @@ protected List createOperationCustomHttpBindingsMapDeclaration(GapicC .setIsFinal(true) .build(); - Expr operationCustomHttpBindingsBuilderExpr = + Expr customHttpBindingsBuilderExpr = MethodInvocationExpr.builder() .setStaticReferenceType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) .setMethodName("builder") .setGenerics(Arrays.asList(TypeNode.STRING.reference(), TypeNode.STRING.reference())) .build(); - Map operationCustomHttpBindingsMap = parseCustomHttpBindings(context); - if (operationCustomHttpBindingsMap.size() == 0) { + Map customHttpBindingsMap = parseCustomHttpBindings(context); + if (customHttpBindingsMap.size() == 0) { return Collections.emptyList(); } - for (Map.Entry entrySet : operationCustomHttpBindingsMap.entrySet()) { + for (Map.Entry entrySet : customHttpBindingsMap.entrySet()) { String selector = entrySet.getKey(); String path = entrySet.getValue(); - operationCustomHttpBindingsBuilderExpr = + customHttpBindingsBuilderExpr = MethodInvocationExpr.builder() - .setExprReferenceExpr(operationCustomHttpBindingsBuilderExpr) + .setExprReferenceExpr(customHttpBindingsBuilderExpr) .setMethodName("put") .setArguments( Arrays.asList( @@ -197,9 +189,9 @@ protected List createOperationCustomHttpBindingsMapDeclaration(GapicC .build(); } - operationCustomHttpBindingsBuilderExpr = + customHttpBindingsBuilderExpr = MethodInvocationExpr.builder() - .setExprReferenceExpr(operationCustomHttpBindingsBuilderExpr) + .setExprReferenceExpr(customHttpBindingsBuilderExpr) .setMethodName("build") .setReturnType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) .build(); @@ -207,8 +199,8 @@ protected List createOperationCustomHttpBindingsMapDeclaration(GapicC return Collections.singletonList( ExprStatement.withExpr( AssignmentExpr.builder() - .setVariableExpr(operationCustomHttpBindingsVarExpr) - .setValueExpr(operationCustomHttpBindingsBuilderExpr) + .setVariableExpr(customHttpBindingsVarExpr) + .setValueExpr(customHttpBindingsBuilderExpr) .build())); } @@ -1180,25 +1172,37 @@ protected List createOperationsStubInitExpr( if (standardOpStub.equals(operationsStubType.reference().fullName())) { arguments.add(TYPE_REGISTRY_VAR_EXPR); } - if (parseCustomHttpBindings(context).size() > 0) { - arguments.add(OPERATION_CUSTOM_HTTP_BINDINGS); - } else { - Expr operationCustomHttpBindingsBuilderExpr = - MethodInvocationExpr.builder() - .setStaticReferenceType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) - .setMethodName("builder") - .setGenerics(Arrays.asList(TypeNode.STRING.reference(), TypeNode.STRING.reference())) - .build(); + Expr operationCustomHttpBindingsBuilderExpr = + MethodInvocationExpr.builder() + .setStaticReferenceType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) + .setMethodName("builder") + .setGenerics(Arrays.asList(TypeNode.STRING.reference(), TypeNode.STRING.reference())) + .build(); + Map operationCustomHttpBindings = filterCustomHttpBindingsMap(parseCustomHttpBindings(context), x -> x.getKey().contains(LRO_NAME_PREFIX)); + for (Map.Entry entrySet : operationCustomHttpBindings.entrySet()) { + String selector = entrySet.getKey(); + String path = entrySet.getValue(); operationCustomHttpBindingsBuilderExpr = - MethodInvocationExpr.builder() - .setExprReferenceExpr(operationCustomHttpBindingsBuilderExpr) - .setMethodName("build") - .setReturnType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) - .build(); - arguments.add(operationCustomHttpBindingsBuilderExpr); + MethodInvocationExpr.builder() + .setExprReferenceExpr(operationCustomHttpBindingsBuilderExpr) + .setMethodName("put") + .setArguments( + Arrays.asList( + ValueExpr.withValue(StringObjectValue.withValue(selector)), + ValueExpr.withValue(StringObjectValue.withValue(path)))) + .build(); } + operationCustomHttpBindingsBuilderExpr = + MethodInvocationExpr.builder() + .setExprReferenceExpr(operationCustomHttpBindingsBuilderExpr) + .setMethodName("build") + .setReturnType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) + .build(); + + arguments.add(operationCustomHttpBindingsBuilderExpr); + return Collections.singletonList( AssignmentExpr.builder() .setVariableExpr( @@ -1218,15 +1222,35 @@ private Map parseCustomHttpBindings(GapicContext context) { com.google.api.Service service = context.serviceYamlProto(); if (service != null && service.getHttp() != null) { for (HttpRule httpRule : service.getHttp().getRulesList()) { - String selector = httpRule.getSelector(); - if (selector.contains(LRO_NAME_PREFIX)) { - customHttpBindings.put(selector, HTTP_RULE_OPERATION.get(selector).apply(httpRule)); - } + customHttpBindings.put(httpRule.getSelector(), getValueBasedOnPatternCase(httpRule)); } } return customHttpBindings; } + private Map filterCustomHttpBindingsMap(Map customHttpBindings, Predicate> predicate) { + return customHttpBindings.entrySet().stream().filter(predicate).collect(Collectors.toMap(x -> x.getKey(), x -> x.getValue())); + } + + private String getValueBasedOnPatternCase(HttpRule httpRule) { + switch (httpRule.getPatternCase().getNumber()) { + case 2: + return httpRule.getGet(); + case 3: + return httpRule.getPut(); + case 4: + return httpRule.getPost(); + case 5: + return httpRule.getDelete(); + case 6: + return httpRule.getPatch(); + case 8: + return httpRule.getCustom().getPath(); + default: + return null; + } + } + @Override protected List createLongRunningClient(Service service, TypeStore typeStore) { Method pollingMethod = service.operationPollingMethod(); From 3a72781d59a589bdb5964d78953b61d8296ec06d Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 1 Feb 2023 19:07:27 -0500 Subject: [PATCH 16/82] chore: Clean up code --- ...ractTransportServiceStubClassComposer.java | 7 - .../HttpJsonServiceStubClassComposer.java | 143 +++++------------- .../grpcrest/goldens/HttpJsonEchoStub.golden | 7 +- .../ProtoMessageRequestFormatter.java | 6 + .../stub/HttpJsonOperationsStub.java | 107 ++++++------- .../v1beta1/stub/HttpJsonComplianceStub.java | 11 -- .../v1beta1/stub/HttpJsonEchoStub.java | 24 +-- .../v1beta1/stub/HttpJsonIdentityStub.java | 11 -- .../v1beta1/stub/HttpJsonMessagingStub.java | 24 +-- .../stub/HttpJsonSequenceServiceStub.java | 11 -- .../v1beta1/stub/HttpJsonTestingStub.java | 11 -- .../v1/stub/HttpJsonAssetServiceStub.java | 7 +- .../v1small/stub/HttpJsonAddressesStub.java | 4 +- .../v1beta1/stub/HttpJsonCloudRedisStub.java | 34 ++--- 14 files changed, 138 insertions(+), 269 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 013ec56fe1..5f5c1c6b43 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 @@ -300,9 +300,6 @@ protected List createClassStatements( classStatements.add(EMPTY_LINE_STATEMENT); } - classStatements.addAll(createCustomHttpBindingsMapDeclaration(context)); - classStatements.add(EMPTY_LINE_STATEMENT); - classStatements.addAll(createClassMemberFieldDeclarations(callableClassMemberVarExprs)); classStatements.add(EMPTY_LINE_STATEMENT); @@ -312,10 +309,6 @@ protected List createClassStatements( return classStatements; } - protected List createCustomHttpBindingsMapDeclaration(GapicContext context) { - return new ArrayList<>(); - } - protected List createMethodDescriptorVariableDecls( Service service, Map protoMethodNameToDescriptorVarExprs, 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 55e19ecf38..3ed210b007 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 @@ -92,21 +92,6 @@ public class HttpJsonServiceStubClassComposer extends AbstractTransportServiceSt .setType(FIXED_REST_TYPESTORE.get(TypeRegistry.class.getSimpleName())) .build()) .build(); - - private static final String LRO_LIST_OPERATIONS = "google.longrunning.Operations.ListOperations"; - private static final String LRO_GET_OPERATION = "google.longrunning.Operations.GetOperation"; - private static final String LRO_DELETE_OPERATION = - "google.longrunning.Operations.DeleteOperation"; - private static final String LRO_CANCEL_OPERATION = - "google.longrunning.Operations.CancelOperation"; - - private static final Map> HTTP_RULE_OPERATION = - ImmutableMap.>builder() - .put(LRO_LIST_OPERATIONS, HttpRule::getGet) - .put(LRO_GET_OPERATION, HttpRule::getGet) - .put(LRO_DELETE_OPERATION, HttpRule::getDelete) - .put(LRO_CANCEL_OPERATION, HttpRule::getPost) - .build(); private static final String LRO_NAME_PREFIX = "google.longrunning.Operations"; protected HttpJsonServiceStubClassComposer() { @@ -141,69 +126,6 @@ protected boolean generateOperationsStubLogic(Service service) { return service.hasLroMethods(); } - @Override - protected List createCustomHttpBindingsMapDeclaration(GapicContext context) { - VariableExpr customHttpBindingsVarExpr = - VariableExpr.withVariable( - Variable.builder() - .setType( - TypeNode.withReference( - ConcreteReference.builder() - .setClazz(Map.class) - .setGenerics( - Arrays.asList( - ConcreteReference.withClazz(String.class), - ConcreteReference.withClazz(String.class))) - .build())) - .setName("customHttpBindings") - .build()) - .toBuilder() - .setIsDecl(true) - .setIsStatic(true) - .setScope(ScopeNode.PRIVATE) - .setIsFinal(true) - .build(); - - Expr customHttpBindingsBuilderExpr = - MethodInvocationExpr.builder() - .setStaticReferenceType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) - .setMethodName("builder") - .setGenerics(Arrays.asList(TypeNode.STRING.reference(), TypeNode.STRING.reference())) - .build(); - - Map customHttpBindingsMap = parseCustomHttpBindings(context); - if (customHttpBindingsMap.size() == 0) { - return Collections.emptyList(); - } - for (Map.Entry entrySet : customHttpBindingsMap.entrySet()) { - String selector = entrySet.getKey(); - String path = entrySet.getValue(); - customHttpBindingsBuilderExpr = - MethodInvocationExpr.builder() - .setExprReferenceExpr(customHttpBindingsBuilderExpr) - .setMethodName("put") - .setArguments( - Arrays.asList( - ValueExpr.withValue(StringObjectValue.withValue(selector)), - ValueExpr.withValue(StringObjectValue.withValue(path)))) - .build(); - } - - customHttpBindingsBuilderExpr = - MethodInvocationExpr.builder() - .setExprReferenceExpr(customHttpBindingsBuilderExpr) - .setMethodName("build") - .setReturnType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) - .build(); - - return Collections.singletonList( - ExprStatement.withExpr( - AssignmentExpr.builder() - .setVariableExpr(customHttpBindingsVarExpr) - .setValueExpr(customHttpBindingsBuilderExpr) - .build())); - } - @Override protected Statement createMethodDescriptorVariableDecl( Service service, @@ -1172,36 +1094,40 @@ protected List createOperationsStubInitExpr( if (standardOpStub.equals(operationsStubType.reference().fullName())) { arguments.add(TYPE_REGISTRY_VAR_EXPR); } - Expr operationCustomHttpBindingsBuilderExpr = - MethodInvocationExpr.builder() - .setStaticReferenceType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) - .setMethodName("builder") - .setGenerics(Arrays.asList(TypeNode.STRING.reference(), TypeNode.STRING.reference())) - .build(); - - Map operationCustomHttpBindings = filterCustomHttpBindingsMap(parseCustomHttpBindings(context), x -> x.getKey().contains(LRO_NAME_PREFIX)); - for (Map.Entry entrySet : operationCustomHttpBindings.entrySet()) { - String selector = entrySet.getKey(); - String path = entrySet.getValue(); - operationCustomHttpBindingsBuilderExpr = - MethodInvocationExpr.builder() - .setExprReferenceExpr(operationCustomHttpBindingsBuilderExpr) - .setMethodName("put") - .setArguments( - Arrays.asList( - ValueExpr.withValue(StringObjectValue.withValue(selector)), - ValueExpr.withValue(StringObjectValue.withValue(path)))) - .build(); - } + Map operationCustomHttpBindings = + filterCustomHttpBindingsMap( + parseCustomHttpBindings(context), x -> x.getKey().contains(LRO_NAME_PREFIX)); + if (operationCustomHttpBindings.size() > 0) { + Expr operationCustomHttpBindingsBuilderExpr = + MethodInvocationExpr.builder() + .setStaticReferenceType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) + .setMethodName("builder") + .setGenerics(Arrays.asList(TypeNode.STRING.reference(), TypeNode.STRING.reference())) + .build(); - operationCustomHttpBindingsBuilderExpr = + for (Map.Entry entrySet : operationCustomHttpBindings.entrySet()) { + String selector = entrySet.getKey(); + String path = entrySet.getValue(); + operationCustomHttpBindingsBuilderExpr = MethodInvocationExpr.builder() - .setExprReferenceExpr(operationCustomHttpBindingsBuilderExpr) - .setMethodName("build") - .setReturnType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) - .build(); + .setExprReferenceExpr(operationCustomHttpBindingsBuilderExpr) + .setMethodName("put") + .setArguments( + Arrays.asList( + ValueExpr.withValue(StringObjectValue.withValue(selector)), + ValueExpr.withValue(StringObjectValue.withValue(path)))) + .build(); + } - arguments.add(operationCustomHttpBindingsBuilderExpr); + operationCustomHttpBindingsBuilderExpr = + MethodInvocationExpr.builder() + .setExprReferenceExpr(operationCustomHttpBindingsBuilderExpr) + .setMethodName("build") + .setReturnType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) + .build(); + + arguments.add(operationCustomHttpBindingsBuilderExpr); + } return Collections.singletonList( AssignmentExpr.builder() @@ -1228,8 +1154,11 @@ private Map parseCustomHttpBindings(GapicContext context) { return customHttpBindings; } - private Map filterCustomHttpBindingsMap(Map customHttpBindings, Predicate> predicate) { - return customHttpBindings.entrySet().stream().filter(predicate).collect(Collectors.toMap(x -> x.getKey(), x -> x.getValue())); + private Map filterCustomHttpBindingsMap( + Map customHttpBindings, Predicate> predicate) { + return customHttpBindings.entrySet().stream() + .filter(predicate) + .collect(Collectors.toMap(x -> x.getKey(), x -> x.getValue())); } private String getValueBasedOnPatternCase(HttpRule httpRule) { 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 216fde0495..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 @@ -21,7 +21,6 @@ import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.OperationCallable; import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.UnaryCallable; -import com.google.common.collect.ImmutableMap; import com.google.longrunning.Operation; import com.google.protobuf.TypeRegistry; import com.google.showcase.grpcrest.v1beta1.BlockRequest; @@ -383,11 +382,7 @@ public class HttpJsonEchoStub extends EchoStub { throws IOException { this.callableFactory = callableFactory; this.httpJsonOperationsStub = - HttpJsonOperationsStub.create( - clientContext, - callableFactory, - typeRegistry, - ImmutableMap.builder().build()); + HttpJsonOperationsStub.create(clientContext, callableFactory, typeRegistry); HttpJsonCallSettings echoTransportSettings = HttpJsonCallSettings.newBuilder() diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ProtoMessageRequestFormatter.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ProtoMessageRequestFormatter.java index f04a16edbc..fa3480ad23 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ProtoMessageRequestFormatter.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ProtoMessageRequestFormatter.java @@ -147,6 +147,12 @@ public Builder setAdditionalPaths(String... rawAdditionalPaths) { return this; } + @InternalApi + public Builder updateRawPath(String rawPath) { + this.rawPath = rawPath; + return this; + } + @InternalApi public Builder updateRawPath(String target, String replacement) { this.rawPath = this.rawPath.replace(target, replacement); diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index e7775f3c91..e37304806c 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -203,6 +203,40 @@ public class HttpJsonOperationsStub extends OperationsStub { private final BackgroundResource backgroundResources; private final HttpJsonStubCallableFactory callableFactory; + public static final HttpJsonOperationsStub create(OperationsStubSettings settings) + throws IOException { + return new HttpJsonOperationsStub(settings, ClientContext.create(settings), new HashMap<>()); + } + + public static final HttpJsonOperationsStub create(ClientContext clientContext) + throws IOException { + return new HttpJsonOperationsStub( + OperationsStubSettings.newBuilder().build(), clientContext, new HashMap<>()); + } + + public static final HttpJsonOperationsStub create( + ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { + return new HttpJsonOperationsStub( + OperationsStubSettings.newBuilder().build(), + clientContext, + callableFactory, + TypeRegistry.getEmptyTypeRegistry(), + new HashMap<>()); + } + + public static final HttpJsonOperationsStub create( + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory, + TypeRegistry typeRegistry) + throws IOException { + return new HttpJsonOperationsStub( + OperationsStubSettings.newBuilder().build(), + clientContext, + callableFactory, + typeRegistry, + new HashMap<>()); + } + public static final HttpJsonOperationsStub create( OperationsStubSettings settings, Map customOperationHttpBindings) throws IOException { @@ -341,27 +375,10 @@ private static void updateDefaultOperationApiMethodDescriptors( listOperationsMethodDescriptor .toBuilder() .setRequestFormatter( - ProtoMessageRequestFormatter.newBuilder() - .setPath( - customOperationHttpBindings.get(LRO_LIST_OPERATIONS), - request -> { - Map fields = new HashMap<>(); - ProtoRestSerializer serializer = - ProtoRestSerializer.create(); - serializer.putPathParam(fields, "name", request.getName()); - return fields; - }) - .setQueryParamsExtractor( - request -> { - Map> fields = new HashMap<>(); - ProtoRestSerializer serializer = - ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "filter", request.getFilter()); - serializer.putQueryParam(fields, "pageSize", request.getPageSize()); - serializer.putQueryParam(fields, "pageToken", request.getPageToken()); - return fields; - }) - .setRequestBodyExtractor(request -> null) + ((ProtoMessageRequestFormatter) + listOperationsMethodDescriptor.getRequestFormatter()) + .toBuilder() + .updateRawPath(customOperationHttpBindings.get(LRO_LIST_OPERATIONS)) .build()) .build(); } @@ -371,18 +388,10 @@ private static void updateDefaultOperationApiMethodDescriptors( getOperationMethodDescriptor .toBuilder() .setRequestFormatter( - ProtoMessageRequestFormatter.newBuilder() - .setPath( - customOperationHttpBindings.get(LRO_GET_OPERATION), - request -> { - Map fields = new HashMap<>(); - ProtoRestSerializer serializer = - ProtoRestSerializer.create(); - serializer.putPathParam(fields, "name", request.getName()); - return fields; - }) - .setQueryParamsExtractor(request -> new HashMap<>()) - .setRequestBodyExtractor(request -> null) + ((ProtoMessageRequestFormatter) + getOperationMethodDescriptor.getRequestFormatter()) + .toBuilder() + .updateRawPath(customOperationHttpBindings.get(LRO_GET_OPERATION)) .build()) .build(); } @@ -392,18 +401,10 @@ private static void updateDefaultOperationApiMethodDescriptors( deleteOperationMethodDescriptor .toBuilder() .setRequestFormatter( - ProtoMessageRequestFormatter.newBuilder() - .setPath( - customOperationHttpBindings.get(LRO_DELETE_OPERATION), - request -> { - Map fields = new HashMap<>(); - ProtoRestSerializer serializer = - ProtoRestSerializer.create(); - serializer.putPathParam(fields, "name", request.getName()); - return fields; - }) - .setQueryParamsExtractor(request -> new HashMap<>()) - .setRequestBodyExtractor(request -> null) + ((ProtoMessageRequestFormatter) + deleteOperationMethodDescriptor.getRequestFormatter()) + .toBuilder() + .updateRawPath(customOperationHttpBindings.get(LRO_DELETE_OPERATION)) .build()) .build(); } @@ -413,18 +414,10 @@ private static void updateDefaultOperationApiMethodDescriptors( cancelOperationMethodDescriptor .toBuilder() .setRequestFormatter( - ProtoMessageRequestFormatter.newBuilder() - .setPath( - customOperationHttpBindings.get(LRO_CANCEL_OPERATION), - request -> { - Map fields = new HashMap<>(); - ProtoRestSerializer serializer = - ProtoRestSerializer.create(); - serializer.putPathParam(fields, "name", request.getName()); - return fields; - }) - .setQueryParamsExtractor(request -> new HashMap<>()) - .setRequestBodyExtractor(request -> null) + ((ProtoMessageRequestFormatter) + cancelOperationMethodDescriptor.getRequestFormatter()) + .toBuilder() + .updateRawPath(customOperationHttpBindings.get(LRO_CANCEL_OPERATION)) .build()) .build(); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonComplianceStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonComplianceStub.java index e03972ab58..5fd2556f89 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonComplianceStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonComplianceStub.java @@ -28,7 +28,6 @@ import com.google.api.gax.httpjson.ProtoRestSerializer; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.UnaryCallable; -import com.google.common.collect.ImmutableMap; import com.google.protobuf.TypeRegistry; import com.google.showcase.v1beta1.EnumRequest; import com.google.showcase.v1beta1.EnumResponse; @@ -517,16 +516,6 @@ public class HttpJsonComplianceStub extends ComplianceStub { .build()) .build(); - private static final Map operationCustomHttpBindings = - ImmutableMap.builder() - .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") - .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") - .put("google.longrunning.Operations.DeleteOperation", "/v1beta1/{name=operations/**}") - .put( - "google.longrunning.Operations.CancelOperation", - "/v1beta1/{name=operations/**}:cancel") - .build(); - private final UnaryCallable repeatDataBodyCallable; private final UnaryCallable repeatDataBodyInfoCallable; private final UnaryCallable repeatDataQueryCallable; 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 be6a0aecba..c99917fd00 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 @@ -321,16 +321,6 @@ public class HttpJsonEchoStub extends EchoStub { .build()) .build(); - private static final Map operationCustomHttpBindings = - ImmutableMap.builder() - .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") - .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") - .put("google.longrunning.Operations.DeleteOperation", "/v1beta1/{name=operations/**}") - .put( - "google.longrunning.Operations.CancelOperation", - "/v1beta1/{name=operations/**}:cancel") - .build(); - private final UnaryCallable echoCallable; private final ServerStreamingCallable expandCallable; private final UnaryCallable pagedExpandCallable; @@ -385,7 +375,19 @@ protected HttpJsonEchoStub( this.callableFactory = callableFactory; this.httpJsonOperationsStub = HttpJsonOperationsStub.create( - clientContext, callableFactory, typeRegistry, operationCustomHttpBindings); + clientContext, + callableFactory, + typeRegistry, + ImmutableMap.builder() + .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") + .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") + .put( + "google.longrunning.Operations.DeleteOperation", + "/v1beta1/{name=operations/**}") + .put( + "google.longrunning.Operations.CancelOperation", + "/v1beta1/{name=operations/**}:cancel") + .build()); HttpJsonCallSettings echoTransportSettings = HttpJsonCallSettings.newBuilder() diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonIdentityStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonIdentityStub.java index 72e48134c4..528858e711 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonIdentityStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonIdentityStub.java @@ -30,7 +30,6 @@ import com.google.api.gax.httpjson.ProtoRestSerializer; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.UnaryCallable; -import com.google.common.collect.ImmutableMap; import com.google.protobuf.Empty; import com.google.protobuf.TypeRegistry; import com.google.showcase.v1beta1.CreateUserRequest; @@ -231,16 +230,6 @@ public class HttpJsonIdentityStub extends IdentityStub { .build()) .build(); - private static final Map operationCustomHttpBindings = - ImmutableMap.builder() - .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") - .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") - .put("google.longrunning.Operations.DeleteOperation", "/v1beta1/{name=operations/**}") - .put( - "google.longrunning.Operations.CancelOperation", - "/v1beta1/{name=operations/**}:cancel") - .build(); - private final UnaryCallable createUserCallable; private final UnaryCallable getUserCallable; private final UnaryCallable updateUserCallable; 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 c3e962b5aa..464edf1312 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 @@ -516,16 +516,6 @@ public class HttpJsonMessagingStub extends MessagingStub { .build()) .build(); - private static final Map operationCustomHttpBindings = - ImmutableMap.builder() - .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") - .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") - .put("google.longrunning.Operations.DeleteOperation", "/v1beta1/{name=operations/**}") - .put( - "google.longrunning.Operations.CancelOperation", - "/v1beta1/{name=operations/**}:cancel") - .build(); - private final UnaryCallable createRoomCallable; private final UnaryCallable getRoomCallable; private final UnaryCallable updateRoomCallable; @@ -587,7 +577,19 @@ protected HttpJsonMessagingStub( this.callableFactory = callableFactory; this.httpJsonOperationsStub = HttpJsonOperationsStub.create( - clientContext, callableFactory, typeRegistry, operationCustomHttpBindings); + clientContext, + callableFactory, + typeRegistry, + ImmutableMap.builder() + .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") + .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") + .put( + "google.longrunning.Operations.DeleteOperation", + "/v1beta1/{name=operations/**}") + .put( + "google.longrunning.Operations.CancelOperation", + "/v1beta1/{name=operations/**}:cancel") + .build()); HttpJsonCallSettings createRoomTransportSettings = HttpJsonCallSettings.newBuilder() diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonSequenceServiceStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonSequenceServiceStub.java index 1d8be13061..c2522b9648 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonSequenceServiceStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonSequenceServiceStub.java @@ -28,7 +28,6 @@ import com.google.api.gax.httpjson.ProtoRestSerializer; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.UnaryCallable; -import com.google.common.collect.ImmutableMap; import com.google.protobuf.Empty; import com.google.protobuf.TypeRegistry; import com.google.showcase.v1beta1.AttemptSequenceRequest; @@ -162,16 +161,6 @@ public class HttpJsonSequenceServiceStub extends SequenceServiceStub { .build()) .build(); - private static final Map operationCustomHttpBindings = - ImmutableMap.builder() - .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") - .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") - .put("google.longrunning.Operations.DeleteOperation", "/v1beta1/{name=operations/**}") - .put( - "google.longrunning.Operations.CancelOperation", - "/v1beta1/{name=operations/**}:cancel") - .build(); - private final UnaryCallable createSequenceCallable; private final UnaryCallable getSequenceReportCallable; private final UnaryCallable attemptSequenceCallable; diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonTestingStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonTestingStub.java index bfbe03e67f..eb1a664bb0 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonTestingStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonTestingStub.java @@ -31,7 +31,6 @@ import com.google.api.gax.httpjson.ProtoRestSerializer; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.UnaryCallable; -import com.google.common.collect.ImmutableMap; import com.google.protobuf.Empty; import com.google.protobuf.TypeRegistry; import com.google.showcase.v1beta1.CreateSessionRequest; @@ -343,16 +342,6 @@ public class HttpJsonTestingStub extends TestingStub { .build()) .build(); - private static final Map operationCustomHttpBindings = - ImmutableMap.builder() - .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") - .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") - .put("google.longrunning.Operations.DeleteOperation", "/v1beta1/{name=operations/**}") - .put( - "google.longrunning.Operations.CancelOperation", - "/v1beta1/{name=operations/**}:cancel") - .build(); - private final UnaryCallable createSessionCallable; private final UnaryCallable getSessionCallable; private final UnaryCallable listSessionsCallable; diff --git a/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/HttpJsonAssetServiceStub.java b/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/HttpJsonAssetServiceStub.java index bfe18b11cd..4e07ddd7e0 100644 --- a/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/HttpJsonAssetServiceStub.java +++ b/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/HttpJsonAssetServiceStub.java @@ -72,7 +72,6 @@ import com.google.cloud.asset.v1.SearchAllResourcesResponse; import com.google.cloud.asset.v1.UpdateFeedRequest; import com.google.cloud.asset.v1.UpdateSavedQueryRequest; -import com.google.common.collect.ImmutableMap; import com.google.longrunning.Operation; import com.google.protobuf.Empty; import com.google.protobuf.TypeRegistry; @@ -950,11 +949,7 @@ protected HttpJsonAssetServiceStub( throws IOException { this.callableFactory = callableFactory; this.httpJsonOperationsStub = - HttpJsonOperationsStub.create( - clientContext, - callableFactory, - typeRegistry, - ImmutableMap.builder().build()); + HttpJsonOperationsStub.create(clientContext, callableFactory, typeRegistry); HttpJsonCallSettings exportAssetsTransportSettings = HttpJsonCallSettings.newBuilder() diff --git a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonAddressesStub.java b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonAddressesStub.java index 033d021889..b040b1a5d8 100644 --- a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonAddressesStub.java +++ b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/HttpJsonAddressesStub.java @@ -42,7 +42,6 @@ import com.google.cloud.compute.v1small.ListAddressesRequest; import com.google.cloud.compute.v1small.Operation; import com.google.cloud.compute.v1small.Operation.Status; -import com.google.common.collect.ImmutableMap; import com.google.protobuf.TypeRegistry; import java.io.IOException; import java.util.ArrayList; @@ -313,8 +312,7 @@ protected HttpJsonAddressesStub( throws IOException { this.callableFactory = callableFactory; this.httpJsonOperationsStub = - HttpJsonRegionOperationsStub.create( - clientContext, callableFactory, ImmutableMap.builder().build()); + HttpJsonRegionOperationsStub.create(clientContext, callableFactory); HttpJsonCallSettings aggregatedListTransportSettings = diff --git a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java index 762980a601..1dfb17a173 100644 --- a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java +++ b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java @@ -501,22 +501,6 @@ public class HttpJsonCloudRedisStub extends CloudRedisStub { HttpJsonOperationSnapshot.create(response)) .build(); - private static final Map operationCustomHttpBindings = - ImmutableMap.builder() - .put( - "google.longrunning.Operations.GetOperation", - "/v1beta1/{name=projects/*/locations/*/operations/*}") - .put( - "google.longrunning.Operations.ListOperations", - "/v1beta1/{name=projects/*/locations/*}/operations") - .put( - "google.longrunning.Operations.DeleteOperation", - "/v1beta1/{name=projects/*/locations/*/operations/*}") - .put( - "google.longrunning.Operations.CancelOperation", - "/v1beta1/{name=projects/*/locations/*/operations/*}:cancel") - .build(); - private final UnaryCallable listInstancesCallable; private final UnaryCallable listInstancesPagedCallable; @@ -593,7 +577,23 @@ protected HttpJsonCloudRedisStub( this.callableFactory = callableFactory; this.httpJsonOperationsStub = HttpJsonOperationsStub.create( - clientContext, callableFactory, typeRegistry, operationCustomHttpBindings); + clientContext, + callableFactory, + typeRegistry, + ImmutableMap.builder() + .put( + "google.longrunning.Operations.GetOperation", + "/v1beta1/{name=projects/*/locations/*/operations/*}") + .put( + "google.longrunning.Operations.ListOperations", + "/v1beta1/{name=projects/*/locations/*}/operations") + .put( + "google.longrunning.Operations.DeleteOperation", + "/v1beta1/{name=projects/*/locations/*/operations/*}") + .put( + "google.longrunning.Operations.CancelOperation", + "/v1beta1/{name=projects/*/locations/*/operations/*}:cancel") + .build()); HttpJsonCallSettings listInstancesTransportSettings = From d7d1b12afc3300672e1313cd2fc94db8c6073da7 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 1 Feb 2023 19:31:59 -0500 Subject: [PATCH 17/82] chore: Resolve sonar comments --- .../common/AbstractTransportServiceStubClassComposer.java | 2 -- .../composer/rest/HttpJsonServiceStubClassComposer.java | 6 +++--- 2 files changed, 3 insertions(+), 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 5f5c1c6b43..b566ed5a18 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 @@ -188,7 +188,6 @@ public GapicClass generate(GapicContext context, Service service) { Map messageTypes = context.messages(); List classStatements = createClassStatements( - context, service, protoMethodNameToDescriptorVarExprs, callableClassMemberVarExprs, @@ -279,7 +278,6 @@ protected List createTypeRegistry(Service service) { } protected List createClassStatements( - GapicContext context, Service service, Map protoMethodNameToDescriptorVarExprs, Map callableClassMemberVarExprs, 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 3ed210b007..404f0ea6f7 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 @@ -1094,9 +1094,9 @@ protected List createOperationsStubInitExpr( if (standardOpStub.equals(operationsStubType.reference().fullName())) { arguments.add(TYPE_REGISTRY_VAR_EXPR); } + Map customHttpBindings = parseCustomHttpBindings(context); Map operationCustomHttpBindings = - filterCustomHttpBindingsMap( - parseCustomHttpBindings(context), x -> x.getKey().contains(LRO_NAME_PREFIX)); + filterCustomHttpBindingsMap(customHttpBindings, x -> x.getKey().contains(LRO_NAME_PREFIX)); if (operationCustomHttpBindings.size() > 0) { Expr operationCustomHttpBindingsBuilderExpr = MethodInvocationExpr.builder() @@ -1158,7 +1158,7 @@ private Map filterCustomHttpBindingsMap( Map customHttpBindings, Predicate> predicate) { return customHttpBindings.entrySet().stream() .filter(predicate) - .collect(Collectors.toMap(x -> x.getKey(), x -> x.getValue())); + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); } private String getValueBasedOnPatternCase(HttpRule httpRule) { From 9b050d3b4196a521731c630a0153b4c4a2949c2f Mon Sep 17 00:00:00 2001 From: Mike Eltsufin Date: Wed, 1 Feb 2023 15:20:54 -0500 Subject: [PATCH 18/82] chore: DEVELOPMENT.md formatting fix (#1289) --- DEVELOPMENT.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index f813d7de4a..229919c367 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -14,10 +14,10 @@ ### Note: You may see this error with the pre-commits due to the monorepo migration: ``` -[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project gapic-generator-java: Compilation failure: Compilation failure: -[ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java:[19,43] package com.google.api.gax.httpjson.testing does not exist -[ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java:[24,38] package com.google.api.gax.rpc.testing does not exist -[ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/ServiceClientTestClassComposer.java:[18,39] package com.google.api.gax.grpc.testing does not exist + [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project gapic-generator-java: Compilation failure: Compilation failure: + [ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java:[19,43] package com.google.api.gax.httpjson.testing does not exist + [ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java:[24,38] package com.google.api.gax.rpc.testing does not exist + [ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/ServiceClientTestClassComposer.java:[18,39] package com.google.api.gax.grpc.testing does not exist ``` Remove the pre-commit hooks. Tracking the issue in https://github.com/googleapis/gapic-generator-java/issues/1253 @@ -267,4 +267,4 @@ ERROR: Error computing the main repository mapping: Encountered error while read ``` You may be using the latest version of bazel which this project does not support yet. Try installing bazelisk to force -bazel to use the version specified in `.bazeliskrc` \ No newline at end of file +bazel to use the version specified in `.bazeliskrc` From 5b31d4114698b28fb2e3555cf956a417afec109f Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Wed, 1 Feb 2023 16:37:18 -0500 Subject: [PATCH 19/82] ci: use java-shared-dependencies in google-cloud-java repository for downstream test (#1291) * ci: use java-shared-dependencies in google-cloud-java * No need to modify google-cloud-jar-parent --- .kokoro/presubmit/downstream-build.sh | 47 ++++++++++++--------------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/.kokoro/presubmit/downstream-build.sh b/.kokoro/presubmit/downstream-build.sh index 813a64ebd8..81b974b806 100755 --- a/.kokoro/presubmit/downstream-build.sh +++ b/.kokoro/presubmit/downstream-build.sh @@ -39,8 +39,8 @@ GAPIC_BOM_VERSION=$(sed -e 's/xmlns=".*"//' gapic-generator-java-bom/pom.xml | x ### Round 2 # Run the updated GAPIC BOM against HEAD of java-shared-dependencies -git clone "https://github.com/googleapis/java-shared-dependencies.git" --depth=1 -pushd java-shared-dependencies/first-party-dependencies +git clone "https://github.com/googleapis/google-cloud-java.git" --depth=1 +pushd google-cloud-java/java-shared-dependencies/first-party-dependencies # Replace GAPIC BOM version xmllint --shell pom.xml < Date: Wed, 1 Feb 2023 17:03:08 -0500 Subject: [PATCH 20/82] fix(java): initialize netty-shaded at run-time and add reflection configurations for netty classes (#1290) * fix(java): initialize netty-shaded at run-time and add reflection configurations for netty classes --- .../grpc/nativeimage/GrpcNettyFeature.java | 20 ++++++++++ .../gax-grpc/native-image.properties | 3 +- .../gax-grpc/reflect-config.json | 39 +++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) diff --git a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/nativeimage/GrpcNettyFeature.java b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/nativeimage/GrpcNettyFeature.java index 23db568b72..bbd899b284 100644 --- a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/nativeimage/GrpcNettyFeature.java +++ b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/nativeimage/GrpcNettyFeature.java @@ -85,6 +85,26 @@ private static void loadGrpcNettyClasses(BeforeAnalysisAccess access) { registerClassForReflection(access, "io.grpc.netty.shaded.io.netty.channel.DefaultFileRegion"); registerClassForReflection( access, "io.grpc.netty.shaded.io.netty.channel.unix.PeerCredentials"); + registerClassForReflection( + access, "io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline"); + registerClassForReflection( + access, "io.grpc.netty.shaded.io.grpc.netty.WriteBufferingAndExceptionHandler"); + registerClassForReflection( + access, "io.grpc.netty.shaded.io.netty.channel.ProtocolNegotiators"); + registerClassForReflection(access, "io.grpc.netty.shaded.io.netty.handler.ssl.SslHandler"); + registerClassForReflection(access, "io.grpc.netty.shaded.io.grpc.netty.NettyClientHandler"); + registerClassForReflection( + access, "io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext"); + registerClassForReflection( + access, "io.grpc.netty.shaded.io.netty.channel.DefaultChannelPipeline$TailContext"); + registerClassForReflection( + access, "io.grpc.netty.shaded.io.grpc.netty.ProtocolNegotiators$WaitUntilActiveHandler"); + registerClassForReflection( + access, "io.grpc.netty.shaded.io.grpc.netty.ProtocolNegotiators$ClientTlsHandler"); + registerClassForReflection( + access, "io.grpc.netty.shaded.io.grpc.netty.ProtocolNegotiators$GrpcNegotiationHandler"); + registerClassForReflection( + access, "io.grpc.netty.shaded.io.netty.channel.ChannelHandlerMask"); // Epoll Libraries registerClassForReflection(access, "io.grpc.netty.shaded.io.netty.channel.epoll.Epoll"); diff --git a/gax-java/gax-grpc/src/main/resources/META-INF/native-image/com.google.api/gax-grpc/native-image.properties b/gax-java/gax-grpc/src/main/resources/META-INF/native-image/com.google.api/gax-grpc/native-image.properties index b66e70603f..262f5d17a2 100644 --- a/gax-java/gax-grpc/src/main/resources/META-INF/native-image/com.google.api/gax-grpc/native-image.properties +++ b/gax-java/gax-grpc/src/main/resources/META-INF/native-image/com.google.api/gax-grpc/native-image.properties @@ -9,7 +9,8 @@ Args=--add-opens=java.base/java.time=ALL-UNNAMED \ io.grpc.netty.shaded.io.netty.channel.epoll,\ io.grpc.netty.shaded.io.netty.channel.unix,\ io.grpc.netty.shaded.io.netty.handler.ssl,\ - io.grpc.internal.RetriableStream \ + io.grpc.internal.RetriableStream,\ + io.grpc.netty.shaded.io.netty \ --features=com.google.api.gax.grpc.nativeimage.ProtobufMessageFeature,\ com.google.api.gax.grpc.nativeimage.GrpcNettyFeature \ -H:-RunReachabilityHandlersConcurrently \ No newline at end of file diff --git a/gax-java/gax-grpc/src/main/resources/META-INF/native-image/com.google.api/gax-grpc/reflect-config.json b/gax-java/gax-grpc/src/main/resources/META-INF/native-image/com.google.api/gax-grpc/reflect-config.json index 69f24071df..463a4bb1d5 100644 --- a/gax-java/gax-grpc/src/main/resources/META-INF/native-image/com.google.api/gax-grpc/reflect-config.json +++ b/gax-java/gax-grpc/src/main/resources/META-INF/native-image/com.google.api/gax-grpc/reflect-config.json @@ -283,5 +283,44 @@ "name": "selectedKeys" } ] + }, + { + "name" : "com.google.auth.oauth2.ServiceAccountCredentials", + "allDeclaredConstructors" : true, + "allPublicConstructors" : true, + "allDeclaredMethods" : true, + "allPublicMethods" : true, + "allDeclaredFields" : true, + "allPublicFields" : true, + "queryAllPublicConstructors" : true, + "queryAllDeclaredConstructors" : true, + "queryAllPublicMethods" : true, + "queryAllDeclaredMethods" : true + }, + { + "name" : "org.apache.commons.pool2.impl.DefaultEvictionPolicy", + "allDeclaredConstructors" : true, + "allPublicConstructors" : true, + "allDeclaredMethods" : true, + "allPublicMethods" : true, + "allDeclaredFields" : true, + "allPublicFields" : true, + "queryAllPublicConstructors" : true, + "queryAllDeclaredConstructors" : true, + "queryAllPublicMethods" : true, + "queryAllDeclaredMethods" : true + }, + { + "name" : "java.nio.channels.spi.SelectorProvider", + "allDeclaredConstructors" : true, + "allPublicConstructors" : true, + "allDeclaredMethods" : true, + "allPublicMethods" : true, + "allDeclaredFields" : true, + "allPublicFields" : true, + "queryAllPublicConstructors" : true, + "queryAllDeclaredConstructors" : true, + "queryAllPublicMethods" : true, + "queryAllDeclaredMethods" : true } ] From d8e488f625ead9dec8c653ddc5110f7896094cf5 Mon Sep 17 00:00:00 2001 From: Mridula <66699525+mpeddada1@users.noreply.github.com> Date: Thu, 2 Feb 2023 10:29:49 -0500 Subject: [PATCH 21/82] ci(showcase): disable rest_numeric_enum for showcase testing (#1284) * ci(showcase): disable rest_numeric_enum feature in showcase tests --- showcase/BUILD.bazel | 4 +++- .../v1beta1/stub/HttpJsonComplianceStub.java | 18 ++++---------- .../v1beta1/stub/HttpJsonEchoStub.java | 21 ++++++---------- .../v1beta1/stub/HttpJsonIdentityStub.java | 9 ++----- .../v1beta1/stub/HttpJsonMessagingStub.java | 24 +++++-------------- .../stub/HttpJsonSequenceServiceStub.java | 7 ++---- .../v1beta1/stub/HttpJsonTestingStub.java | 10 +------- .../showcase/v1beta1/it/ITFirstHttp.java | 15 +++--------- .../showcase/v1beta1/it/ITNumericEnums.java | 17 ++++--------- 9 files changed, 33 insertions(+), 92 deletions(-) diff --git a/showcase/BUILD.bazel b/showcase/BUILD.bazel index 1653df2bff..1a9d633075 100644 --- a/showcase/BUILD.bazel +++ b/showcase/BUILD.bazel @@ -49,7 +49,9 @@ java_gapic_library( srcs = [":showcase_proto_with_info"], gapic_yaml = None, grpc_service_config = "@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_grpc_service_config.json", - rest_numeric_enums = True, + # TODO(#1285): Enable rest_numeric_enums once https://github.com/googleapis/gapic-showcase/issues/1255 is + # fixed. + rest_numeric_enums = False, service_yaml = "@com_google_gapic_showcase//schema/google/showcase/v1beta1:showcase_v1beta1.yaml", test_deps = [ ":showcase_java_grpc", diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonComplianceStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonComplianceStub.java index 5fd2556f89..e934c4574d 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonComplianceStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonComplianceStub.java @@ -73,13 +73,12 @@ public class HttpJsonComplianceStub extends ComplianceStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().build(), true)) + .toBody("*", request.toBuilder().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -128,12 +127,11 @@ public class HttpJsonComplianceStub extends ComplianceStub { } serializer.putQueryParam( fields, "serverVerify", request.getServerVerify()); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> - ProtoRestSerializer.create().toBody("info", request.getInfo(), true)) + ProtoRestSerializer.create().toBody("info", request.getInfo(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -183,7 +181,6 @@ public class HttpJsonComplianceStub extends ComplianceStub { } serializer.putQueryParam( fields, "serverVerify", request.getServerVerify()); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -246,7 +243,6 @@ public class HttpJsonComplianceStub extends ComplianceStub { } serializer.putQueryParam( fields, "serverVerify", request.getServerVerify()); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -309,7 +305,6 @@ public class HttpJsonComplianceStub extends ComplianceStub { } serializer.putQueryParam( fields, "serverVerify", request.getServerVerify()); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -369,7 +364,6 @@ public class HttpJsonComplianceStub extends ComplianceStub { } serializer.putQueryParam( fields, "serverVerify", request.getServerVerify()); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -402,13 +396,12 @@ public class HttpJsonComplianceStub extends ComplianceStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().build(), true)) + .toBody("*", request.toBuilder().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -438,13 +431,12 @@ public class HttpJsonComplianceStub extends ComplianceStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().build(), true)) + .toBody("*", request.toBuilder().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -472,7 +464,6 @@ public class HttpJsonComplianceStub extends ComplianceStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); serializer.putQueryParam(fields, "unknownEnum", request.getUnknownEnum()); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -504,7 +495,6 @@ public class HttpJsonComplianceStub extends ComplianceStub { ProtoRestSerializer serializer = ProtoRestSerializer.create(); serializer.putQueryParam(fields, "continent", request.getContinentValue()); serializer.putQueryParam(fields, "request", request.getRequest()); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) 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 c99917fd00..183843dbbb 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 @@ -94,13 +94,12 @@ public class HttpJsonEchoStub extends EchoStub { request -> { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().build(), true)) + .toBody("*", request.toBuilder().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -129,13 +128,12 @@ public class HttpJsonEchoStub extends EchoStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().build(), true)) + .toBody("*", request.toBuilder().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -165,13 +163,12 @@ public class HttpJsonEchoStub extends EchoStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().build(), true)) + .toBody("*", request.toBuilder().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -201,13 +198,12 @@ public class HttpJsonEchoStub extends EchoStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().build(), true)) + .toBody("*", request.toBuilder().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -237,13 +233,12 @@ public class HttpJsonEchoStub extends EchoStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().build(), true)) + .toBody("*", request.toBuilder().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -270,13 +265,12 @@ public class HttpJsonEchoStub extends EchoStub { request -> { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().build(), true)) + .toBody("*", request.toBuilder().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -306,13 +300,12 @@ public class HttpJsonEchoStub extends EchoStub { request -> { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().build(), true)) + .toBody("*", request.toBuilder().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonIdentityStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonIdentityStub.java index 528858e711..ffc63921ba 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonIdentityStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonIdentityStub.java @@ -78,13 +78,12 @@ public class HttpJsonIdentityStub extends IdentityStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().build(), true)) + .toBody("*", request.toBuilder().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -114,7 +113,6 @@ public class HttpJsonIdentityStub extends IdentityStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -148,12 +146,11 @@ public class HttpJsonIdentityStub extends IdentityStub { ProtoRestSerializer serializer = ProtoRestSerializer.create(); serializer.putQueryParam(fields, "updateMask", request.getUpdateMask()); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> - ProtoRestSerializer.create().toBody("user", request.getUser(), true)) + ProtoRestSerializer.create().toBody("user", request.getUser(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -183,7 +180,6 @@ public class HttpJsonIdentityStub extends IdentityStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -218,7 +214,6 @@ public class HttpJsonIdentityStub extends IdentityStub { 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) 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 464edf1312..47c8a63eba 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 @@ -106,13 +106,12 @@ public class HttpJsonMessagingStub extends MessagingStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().build(), true)) + .toBody("*", request.toBuilder().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -142,7 +141,6 @@ public class HttpJsonMessagingStub extends MessagingStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -176,12 +174,11 @@ public class HttpJsonMessagingStub extends MessagingStub { ProtoRestSerializer serializer = ProtoRestSerializer.create(); serializer.putQueryParam(fields, "updateMask", request.getUpdateMask()); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> - ProtoRestSerializer.create().toBody("room", request.getRoom(), true)) + ProtoRestSerializer.create().toBody("room", request.getRoom(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -211,7 +208,6 @@ public class HttpJsonMessagingStub extends MessagingStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -246,7 +242,6 @@ public class HttpJsonMessagingStub extends MessagingStub { 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) @@ -280,13 +275,12 @@ public class HttpJsonMessagingStub extends MessagingStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().clearParent().build(), true)) + .toBody("*", request.toBuilder().clearParent().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -317,7 +311,6 @@ public class HttpJsonMessagingStub extends MessagingStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -352,12 +345,11 @@ public class HttpJsonMessagingStub extends MessagingStub { ProtoRestSerializer serializer = ProtoRestSerializer.create(); serializer.putQueryParam(fields, "updateMask", request.getUpdateMask()); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> - ProtoRestSerializer.create().toBody("blurb", request.getBlurb(), true)) + ProtoRestSerializer.create().toBody("blurb", request.getBlurb(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -388,7 +380,6 @@ public class HttpJsonMessagingStub extends MessagingStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -425,7 +416,6 @@ public class HttpJsonMessagingStub extends MessagingStub { 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) @@ -460,13 +450,12 @@ public class HttpJsonMessagingStub extends MessagingStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().clearParent().build(), true)) + .toBody("*", request.toBuilder().clearParent().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -501,13 +490,12 @@ public class HttpJsonMessagingStub extends MessagingStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().clearName().build(), true)) + .toBody("*", request.toBuilder().clearName().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonSequenceServiceStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonSequenceServiceStub.java index c2522b9648..4ec3b8416e 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonSequenceServiceStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonSequenceServiceStub.java @@ -75,13 +75,12 @@ public class HttpJsonSequenceServiceStub extends SequenceServiceStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("sequence", request.getSequence(), true)) + .toBody("sequence", request.getSequence(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -112,7 +111,6 @@ public class HttpJsonSequenceServiceStub extends SequenceServiceStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -146,13 +144,12 @@ public class HttpJsonSequenceServiceStub extends SequenceServiceStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("*", request.toBuilder().clearName().build(), true)) + .toBody("*", request.toBuilder().clearName().build(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonTestingStub.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonTestingStub.java index eb1a664bb0..7b030e34f0 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonTestingStub.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/HttpJsonTestingStub.java @@ -86,13 +86,12 @@ public class HttpJsonTestingStub extends TestingStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor( request -> ProtoRestSerializer.create() - .toBody("session", request.getSession(), true)) + .toBody("session", request.getSession(), false)) .build()) .setResponseParser( ProtoMessageResponseParser.newBuilder() @@ -122,7 +121,6 @@ public class HttpJsonTestingStub extends TestingStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -157,7 +155,6 @@ public class HttpJsonTestingStub extends TestingStub { 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) @@ -191,7 +188,6 @@ public class HttpJsonTestingStub extends TestingStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -225,7 +221,6 @@ public class HttpJsonTestingStub extends TestingStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -261,7 +256,6 @@ public class HttpJsonTestingStub extends TestingStub { 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) @@ -294,7 +288,6 @@ public class HttpJsonTestingStub extends TestingStub { Map> fields = new HashMap<>(); ProtoRestSerializer serializer = ProtoRestSerializer.create(); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) @@ -330,7 +323,6 @@ public class HttpJsonTestingStub extends TestingStub { ProtoRestSerializer.create(); serializer.putQueryParam(fields, "answer", request.getAnswer()); serializer.putQueryParam(fields, "answers", request.getAnswersList()); - serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); return fields; }) .setRequestBodyExtractor(request -> null) diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITFirstHttp.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITFirstHttp.java index 02909527ca..e1a66d65ed 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITFirstHttp.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITFirstHttp.java @@ -17,11 +17,9 @@ package com.google.showcase.v1beta1.it; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThrows; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.gax.core.NoCredentialsProvider; -import com.google.api.gax.rpc.InvalidArgumentException; import com.google.showcase.v1beta1.EchoClient; import com.google.showcase.v1beta1.EchoRequest; import com.google.showcase.v1beta1.EchoResponse; @@ -39,7 +37,7 @@ public class ITFirstHttp { @BeforeClass public static void createClient() throws IOException, GeneralSecurityException { EchoSettings echoSettings = - EchoSettings.newBuilder() + EchoSettings.newHttpJsonBuilder() .setCredentialsProvider(NoCredentialsProvider.create()) .setTransportChannelProvider( EchoSettings.defaultHttpJsonTransportProviderBuilder() @@ -57,17 +55,10 @@ public static void destroyClient() { client.close(); } - // TODO(#1187): For 'throws' explanation, see - // https://github.com/googleapis/gapic-showcase/blob/v0.25.0/util/genrest/resttools/systemparam.go#L37-L46 @Test public void testEcho() { - assertThrows( - InvalidArgumentException.class, - () -> assertEquals("http-echo?", echo("http-echo?"))); - - assertThrows( - InvalidArgumentException.class, - () -> assertEquals("http-echo!", echo("http-echo!"))); + assertEquals("http-echo?", echo("http-echo?")); + assertEquals("http-echo!", echo("http-echo!")); } private String echo(String value) { diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITNumericEnums.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITNumericEnums.java index 6c417ae87a..7d87b37d0c 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITNumericEnums.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITNumericEnums.java @@ -16,16 +16,17 @@ package com.google.showcase.v1beta1.it; -import static org.junit.Assert.assertThrows; +import static org.junit.Assert.assertEquals; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.gax.core.NoCredentialsProvider; -import com.google.api.gax.rpc.InvalidArgumentException; import com.google.showcase.v1beta1.ComplianceClient; import com.google.showcase.v1beta1.ComplianceSettings; import com.google.showcase.v1beta1.EnumRequest; import java.io.IOException; import java.security.GeneralSecurityException; + +import com.google.showcase.v1beta1.EnumResponse; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -54,18 +55,10 @@ public void destroyClient() { client.close(); } - // TODO(#1187): For 'throws' explanation, see - // https://github.com/googleapis/gapic-showcase/blob/v0.25.0/util/genrest/resttools/systemparam.go#L37-L46 @Test public void verifyEnums() { EnumRequest request = EnumRequest.newBuilder().setUnknownEnum(true).build(); - - // EnumResponse initialResponse = - assertThrows(InvalidArgumentException.class, () -> client.getEnum(request)); - - // EnumResponse verifiedResponse = client.verifyEnum(initialResponse); - // - // Assert.assertNotNull(initialResponse); - // Assert.assertEquals(initialResponse, verifiedResponse); + EnumResponse initialResponse = client.getEnum(request); + assertEquals(initialResponse, client.verifyEnum(initialResponse)); } } \ No newline at end of file From 46156e0046f288575c8a83a97033e06502d9abe6 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 2 Feb 2023 10:52:46 -0500 Subject: [PATCH 22/82] chore(main): release 2.15.0 (#1269) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- CHANGELOG.md | 15 ++++++++++ WORKSPACE | 2 +- api-common-java/build.gradle | 2 +- api-common-java/pom.xml | 4 +-- gapic-generator-java-bom/pom.xml | 24 ++++++++-------- gapic-generator-java-pom-parent/pom.xml | 2 +- gapic-generator-java/pom.xml | 6 ++-- gax-java/build.gradle | 2 +- gax-java/dependencies.properties | 8 +++--- gax-java/gax-bom/build.gradle | 2 +- gax-java/gax-bom/pom.xml | 14 +++++----- gax-java/gax-grpc/build.gradle | 2 +- gax-java/gax-grpc/pom.xml | 4 +-- gax-java/gax-httpjson/build.gradle | 2 +- gax-java/gax-httpjson/pom.xml | 4 +-- gax-java/gax/build.gradle | 2 +- gax-java/gax/pom.xml | 4 +-- gax-java/pom.xml | 14 +++++----- .../grpc-google-common-protos/pom.xml | 4 +-- java-common-protos/pom.xml | 8 +++--- .../proto-google-common-protos/pom.xml | 4 +-- java-iam/grpc-google-iam-v1/pom.xml | 4 +-- java-iam/grpc-google-iam-v2/pom.xml | 4 +-- java-iam/grpc-google-iam-v2beta/pom.xml | 4 +-- java-iam/pom.xml | 22 +++++++-------- java-iam/proto-google-iam-v1/pom.xml | 4 +-- java-iam/proto-google-iam-v2/pom.xml | 4 +-- java-iam/proto-google-iam-v2beta/pom.xml | 4 +-- showcase/pom.xml | 2 +- versions.txt | 28 +++++++++---------- 30 files changed, 110 insertions(+), 95 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28a3733aaf..bc8059f3fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [2.15.0](https://github.com/googleapis/gapic-generator-java/compare/v2.14.0...v2.15.0) (2023-02-02) + + +### Features + +* Do not generate Service REST code if there are no matching RPC in a Service ([#1236](https://github.com/googleapis/gapic-generator-java/issues/1236)) ([9c06bc9](https://github.com/googleapis/gapic-generator-java/commit/9c06bc95b9aac869bf21c343cbb4b857aa25b593)) + + +### Bug Fixes + +* **ast:** Update import generation to cover annotation parameters ([#1229](https://github.com/googleapis/gapic-generator-java/issues/1229)) ([bdf12b0](https://github.com/googleapis/gapic-generator-java/commit/bdf12b0df91446abac8cb1bf2d361bb886eb91a2)) +* **deps:** Update dependency com.google.auth:google-auth-library-bom to v1.15.0 ([#1278](https://github.com/googleapis/gapic-generator-java/issues/1278)) ([f80861b](https://github.com/googleapis/gapic-generator-java/commit/f80861ba0518be2b9774b3235535f4bd3a27216a)) +* **java:** Initialize netty-shaded at run-time and add reflection configurations for netty classes ([#1290](https://github.com/googleapis/gapic-generator-java/issues/1290)) ([b7ca95f](https://github.com/googleapis/gapic-generator-java/commit/b7ca95f12dfe8287c133e09534be1fc46882ce6c)) +* Support mvn fmt:check and fmt:format ([#1266](https://github.com/googleapis/gapic-generator-java/issues/1266)) ([c96a2e7](https://github.com/googleapis/gapic-generator-java/commit/c96a2e7cf647cf245199c33ad989c8050208646e)) + ## [2.14.0](https://github.com/googleapis/gapic-generator-java/compare/v2.13.0...v2.14.0) (2023-01-19) diff --git a/WORKSPACE b/WORKSPACE index 62b8ff6d3b..cff92cf48e 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -60,7 +60,7 @@ maven_install( repositories = ["https://repo.maven.apache.org/maven2/"], ) -_gapic_generator_java_version = "2.14.1-SNAPSHOT" # {x-version-update:gapic-generator-java:current} +_gapic_generator_java_version = "2.15.0" # {x-version-update:gapic-generator-java:current} maven_install( artifacts = [ diff --git a/api-common-java/build.gradle b/api-common-java/build.gradle index 1bd7673fb2..5718ee4953 100644 --- a/api-common-java/build.gradle +++ b/api-common-java/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'io.github.gradle-nexus.publish-plugin' group = "com.google.api" archivesBaseName = "api-common" -project.version = "2.5.1-SNAPSHOT" // {x-version-update:api-common:current} +project.version = "2.6.0" // {x-version-update:api-common:current} sourceCompatibility = 1.8 targetCompatibility = 1.8 diff --git a/api-common-java/pom.xml b/api-common-java/pom.xml index 62508e7f8a..19192da993 100644 --- a/api-common-java/pom.xml +++ b/api-common-java/pom.xml @@ -5,14 +5,14 @@ com.google.api api-common jar - 2.5.1-SNAPSHOT + 2.6.0 API Common Common utilities for Google APIs in Java com.google.api gapic-generator-java-pom-parent - 2.14.1-SNAPSHOT + 2.15.0 ../gapic-generator-java-pom-parent diff --git a/gapic-generator-java-bom/pom.xml b/gapic-generator-java-bom/pom.xml index bf3cace7ce..46d31a979e 100644 --- a/gapic-generator-java-bom/pom.xml +++ b/gapic-generator-java-bom/pom.xml @@ -4,7 +4,7 @@ com.google.api gapic-generator-java-bom pom - 2.14.1-SNAPSHOT + 2.15.0 GAPIC Generator Java BOM BOM for the libraries in gapic-generator-java repository. Users should not @@ -15,7 +15,7 @@ com.google.api gapic-generator-java-pom-parent - 2.14.1-SNAPSHOT + 2.15.0 ../gapic-generator-java-pom-parent @@ -60,56 +60,56 @@ com.google.api api-common - 2.5.1-SNAPSHOT + 2.6.0 com.google.api gax-bom - 2.22.1-SNAPSHOT + 2.23.0 pom import com.google.api.grpc grpc-google-common-protos - 2.13.1-SNAPSHOT + 2.14.0 com.google.api.grpc proto-google-common-protos - 2.13.1-SNAPSHOT + 2.14.0 com.google.api.grpc proto-google-iam-v1 - 1.8.1-SNAPSHOT + 1.9.0 com.google.api.grpc proto-google-iam-v2 - 1.8.1-SNAPSHOT + 1.9.0 com.google.api.grpc proto-google-iam-v2beta - 1.8.1-SNAPSHOT + 1.9.0 com.google.api.grpc grpc-google-iam-v1 - 1.8.1-SNAPSHOT + 1.9.0 com.google.api.grpc grpc-google-iam-v2 - 1.8.1-SNAPSHOT + 1.9.0 com.google.api.grpc grpc-google-iam-v2beta - 1.8.1-SNAPSHOT + 1.9.0 diff --git a/gapic-generator-java-pom-parent/pom.xml b/gapic-generator-java-pom-parent/pom.xml index 88d2bd3adb..a7d8cec72f 100644 --- a/gapic-generator-java-pom-parent/pom.xml +++ b/gapic-generator-java-pom-parent/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.google.api gapic-generator-java-pom-parent - 2.14.1-SNAPSHOT + 2.15.0 pom GAPIC Generator Java POM Parent https://github.com/googleapis/gapic-generator-java diff --git a/gapic-generator-java/pom.xml b/gapic-generator-java/pom.xml index 2c9deecbb5..fa53061c90 100644 --- a/gapic-generator-java/pom.xml +++ b/gapic-generator-java/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.google.api gapic-generator-java - 2.14.1-SNAPSHOT + 2.15.0 GAPIC Generator Java GAPIC generator Java @@ -23,7 +23,7 @@ com.google.api gapic-generator-java-pom-parent - 2.14.1-SNAPSHOT + 2.15.0 ../gapic-generator-java-pom-parent @@ -32,7 +32,7 @@ com.google.api gapic-generator-java-bom - 2.14.1-SNAPSHOT + 2.15.0 pom import diff --git a/gax-java/build.gradle b/gax-java/build.gradle index e7419ec979..1e48a80ddb 100644 --- a/gax-java/build.gradle +++ b/gax-java/build.gradle @@ -13,7 +13,7 @@ plugins { } // TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync) -project.version = "2.22.1-SNAPSHOT" // {x-version-update:gax:current} +project.version = "2.23.0" // {x-version-update:gax:current} allprojects { group = 'com.google.api' diff --git a/gax-java/dependencies.properties b/gax-java/dependencies.properties index a94244b640..b47582acba 100644 --- a/gax-java/dependencies.properties +++ b/gax-java/dependencies.properties @@ -8,16 +8,16 @@ # Versions of oneself # {x-version-update-start:gax:current} -version.gax=2.22.1-SNAPSHOT +version.gax=2.23.0 # {x-version-update-end} # {x-version-update-start:gax:current} -version.gax_grpc=2.22.1-SNAPSHOT +version.gax_grpc=2.23.0 # {x-version-update-end} # {x-version-update-start:gax:current} -version.gax_bom=2.22.1-SNAPSHOT +version.gax_bom=2.23.0 # {x-version-update-end} # {x-version-update-start:gax-httpjson:current} -version.gax_httpjson=0.107.1-SNAPSHOT +version.gax_httpjson=0.108.0 # {x-version-update-end} # Versions for dependencies which actual artifacts differ between Bazel and Gradle. diff --git a/gax-java/gax-bom/build.gradle b/gax-java/gax-bom/build.gradle index 56467940a8..2280b13423 100644 --- a/gax-java/gax-bom/build.gradle +++ b/gax-java/gax-bom/build.gradle @@ -5,7 +5,7 @@ plugins { archivesBaseName = 'gax-bom' -project.version = "2.22.1-SNAPSHOT" // {x-version-update:gax:current} +project.version = "2.23.0" // {x-version-update:gax:current} def mavenJavaDir = "$buildDir/publications/mavenJava" def mavenJavaBomOutputFile = file(mavenJavaDir + '/pom-default.xml') diff --git a/gax-java/gax-bom/pom.xml b/gax-java/gax-bom/pom.xml index f0a740499d..ef061a8d5c 100644 --- a/gax-java/gax-bom/pom.xml +++ b/gax-java/gax-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.api gax-bom - 2.22.1-SNAPSHOT + 2.23.0 pom GAX (Google Api eXtensions) for Java (BOM) Google Api eXtensions for Java (BOM) @@ -42,34 +42,34 @@ com.google.api gax - 2.22.1-SNAPSHOT + 2.23.0 com.google.api gax - 2.22.1-SNAPSHOT + 2.23.0 testlib com.google.api gax-grpc - 2.22.1-SNAPSHOT + 2.23.0 com.google.api gax-grpc - 2.22.1-SNAPSHOT + 2.23.0 testlib com.google.api gax-httpjson - 0.107.1-SNAPSHOT + 0.108.0 com.google.api gax-httpjson - 0.107.1-SNAPSHOT + 0.108.0 testlib diff --git a/gax-java/gax-grpc/build.gradle b/gax-java/gax-grpc/build.gradle index a10aa73a11..bf88363bc7 100644 --- a/gax-java/gax-grpc/build.gradle +++ b/gax-java/gax-grpc/build.gradle @@ -1,7 +1,7 @@ archivesBaseName = 'gax-grpc' // TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync) -project.version = "2.22.1-SNAPSHOT" // {x-version-update:gax-grpc:current} +project.version = "2.23.0" // {x-version-update:gax-grpc:current} dependencies { api(project(':gax'), diff --git a/gax-java/gax-grpc/pom.xml b/gax-java/gax-grpc/pom.xml index 376139c3f9..1e92e2b52b 100644 --- a/gax-java/gax-grpc/pom.xml +++ b/gax-java/gax-grpc/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax-grpc - 2.22.1-SNAPSHOT + 2.23.0 jar GAX (Google Api eXtensions) for Java (gRPC) Google Api eXtensions for Java (gRPC) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.22.1-SNAPSHOT + 2.23.0 diff --git a/gax-java/gax-httpjson/build.gradle b/gax-java/gax-httpjson/build.gradle index 982a01800e..0622101cc9 100644 --- a/gax-java/gax-httpjson/build.gradle +++ b/gax-java/gax-httpjson/build.gradle @@ -1,7 +1,7 @@ archivesBaseName = 'gax-httpjson' // TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync) -project.version = "0.107.1-SNAPSHOT" // {x-version-update:gax-httpjson:current} +project.version = "0.108.0" // {x-version-update:gax-httpjson:current} dependencies { api(project(':gax'), diff --git a/gax-java/gax-httpjson/pom.xml b/gax-java/gax-httpjson/pom.xml index b3e8527e96..72732b0a15 100644 --- a/gax-java/gax-httpjson/pom.xml +++ b/gax-java/gax-httpjson/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax-httpjson - 0.107.1-SNAPSHOT + 0.108.0 jar GAX (Google Api eXtensions) for Java (HTTP JSON) Google Api eXtensions for Java (HTTP JSON) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.22.1-SNAPSHOT + 2.23.0 diff --git a/gax-java/gax/build.gradle b/gax-java/gax/build.gradle index 0200cb5317..fa9734ff2f 100644 --- a/gax-java/gax/build.gradle +++ b/gax-java/gax/build.gradle @@ -1,7 +1,7 @@ archivesBaseName = "gax" // TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync) -project.version = "2.22.1-SNAPSHOT" // {x-version-update:gax:current} +project.version = "2.23.0" // {x-version-update:gax:current} dependencies { api(libraries['maven.com_google_api_api_common'], diff --git a/gax-java/gax/pom.xml b/gax-java/gax/pom.xml index 4a97427af7..ecfd1b215f 100644 --- a/gax-java/gax/pom.xml +++ b/gax-java/gax/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax - 2.22.1-SNAPSHOT + 2.23.0 jar GAX (Google Api eXtensions) for Java (Core) Google Api eXtensions for Java (Core) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.22.1-SNAPSHOT + 2.23.0 diff --git a/gax-java/pom.xml b/gax-java/pom.xml index 431d8e3a3f..35b9c78b5e 100644 --- a/gax-java/pom.xml +++ b/gax-java/pom.xml @@ -4,14 +4,14 @@ com.google.api gax-parent pom - 2.22.1-SNAPSHOT + 2.23.0 GAX (Google Api eXtensions) for Java (Parent) Google Api eXtensions for Java (Parent) com.google.api gapic-generator-java-pom-parent - 2.14.1-SNAPSHOT + 2.15.0 ../gapic-generator-java-pom-parent @@ -51,7 +51,7 @@ com.google.api api-common - 2.5.1-SNAPSHOT + 2.6.0 com.google.auth @@ -109,24 +109,24 @@ com.google.api gax - 2.22.1-SNAPSHOT + 2.23.0 com.google.api gax - 2.22.1-SNAPSHOT + 2.23.0 test-jar testlib com.google.api.grpc proto-google-common-protos - 2.13.1-SNAPSHOT + 2.14.0 com.google.api.grpc grpc-google-common-protos - 2.13.1-SNAPSHOT + 2.14.0 io.grpc diff --git a/java-common-protos/grpc-google-common-protos/pom.xml b/java-common-protos/grpc-google-common-protos/pom.xml index 587e0a2fe8..ea3c7b5eb8 100644 --- a/java-common-protos/grpc-google-common-protos/pom.xml +++ b/java-common-protos/grpc-google-common-protos/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-common-protos - 2.13.1-SNAPSHOT + 2.14.0 grpc-google-common-protos GRPC library for grpc-google-common-protos com.google.api.grpc google-common-protos-parent - 2.13.1-SNAPSHOT + 2.14.0 diff --git a/java-common-protos/pom.xml b/java-common-protos/pom.xml index 17b0e224d4..8242857a5c 100644 --- a/java-common-protos/pom.xml +++ b/java-common-protos/pom.xml @@ -4,7 +4,7 @@ com.google.api.grpc google-common-protos-parent pom - 2.13.1-SNAPSHOT + 2.14.0 Google Common Protos Parent Java idiomatic client for Google Cloud Platform services. @@ -13,7 +13,7 @@ com.google.api gapic-generator-java-pom-parent - 2.14.1-SNAPSHOT + 2.15.0 ../gapic-generator-java-pom-parent @@ -69,7 +69,7 @@ com.google.api.grpc grpc-google-common-protos - 2.13.1-SNAPSHOT + 2.14.0 io.grpc @@ -81,7 +81,7 @@ com.google.api.grpc proto-google-common-protos - 2.13.1-SNAPSHOT + 2.14.0 com.google.guava diff --git a/java-common-protos/proto-google-common-protos/pom.xml b/java-common-protos/proto-google-common-protos/pom.xml index 559c3b26dc..36296a8d69 100644 --- a/java-common-protos/proto-google-common-protos/pom.xml +++ b/java-common-protos/proto-google-common-protos/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.google.api.grpc proto-google-common-protos - 2.13.1-SNAPSHOT + 2.14.0 proto-google-common-protos PROTO library for proto-google-common-protos com.google.api.grpc google-common-protos-parent - 2.13.1-SNAPSHOT + 2.14.0 diff --git a/java-iam/grpc-google-iam-v1/pom.xml b/java-iam/grpc-google-iam-v1/pom.xml index d49f2baa10..dc1e4e2ff2 100644 --- a/java-iam/grpc-google-iam-v1/pom.xml +++ b/java-iam/grpc-google-iam-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v1 - 1.8.1-SNAPSHOT + 1.9.0 grpc-google-iam-v1 GRPC library for grpc-google-iam-v1 com.google.cloud google-iam-parent - 1.8.1-SNAPSHOT + 1.9.0 diff --git a/java-iam/grpc-google-iam-v2/pom.xml b/java-iam/grpc-google-iam-v2/pom.xml index 1a078f476c..e338c803f1 100644 --- a/java-iam/grpc-google-iam-v2/pom.xml +++ b/java-iam/grpc-google-iam-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v2 - 1.8.1-SNAPSHOT + 1.9.0 grpc-google-iam-v2 GRPC library for proto-google-iam-v2 com.google.cloud google-iam-parent - 1.8.1-SNAPSHOT + 1.9.0 diff --git a/java-iam/grpc-google-iam-v2beta/pom.xml b/java-iam/grpc-google-iam-v2beta/pom.xml index 14268c18c3..4faf8d1247 100644 --- a/java-iam/grpc-google-iam-v2beta/pom.xml +++ b/java-iam/grpc-google-iam-v2beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v2beta - 1.8.1-SNAPSHOT + 1.9.0 grpc-google-iam-v2beta GRPC library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.8.1-SNAPSHOT + 1.9.0 diff --git a/java-iam/pom.xml b/java-iam/pom.xml index 4f4e867fe0..e5f9878295 100644 --- a/java-iam/pom.xml +++ b/java-iam/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-iam-parent pom - 1.8.1-SNAPSHOT + 1.9.0 Google IAM Parent Java idiomatic client for Google Cloud Platform services. @@ -13,7 +13,7 @@ com.google.api gapic-generator-java-pom-parent - 2.14.1-SNAPSHOT + 2.15.0 ../gapic-generator-java-pom-parent @@ -81,49 +81,49 @@ com.google.api gax-bom - 2.22.1-SNAPSHOT + 2.23.0 pom import com.google.api.grpc proto-google-iam-v2 - 1.8.1-SNAPSHOT + 1.9.0 com.google.api.grpc grpc-google-iam-v2 - 1.8.1-SNAPSHOT + 1.9.0 com.google.cloud google-iam-policy - 1.8.1-SNAPSHOT + 1.9.0 com.google.api.grpc proto-google-common-protos - 2.13.1-SNAPSHOT + 2.14.0 com.google.api.grpc proto-google-iam-v2beta - 1.8.1-SNAPSHOT + 1.9.0 com.google.api.grpc grpc-google-iam-v1 - 1.8.1-SNAPSHOT + 1.9.0 com.google.api.grpc grpc-google-iam-v2beta - 1.8.1-SNAPSHOT + 1.9.0 com.google.api.grpc proto-google-iam-v1 - 1.8.1-SNAPSHOT + 1.9.0 javax.annotation diff --git a/java-iam/proto-google-iam-v1/pom.xml b/java-iam/proto-google-iam-v1/pom.xml index 9d181a942a..aa11cbc342 100644 --- a/java-iam/proto-google-iam-v1/pom.xml +++ b/java-iam/proto-google-iam-v1/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v1 - 1.8.1-SNAPSHOT + 1.9.0 proto-google-iam-v1 PROTO library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.8.1-SNAPSHOT + 1.9.0 diff --git a/java-iam/proto-google-iam-v2/pom.xml b/java-iam/proto-google-iam-v2/pom.xml index 13e540869f..0c3d02d814 100644 --- a/java-iam/proto-google-iam-v2/pom.xml +++ b/java-iam/proto-google-iam-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v2 - 1.8.1-SNAPSHOT + 1.9.0 proto-google-iam-v2 Proto library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.8.1-SNAPSHOT + 1.9.0 diff --git a/java-iam/proto-google-iam-v2beta/pom.xml b/java-iam/proto-google-iam-v2beta/pom.xml index 1c482ff72b..5dd5d22057 100644 --- a/java-iam/proto-google-iam-v2beta/pom.xml +++ b/java-iam/proto-google-iam-v2beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v2beta - 1.8.1-SNAPSHOT + 1.9.0 proto-google-iam-v2beta Proto library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.8.1-SNAPSHOT + 1.9.0 diff --git a/showcase/pom.xml b/showcase/pom.xml index 0944f06b81..5231c23bc8 100644 --- a/showcase/pom.xml +++ b/showcase/pom.xml @@ -15,7 +15,7 @@ com.google.api gapic-generator-java-bom - 2.14.1-SNAPSHOT + 2.15.0 ../gapic-generator-java-bom diff --git a/versions.txt b/versions.txt index 03bf6ca4fe..c6eec81224 100644 --- a/versions.txt +++ b/versions.txt @@ -1,17 +1,17 @@ # Format: # module:released-version:current-version -gapic-generator-java:2.14.0:2.14.1-SNAPSHOT -api-common:2.5.0:2.5.1-SNAPSHOT -gax:2.22.0:2.22.1-SNAPSHOT -gax-grpc:2.22.0:2.22.1-SNAPSHOT -gax-httpjson:0.107.0:0.107.1-SNAPSHOT -proto-google-common-protos:2.13.0:2.13.1-SNAPSHOT -grpc-google-common-protos:2.13.0:2.13.1-SNAPSHOT -proto-google-iam-v1:1.8.0:1.8.1-SNAPSHOT -grpc-google-iam-v1:1.8.0:1.8.1-SNAPSHOT -proto-google-iam-v2beta:1.8.0:1.8.1-SNAPSHOT -grpc-google-iam-v2beta:1.8.0:1.8.1-SNAPSHOT -google-iam-policy:1.8.0:1.8.1-SNAPSHOT -proto-google-iam-v2:1.8.0:1.8.1-SNAPSHOT -grpc-google-iam-v2:1.8.0:1.8.1-SNAPSHOT +gapic-generator-java:2.15.0:2.15.0 +api-common:2.6.0:2.6.0 +gax:2.23.0:2.23.0 +gax-grpc:2.23.0:2.23.0 +gax-httpjson:0.108.0:0.108.0 +proto-google-common-protos:2.14.0:2.14.0 +grpc-google-common-protos:2.14.0:2.14.0 +proto-google-iam-v1:1.9.0:1.9.0 +grpc-google-iam-v1:1.9.0:1.9.0 +proto-google-iam-v2beta:1.9.0:1.9.0 +grpc-google-iam-v2beta:1.9.0:1.9.0 +google-iam-policy:1.9.0:1.9.0 +proto-google-iam-v2:1.9.0:1.9.0 +grpc-google-iam-v2:1.9.0:1.9.0 From 8a3ba93224adce0dbeb8376f64823ba7b615ac78 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 2 Feb 2023 11:30:25 -0500 Subject: [PATCH 23/82] chore(main): release 2.15.1-SNAPSHOT (#1292) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- WORKSPACE | 2 +- api-common-java/build.gradle | 2 +- api-common-java/pom.xml | 4 +-- gapic-generator-java-bom/pom.xml | 24 ++++++++-------- gapic-generator-java-pom-parent/pom.xml | 2 +- gapic-generator-java/pom.xml | 6 ++-- gax-java/build.gradle | 2 +- gax-java/dependencies.properties | 8 +++--- gax-java/gax-bom/build.gradle | 2 +- gax-java/gax-bom/pom.xml | 14 +++++----- gax-java/gax-grpc/build.gradle | 2 +- gax-java/gax-grpc/pom.xml | 4 +-- gax-java/gax-httpjson/build.gradle | 2 +- gax-java/gax-httpjson/pom.xml | 4 +-- gax-java/gax/build.gradle | 2 +- gax-java/gax/pom.xml | 4 +-- gax-java/pom.xml | 14 +++++----- .../grpc-google-common-protos/pom.xml | 4 +-- java-common-protos/pom.xml | 8 +++--- .../proto-google-common-protos/pom.xml | 4 +-- java-iam/grpc-google-iam-v1/pom.xml | 4 +-- java-iam/grpc-google-iam-v2/pom.xml | 4 +-- java-iam/grpc-google-iam-v2beta/pom.xml | 4 +-- java-iam/pom.xml | 22 +++++++-------- java-iam/proto-google-iam-v1/pom.xml | 4 +-- java-iam/proto-google-iam-v2/pom.xml | 4 +-- java-iam/proto-google-iam-v2beta/pom.xml | 4 +-- showcase/pom.xml | 2 +- versions.txt | 28 +++++++++---------- 29 files changed, 95 insertions(+), 95 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index cff92cf48e..7aeb183359 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -60,7 +60,7 @@ maven_install( repositories = ["https://repo.maven.apache.org/maven2/"], ) -_gapic_generator_java_version = "2.15.0" # {x-version-update:gapic-generator-java:current} +_gapic_generator_java_version = "2.15.1-SNAPSHOT" # {x-version-update:gapic-generator-java:current} maven_install( artifacts = [ diff --git a/api-common-java/build.gradle b/api-common-java/build.gradle index 5718ee4953..a7d8a5729f 100644 --- a/api-common-java/build.gradle +++ b/api-common-java/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'io.github.gradle-nexus.publish-plugin' group = "com.google.api" archivesBaseName = "api-common" -project.version = "2.6.0" // {x-version-update:api-common:current} +project.version = "2.6.1-SNAPSHOT" // {x-version-update:api-common:current} sourceCompatibility = 1.8 targetCompatibility = 1.8 diff --git a/api-common-java/pom.xml b/api-common-java/pom.xml index 19192da993..43710485b9 100644 --- a/api-common-java/pom.xml +++ b/api-common-java/pom.xml @@ -5,14 +5,14 @@ com.google.api api-common jar - 2.6.0 + 2.6.1-SNAPSHOT API Common Common utilities for Google APIs in Java com.google.api gapic-generator-java-pom-parent - 2.15.0 + 2.15.1-SNAPSHOT ../gapic-generator-java-pom-parent diff --git a/gapic-generator-java-bom/pom.xml b/gapic-generator-java-bom/pom.xml index 46d31a979e..4849d77f07 100644 --- a/gapic-generator-java-bom/pom.xml +++ b/gapic-generator-java-bom/pom.xml @@ -4,7 +4,7 @@ com.google.api gapic-generator-java-bom pom - 2.15.0 + 2.15.1-SNAPSHOT GAPIC Generator Java BOM BOM for the libraries in gapic-generator-java repository. Users should not @@ -15,7 +15,7 @@ com.google.api gapic-generator-java-pom-parent - 2.15.0 + 2.15.1-SNAPSHOT ../gapic-generator-java-pom-parent @@ -60,56 +60,56 @@ com.google.api api-common - 2.6.0 + 2.6.1-SNAPSHOT com.google.api gax-bom - 2.23.0 + 2.23.1-SNAPSHOT pom import com.google.api.grpc grpc-google-common-protos - 2.14.0 + 2.14.1-SNAPSHOT com.google.api.grpc proto-google-common-protos - 2.14.0 + 2.14.1-SNAPSHOT com.google.api.grpc proto-google-iam-v1 - 1.9.0 + 1.9.1-SNAPSHOT com.google.api.grpc proto-google-iam-v2 - 1.9.0 + 1.9.1-SNAPSHOT com.google.api.grpc proto-google-iam-v2beta - 1.9.0 + 1.9.1-SNAPSHOT com.google.api.grpc grpc-google-iam-v1 - 1.9.0 + 1.9.1-SNAPSHOT com.google.api.grpc grpc-google-iam-v2 - 1.9.0 + 1.9.1-SNAPSHOT com.google.api.grpc grpc-google-iam-v2beta - 1.9.0 + 1.9.1-SNAPSHOT diff --git a/gapic-generator-java-pom-parent/pom.xml b/gapic-generator-java-pom-parent/pom.xml index a7d8cec72f..be29707a94 100644 --- a/gapic-generator-java-pom-parent/pom.xml +++ b/gapic-generator-java-pom-parent/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.google.api gapic-generator-java-pom-parent - 2.15.0 + 2.15.1-SNAPSHOT pom GAPIC Generator Java POM Parent https://github.com/googleapis/gapic-generator-java diff --git a/gapic-generator-java/pom.xml b/gapic-generator-java/pom.xml index fa53061c90..ea4738b2dd 100644 --- a/gapic-generator-java/pom.xml +++ b/gapic-generator-java/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.google.api gapic-generator-java - 2.15.0 + 2.15.1-SNAPSHOT GAPIC Generator Java GAPIC generator Java @@ -23,7 +23,7 @@ com.google.api gapic-generator-java-pom-parent - 2.15.0 + 2.15.1-SNAPSHOT ../gapic-generator-java-pom-parent @@ -32,7 +32,7 @@ com.google.api gapic-generator-java-bom - 2.15.0 + 2.15.1-SNAPSHOT pom import diff --git a/gax-java/build.gradle b/gax-java/build.gradle index 1e48a80ddb..558f9e1f81 100644 --- a/gax-java/build.gradle +++ b/gax-java/build.gradle @@ -13,7 +13,7 @@ plugins { } // TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync) -project.version = "2.23.0" // {x-version-update:gax:current} +project.version = "2.23.1-SNAPSHOT" // {x-version-update:gax:current} allprojects { group = 'com.google.api' diff --git a/gax-java/dependencies.properties b/gax-java/dependencies.properties index b47582acba..27a092bc1d 100644 --- a/gax-java/dependencies.properties +++ b/gax-java/dependencies.properties @@ -8,16 +8,16 @@ # Versions of oneself # {x-version-update-start:gax:current} -version.gax=2.23.0 +version.gax=2.23.1-SNAPSHOT # {x-version-update-end} # {x-version-update-start:gax:current} -version.gax_grpc=2.23.0 +version.gax_grpc=2.23.1-SNAPSHOT # {x-version-update-end} # {x-version-update-start:gax:current} -version.gax_bom=2.23.0 +version.gax_bom=2.23.1-SNAPSHOT # {x-version-update-end} # {x-version-update-start:gax-httpjson:current} -version.gax_httpjson=0.108.0 +version.gax_httpjson=0.108.1-SNAPSHOT # {x-version-update-end} # Versions for dependencies which actual artifacts differ between Bazel and Gradle. diff --git a/gax-java/gax-bom/build.gradle b/gax-java/gax-bom/build.gradle index 2280b13423..59b97484e3 100644 --- a/gax-java/gax-bom/build.gradle +++ b/gax-java/gax-bom/build.gradle @@ -5,7 +5,7 @@ plugins { archivesBaseName = 'gax-bom' -project.version = "2.23.0" // {x-version-update:gax:current} +project.version = "2.23.1-SNAPSHOT" // {x-version-update:gax:current} def mavenJavaDir = "$buildDir/publications/mavenJava" def mavenJavaBomOutputFile = file(mavenJavaDir + '/pom-default.xml') diff --git a/gax-java/gax-bom/pom.xml b/gax-java/gax-bom/pom.xml index ef061a8d5c..9be3e41910 100644 --- a/gax-java/gax-bom/pom.xml +++ b/gax-java/gax-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.api gax-bom - 2.23.0 + 2.23.1-SNAPSHOT pom GAX (Google Api eXtensions) for Java (BOM) Google Api eXtensions for Java (BOM) @@ -42,34 +42,34 @@ com.google.api gax - 2.23.0 + 2.23.1-SNAPSHOT com.google.api gax - 2.23.0 + 2.23.1-SNAPSHOT testlib com.google.api gax-grpc - 2.23.0 + 2.23.1-SNAPSHOT com.google.api gax-grpc - 2.23.0 + 2.23.1-SNAPSHOT testlib com.google.api gax-httpjson - 0.108.0 + 0.108.1-SNAPSHOT com.google.api gax-httpjson - 0.108.0 + 0.108.1-SNAPSHOT testlib diff --git a/gax-java/gax-grpc/build.gradle b/gax-java/gax-grpc/build.gradle index bf88363bc7..a08cc0343e 100644 --- a/gax-java/gax-grpc/build.gradle +++ b/gax-java/gax-grpc/build.gradle @@ -1,7 +1,7 @@ archivesBaseName = 'gax-grpc' // TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync) -project.version = "2.23.0" // {x-version-update:gax-grpc:current} +project.version = "2.23.1-SNAPSHOT" // {x-version-update:gax-grpc:current} dependencies { api(project(':gax'), diff --git a/gax-java/gax-grpc/pom.xml b/gax-java/gax-grpc/pom.xml index 1e92e2b52b..ffa979dda2 100644 --- a/gax-java/gax-grpc/pom.xml +++ b/gax-java/gax-grpc/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax-grpc - 2.23.0 + 2.23.1-SNAPSHOT jar GAX (Google Api eXtensions) for Java (gRPC) Google Api eXtensions for Java (gRPC) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.23.0 + 2.23.1-SNAPSHOT diff --git a/gax-java/gax-httpjson/build.gradle b/gax-java/gax-httpjson/build.gradle index 0622101cc9..c477406929 100644 --- a/gax-java/gax-httpjson/build.gradle +++ b/gax-java/gax-httpjson/build.gradle @@ -1,7 +1,7 @@ archivesBaseName = 'gax-httpjson' // TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync) -project.version = "0.108.0" // {x-version-update:gax-httpjson:current} +project.version = "0.108.1-SNAPSHOT" // {x-version-update:gax-httpjson:current} dependencies { api(project(':gax'), diff --git a/gax-java/gax-httpjson/pom.xml b/gax-java/gax-httpjson/pom.xml index 72732b0a15..7eaa8d4e11 100644 --- a/gax-java/gax-httpjson/pom.xml +++ b/gax-java/gax-httpjson/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax-httpjson - 0.108.0 + 0.108.1-SNAPSHOT jar GAX (Google Api eXtensions) for Java (HTTP JSON) Google Api eXtensions for Java (HTTP JSON) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.23.0 + 2.23.1-SNAPSHOT diff --git a/gax-java/gax/build.gradle b/gax-java/gax/build.gradle index fa9734ff2f..11ec880d6a 100644 --- a/gax-java/gax/build.gradle +++ b/gax-java/gax/build.gradle @@ -1,7 +1,7 @@ archivesBaseName = "gax" // TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync) -project.version = "2.23.0" // {x-version-update:gax:current} +project.version = "2.23.1-SNAPSHOT" // {x-version-update:gax:current} dependencies { api(libraries['maven.com_google_api_api_common'], diff --git a/gax-java/gax/pom.xml b/gax-java/gax/pom.xml index ecfd1b215f..ee1dfa0c2c 100644 --- a/gax-java/gax/pom.xml +++ b/gax-java/gax/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax - 2.23.0 + 2.23.1-SNAPSHOT jar GAX (Google Api eXtensions) for Java (Core) Google Api eXtensions for Java (Core) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.23.0 + 2.23.1-SNAPSHOT diff --git a/gax-java/pom.xml b/gax-java/pom.xml index 35b9c78b5e..aed1a9dacd 100644 --- a/gax-java/pom.xml +++ b/gax-java/pom.xml @@ -4,14 +4,14 @@ com.google.api gax-parent pom - 2.23.0 + 2.23.1-SNAPSHOT GAX (Google Api eXtensions) for Java (Parent) Google Api eXtensions for Java (Parent) com.google.api gapic-generator-java-pom-parent - 2.15.0 + 2.15.1-SNAPSHOT ../gapic-generator-java-pom-parent @@ -51,7 +51,7 @@ com.google.api api-common - 2.6.0 + 2.6.1-SNAPSHOT com.google.auth @@ -109,24 +109,24 @@ com.google.api gax - 2.23.0 + 2.23.1-SNAPSHOT com.google.api gax - 2.23.0 + 2.23.1-SNAPSHOT test-jar testlib com.google.api.grpc proto-google-common-protos - 2.14.0 + 2.14.1-SNAPSHOT com.google.api.grpc grpc-google-common-protos - 2.14.0 + 2.14.1-SNAPSHOT io.grpc diff --git a/java-common-protos/grpc-google-common-protos/pom.xml b/java-common-protos/grpc-google-common-protos/pom.xml index ea3c7b5eb8..f68360bc7f 100644 --- a/java-common-protos/grpc-google-common-protos/pom.xml +++ b/java-common-protos/grpc-google-common-protos/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-common-protos - 2.14.0 + 2.14.1-SNAPSHOT grpc-google-common-protos GRPC library for grpc-google-common-protos com.google.api.grpc google-common-protos-parent - 2.14.0 + 2.14.1-SNAPSHOT diff --git a/java-common-protos/pom.xml b/java-common-protos/pom.xml index 8242857a5c..16c5b60a93 100644 --- a/java-common-protos/pom.xml +++ b/java-common-protos/pom.xml @@ -4,7 +4,7 @@ com.google.api.grpc google-common-protos-parent pom - 2.14.0 + 2.14.1-SNAPSHOT Google Common Protos Parent Java idiomatic client for Google Cloud Platform services. @@ -13,7 +13,7 @@ com.google.api gapic-generator-java-pom-parent - 2.15.0 + 2.15.1-SNAPSHOT ../gapic-generator-java-pom-parent @@ -69,7 +69,7 @@ com.google.api.grpc grpc-google-common-protos - 2.14.0 + 2.14.1-SNAPSHOT io.grpc @@ -81,7 +81,7 @@ com.google.api.grpc proto-google-common-protos - 2.14.0 + 2.14.1-SNAPSHOT com.google.guava diff --git a/java-common-protos/proto-google-common-protos/pom.xml b/java-common-protos/proto-google-common-protos/pom.xml index 36296a8d69..c105de9a77 100644 --- a/java-common-protos/proto-google-common-protos/pom.xml +++ b/java-common-protos/proto-google-common-protos/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.google.api.grpc proto-google-common-protos - 2.14.0 + 2.14.1-SNAPSHOT proto-google-common-protos PROTO library for proto-google-common-protos com.google.api.grpc google-common-protos-parent - 2.14.0 + 2.14.1-SNAPSHOT diff --git a/java-iam/grpc-google-iam-v1/pom.xml b/java-iam/grpc-google-iam-v1/pom.xml index dc1e4e2ff2..e8f7887bdf 100644 --- a/java-iam/grpc-google-iam-v1/pom.xml +++ b/java-iam/grpc-google-iam-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v1 - 1.9.0 + 1.9.1-SNAPSHOT grpc-google-iam-v1 GRPC library for grpc-google-iam-v1 com.google.cloud google-iam-parent - 1.9.0 + 1.9.1-SNAPSHOT diff --git a/java-iam/grpc-google-iam-v2/pom.xml b/java-iam/grpc-google-iam-v2/pom.xml index e338c803f1..5319f9d8eb 100644 --- a/java-iam/grpc-google-iam-v2/pom.xml +++ b/java-iam/grpc-google-iam-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v2 - 1.9.0 + 1.9.1-SNAPSHOT grpc-google-iam-v2 GRPC library for proto-google-iam-v2 com.google.cloud google-iam-parent - 1.9.0 + 1.9.1-SNAPSHOT diff --git a/java-iam/grpc-google-iam-v2beta/pom.xml b/java-iam/grpc-google-iam-v2beta/pom.xml index 4faf8d1247..82e8be4183 100644 --- a/java-iam/grpc-google-iam-v2beta/pom.xml +++ b/java-iam/grpc-google-iam-v2beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v2beta - 1.9.0 + 1.9.1-SNAPSHOT grpc-google-iam-v2beta GRPC library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.9.0 + 1.9.1-SNAPSHOT diff --git a/java-iam/pom.xml b/java-iam/pom.xml index e5f9878295..f065ece2c7 100644 --- a/java-iam/pom.xml +++ b/java-iam/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-iam-parent pom - 1.9.0 + 1.9.1-SNAPSHOT Google IAM Parent Java idiomatic client for Google Cloud Platform services. @@ -13,7 +13,7 @@ com.google.api gapic-generator-java-pom-parent - 2.15.0 + 2.15.1-SNAPSHOT ../gapic-generator-java-pom-parent @@ -81,49 +81,49 @@ com.google.api gax-bom - 2.23.0 + 2.23.1-SNAPSHOT pom import com.google.api.grpc proto-google-iam-v2 - 1.9.0 + 1.9.1-SNAPSHOT com.google.api.grpc grpc-google-iam-v2 - 1.9.0 + 1.9.1-SNAPSHOT com.google.cloud google-iam-policy - 1.9.0 + 1.9.1-SNAPSHOT com.google.api.grpc proto-google-common-protos - 2.14.0 + 2.14.1-SNAPSHOT com.google.api.grpc proto-google-iam-v2beta - 1.9.0 + 1.9.1-SNAPSHOT com.google.api.grpc grpc-google-iam-v1 - 1.9.0 + 1.9.1-SNAPSHOT com.google.api.grpc grpc-google-iam-v2beta - 1.9.0 + 1.9.1-SNAPSHOT com.google.api.grpc proto-google-iam-v1 - 1.9.0 + 1.9.1-SNAPSHOT javax.annotation diff --git a/java-iam/proto-google-iam-v1/pom.xml b/java-iam/proto-google-iam-v1/pom.xml index aa11cbc342..4f068d377c 100644 --- a/java-iam/proto-google-iam-v1/pom.xml +++ b/java-iam/proto-google-iam-v1/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v1 - 1.9.0 + 1.9.1-SNAPSHOT proto-google-iam-v1 PROTO library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.9.0 + 1.9.1-SNAPSHOT diff --git a/java-iam/proto-google-iam-v2/pom.xml b/java-iam/proto-google-iam-v2/pom.xml index 0c3d02d814..c57cf81811 100644 --- a/java-iam/proto-google-iam-v2/pom.xml +++ b/java-iam/proto-google-iam-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v2 - 1.9.0 + 1.9.1-SNAPSHOT proto-google-iam-v2 Proto library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.9.0 + 1.9.1-SNAPSHOT diff --git a/java-iam/proto-google-iam-v2beta/pom.xml b/java-iam/proto-google-iam-v2beta/pom.xml index 5dd5d22057..05a339dae8 100644 --- a/java-iam/proto-google-iam-v2beta/pom.xml +++ b/java-iam/proto-google-iam-v2beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v2beta - 1.9.0 + 1.9.1-SNAPSHOT proto-google-iam-v2beta Proto library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.9.0 + 1.9.1-SNAPSHOT diff --git a/showcase/pom.xml b/showcase/pom.xml index 5231c23bc8..70d83246d5 100644 --- a/showcase/pom.xml +++ b/showcase/pom.xml @@ -15,7 +15,7 @@ com.google.api gapic-generator-java-bom - 2.15.0 + 2.15.1-SNAPSHOT ../gapic-generator-java-bom diff --git a/versions.txt b/versions.txt index c6eec81224..39dfad5335 100644 --- a/versions.txt +++ b/versions.txt @@ -1,17 +1,17 @@ # Format: # module:released-version:current-version -gapic-generator-java:2.15.0:2.15.0 -api-common:2.6.0:2.6.0 -gax:2.23.0:2.23.0 -gax-grpc:2.23.0:2.23.0 -gax-httpjson:0.108.0:0.108.0 -proto-google-common-protos:2.14.0:2.14.0 -grpc-google-common-protos:2.14.0:2.14.0 -proto-google-iam-v1:1.9.0:1.9.0 -grpc-google-iam-v1:1.9.0:1.9.0 -proto-google-iam-v2beta:1.9.0:1.9.0 -grpc-google-iam-v2beta:1.9.0:1.9.0 -google-iam-policy:1.9.0:1.9.0 -proto-google-iam-v2:1.9.0:1.9.0 -grpc-google-iam-v2:1.9.0:1.9.0 +gapic-generator-java:2.15.0:2.15.1-SNAPSHOT +api-common:2.6.0:2.6.1-SNAPSHOT +gax:2.23.0:2.23.1-SNAPSHOT +gax-grpc:2.23.0:2.23.1-SNAPSHOT +gax-httpjson:0.108.0:0.108.1-SNAPSHOT +proto-google-common-protos:2.14.0:2.14.1-SNAPSHOT +grpc-google-common-protos:2.14.0:2.14.1-SNAPSHOT +proto-google-iam-v1:1.9.0:1.9.1-SNAPSHOT +grpc-google-iam-v1:1.9.0:1.9.1-SNAPSHOT +proto-google-iam-v2beta:1.9.0:1.9.1-SNAPSHOT +grpc-google-iam-v2beta:1.9.0:1.9.1-SNAPSHOT +google-iam-policy:1.9.0:1.9.1-SNAPSHOT +proto-google-iam-v2:1.9.0:1.9.1-SNAPSHOT +grpc-google-iam-v2:1.9.0:1.9.1-SNAPSHOT From 1cd51fb80bbeb98432bbdf7cbd7dd7bca63b3f25 Mon Sep 17 00:00:00 2001 From: Blake Li Date: Wed, 8 Feb 2023 10:28:34 -0500 Subject: [PATCH 24/82] chore: Pin Bazel version to 5.2.0 (#1304) Pin Bazel version to 5.2.0 as googleapis already updated to 5.2.0 --- .bazeliskrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.bazeliskrc b/.bazeliskrc index 463b45379f..c7ac93c78c 100644 --- a/.bazeliskrc +++ b/.bazeliskrc @@ -1,2 +1,2 @@ # See https://github.com/bazelbuild/bazelisk -USE_BAZEL_VERSION=4.2.2 +USE_BAZEL_VERSION=5.2.0 From ec8ce91c1c8948e2a1cec89513d39c5cee0e3d25 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Feb 2023 11:33:31 -0500 Subject: [PATCH 25/82] build(deps): bump cryptography from 38.0.3 to 39.0.1 in /.kokoro (#1297) Bumps [cryptography](https://github.com/pyca/cryptography) from 38.0.3 to 39.0.1. - [Release notes](https://github.com/pyca/cryptography/releases) - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/38.0.3...39.0.1) --- updated-dependencies: - dependency-name: cryptography dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mridula <66699525+mpeddada1@users.noreply.github.com> --- .kokoro/requirements.in | 2 +- .kokoro/requirements.txt | 49 ++++++++++++++++++---------------------- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/.kokoro/requirements.in b/.kokoro/requirements.in index a5010f77d4..85cfceba4c 100644 --- a/.kokoro/requirements.in +++ b/.kokoro/requirements.in @@ -2,7 +2,7 @@ gcp-docuploader==0.6.3 google-crc32c==1.3.0 googleapis-common-protos==1.56.3 gcp-releasetool==1.9.1 -cryptography==38.0.3 +cryptography==39.0.1 cachetools==4.2.4 cffi==1.15.1 jeepney==0.7.1 diff --git a/.kokoro/requirements.txt b/.kokoro/requirements.txt index 5294c8029f..683677abbf 100644 --- a/.kokoro/requirements.txt +++ b/.kokoro/requirements.txt @@ -104,33 +104,28 @@ colorlog==6.7.0 \ --hash=sha256:0d33ca236784a1ba3ff9c532d4964126d8a2c44f1f0cb1d2b0728196f512f662 \ --hash=sha256:bd94bd21c1e13fac7bd3153f4bc3a7dc0eb0974b8bc2fdf1a989e474f6e582e5 # via gcp-docuploader -cryptography==38.0.3 \ - --hash=sha256:068147f32fa662c81aebab95c74679b401b12b57494872886eb5c1139250ec5d \ - --hash=sha256:06fc3cc7b6f6cca87bd56ec80a580c88f1da5306f505876a71c8cfa7050257dd \ - --hash=sha256:25c1d1f19729fb09d42e06b4bf9895212292cb27bb50229f5aa64d039ab29146 \ - --hash=sha256:402852a0aea73833d982cabb6d0c3bb582c15483d29fb7085ef2c42bfa7e38d7 \ - --hash=sha256:4e269dcd9b102c5a3d72be3c45d8ce20377b8076a43cbed6f660a1afe365e436 \ - --hash=sha256:5419a127426084933076132d317911e3c6eb77568a1ce23c3ac1e12d111e61e0 \ - --hash=sha256:554bec92ee7d1e9d10ded2f7e92a5d70c1f74ba9524947c0ba0c850c7b011828 \ - --hash=sha256:5e89468fbd2fcd733b5899333bc54d0d06c80e04cd23d8c6f3e0542358c6060b \ - --hash=sha256:65535bc550b70bd6271984d9863a37741352b4aad6fb1b3344a54e6950249b55 \ - --hash=sha256:6ab9516b85bebe7aa83f309bacc5f44a61eeb90d0b4ec125d2d003ce41932d36 \ - --hash=sha256:6addc3b6d593cd980989261dc1cce38263c76954d758c3c94de51f1e010c9a50 \ - --hash=sha256:728f2694fa743a996d7784a6194da430f197d5c58e2f4e278612b359f455e4a2 \ - --hash=sha256:785e4056b5a8b28f05a533fab69febf5004458e20dad7e2e13a3120d8ecec75a \ - --hash=sha256:78cf5eefac2b52c10398a42765bfa981ce2372cbc0457e6bf9658f41ec3c41d8 \ - --hash=sha256:7f836217000342d448e1c9a342e9163149e45d5b5eca76a30e84503a5a96cab0 \ - --hash=sha256:8d41a46251bf0634e21fac50ffd643216ccecfaf3701a063257fe0b2be1b6548 \ - --hash=sha256:984fe150f350a3c91e84de405fe49e688aa6092b3525f407a18b9646f6612320 \ - --hash=sha256:9b24bcff7853ed18a63cfb0c2b008936a9554af24af2fb146e16d8e1aed75748 \ - --hash=sha256:b1b35d9d3a65542ed2e9d90115dfd16bbc027b3f07ee3304fc83580f26e43249 \ - --hash=sha256:b1b52c9e5f8aa2b802d48bd693190341fae201ea51c7a167d69fc48b60e8a959 \ - --hash=sha256:bbf203f1a814007ce24bd4d51362991d5cb90ba0c177a9c08825f2cc304d871f \ - --hash=sha256:be243c7e2bfcf6cc4cb350c0d5cdf15ca6383bbcb2a8ef51d3c9411a9d4386f0 \ - --hash=sha256:bfbe6ee19615b07a98b1d2287d6a6073f734735b49ee45b11324d85efc4d5cbd \ - --hash=sha256:c46837ea467ed1efea562bbeb543994c2d1f6e800785bd5a2c98bc096f5cb220 \ - --hash=sha256:dfb4f4dd568de1b6af9f4cda334adf7d72cf5bc052516e1b2608b683375dd95c \ - --hash=sha256:ed7b00096790213e09eb11c97cc6e2b757f15f3d2f85833cd2d3ec3fe37c1722 +cryptography==39.0.1 \ + --hash=sha256:0f8da300b5c8af9f98111ffd512910bc792b4c77392a9523624680f7956a99d4 \ + --hash=sha256:35f7c7d015d474f4011e859e93e789c87d21f6f4880ebdc29896a60403328f1f \ + --hash=sha256:5aa67414fcdfa22cf052e640cb5ddc461924a045cacf325cd164e65312d99502 \ + --hash=sha256:5d2d8b87a490bfcd407ed9d49093793d0f75198a35e6eb1a923ce1ee86c62b41 \ + --hash=sha256:6687ef6d0a6497e2b58e7c5b852b53f62142cfa7cd1555795758934da363a965 \ + --hash=sha256:6f8ba7f0328b79f08bdacc3e4e66fb4d7aab0c3584e0bd41328dce5262e26b2e \ + --hash=sha256:706843b48f9a3f9b9911979761c91541e3d90db1ca905fd63fee540a217698bc \ + --hash=sha256:807ce09d4434881ca3a7594733669bd834f5b2c6d5c7e36f8c00f691887042ad \ + --hash=sha256:83e17b26de248c33f3acffb922748151d71827d6021d98c70e6c1a25ddd78505 \ + --hash=sha256:96f1157a7c08b5b189b16b47bc9db2332269d6680a196341bf30046330d15388 \ + --hash=sha256:aec5a6c9864be7df2240c382740fcf3b96928c46604eaa7f3091f58b878c0bb6 \ + --hash=sha256:b0afd054cd42f3d213bf82c629efb1ee5f22eba35bf0eec88ea9ea7304f511a2 \ + --hash=sha256:ced4e447ae29ca194449a3f1ce132ded8fcab06971ef5f618605aacaa612beac \ + --hash=sha256:d1f6198ee6d9148405e49887803907fe8962a23e6c6f83ea7d98f1c0de375695 \ + --hash=sha256:e124352fd3db36a9d4a21c1aa27fd5d051e621845cb87fb851c08f4f75ce8be6 \ + --hash=sha256:e422abdec8b5fa8462aa016786680720d78bdce7a30c652b7fadf83a4ba35336 \ + --hash=sha256:ef8b72fa70b348724ff1218267e7f7375b8de4e8194d1636ee60510aae104cd0 \ + --hash=sha256:f0c64d1bd842ca2633e74a1a28033d139368ad959872533b1bab8c80e8240a0c \ + --hash=sha256:f24077a3b5298a5a06a8e0536e3ea9ec60e4c7ac486755e5fb6e6ea9b3500106 \ + --hash=sha256:fdd188c8a6ef8769f148f88f859884507b954cc64db6b52f66ef199bb9ad660a \ + --hash=sha256:fe913f20024eb2cb2f323e42a64bdf2911bb9738a15dba7d3cce48151034e3a8 # via # -r requirements.in # gcp-releasetool From 443adec39cf69fde2aec40676297a93867ef8069 Mon Sep 17 00:00:00 2001 From: Deepankar Dixit <90280028+ddixit14@users.noreply.github.com> Date: Wed, 8 Feb 2023 12:26:11 -0500 Subject: [PATCH 26/82] chore: (cleanup) removing unused files (#1265) * chore: (cleanup) removing unused files * chore: working on comments --- .../ISSUE_TEMPLATE/bug_report.md | 16 +- .../ISSUE_TEMPLATE/feature_request.md | 2 +- .../ISSUE_TEMPLATE/support_request.md | 1 - .github/PULL_REQUEST_TEMPLATE.md | 10 + {java-iam/.github => .github}/auto-label.yaml | 2 +- api-common-java/.github/CODEOWNERS | 10 - .../.github/ISSUE_TEMPLATE/bug_report.md | 51 -- .../.github/ISSUE_TEMPLATE/feature_request.md | 21 - .../.github/ISSUE_TEMPLATE/support_request.md | 7 - .../.github/PULL_REQUEST_TEMPLATE.md | 7 - api-common-java/.github/blunderbuss.yml | 7 - .../.github/generated-files-bot.yml | 11 - api-common-java/.github/release-please.yml | 24 - api-common-java/.github/release-trigger.yml | 1 - api-common-java/.github/snippet-bot.yml | 0 .../.github/sync-repo-settings.yaml | 79 --- .../.github/trusted-contribution.yml | 2 - api-common-java/.github/workflows/ci.yaml | 96 ---- .../.github/workflows/downstream.yaml | 144 ------ api-common-java/.kokoro/build.sh | 69 --- api-common-java/.kokoro/coerce_logs.sh | 42 -- api-common-java/.kokoro/common.cfg | 13 - api-common-java/.kokoro/common.sh | 58 --- .../downstream-client-library-check.sh | 92 ---- api-common-java/.kokoro/populate-secrets.sh | 43 -- api-common-java/.kokoro/release/common.cfg | 49 -- api-common-java/.kokoro/release/common.sh | 52 -- .../.kokoro/release/publish_javadoc11.cfg | 30 -- .../.kokoro/release/publish_javadoc11.sh | 66 --- api-common-java/.kokoro/release/stage.cfg | 19 - api-common-java/.kokoro/release/stage.sh | 50 -- api-common-java/.kokoro/requirements.in | 34 -- api-common-java/.kokoro/requirements.txt | 455 ----------------- api-common-java/.kokoro/trampoline.sh | 26 - gax-java/.github/CODEOWNERS | 7 - gax-java/.github/release-please.yml | 12 - gax-java/.github/release-trigger.yml | 1 - gax-java/.github/snippet-bot.yml | 2 - gax-java/.github/sync-repo-settings.yaml | 45 -- gax-java/.github/workflows/ci.yaml | 113 ----- .../workflows/downstream-native-image.yaml | 41 -- gax-java/.github/workflows/downstream.yaml | 144 ------ gax-java/.github/workflows/sonar.yaml | 38 -- gax-java/.kokoro/build.sh | 60 --- gax-java/.kokoro/common.cfg | 13 - .../downstream-client-library-check.sh | 99 ---- gax-java/.kokoro/populate-secrets.sh | 43 -- gax-java/.kokoro/release/common.cfg | 50 -- gax-java/.kokoro/release/common.sh | 52 -- .../.kokoro/release/publish_javadoc11.cfg | 29 -- gax-java/.kokoro/release/publish_javadoc11.sh | 76 --- gax-java/.kokoro/release/stage.cfg | 17 - gax-java/.kokoro/release/stage.sh | 52 -- gax-java/.kokoro/requirements.in | 34 -- gax-java/.kokoro/requirements.txt | 455 ----------------- gax-java/.kokoro/trampoline.sh | 26 - java-common-protos/.github/CODEOWNERS | 13 - .../.github/ISSUE_TEMPLATE/support_request.md | 7 - .../.github/PULL_REQUEST_TEMPLATE.md | 10 - java-common-protos/.github/auto-label.yaml | 15 - java-common-protos/.github/blunderbuss.yml | 7 - .../.github/generated-files-bot.yml | 12 - java-common-protos/.github/release-please.yml | 20 - .../.github/release-trigger.yml | 1 - java-common-protos/.github/snippet-bot.yml | 0 .../.github/sync-repo-settings.yaml | 86 ---- .../.github/trusted-contribution.yml | 3 - .../.github/workflows/approve-readme.yaml | 69 --- .../.github/workflows/auto-release.yaml | 103 ---- java-common-protos/.github/workflows/ci.yaml | 89 ---- java-common-protos/.kokoro/build.bat | 18 - java-common-protos/.kokoro/build.sh | 134 ----- java-common-protos/.kokoro/coerce_logs.sh | 37 -- java-common-protos/.kokoro/common.cfg | 13 - java-common-protos/.kokoro/common.sh | 60 --- .../.kokoro/continuous/common.cfg | 25 - .../.kokoro/continuous/java8.cfg | 12 - java-common-protos/.kokoro/dependencies.sh | 110 ----- java-common-protos/.kokoro/nightly/common.cfg | 25 - .../.kokoro/nightly/integration.cfg | 37 -- .../.kokoro/nightly/java11-integration.cfg | 37 -- java-common-protos/.kokoro/nightly/java11.cfg | 7 - java-common-protos/.kokoro/nightly/java7.cfg | 7 - .../.kokoro/nightly/java8-osx.cfg | 3 - .../.kokoro/nightly/java8-win.cfg | 3 - java-common-protos/.kokoro/nightly/java8.cfg | 12 - .../.kokoro/nightly/samples.cfg | 38 -- .../.kokoro/populate-secrets.sh | 43 -- .../.kokoro/presubmit/clirr.cfg | 13 - .../.kokoro/presubmit/common.cfg | 34 -- .../.kokoro/presubmit/dependencies.cfg | 12 - .../.kokoro/presubmit/graalvm-native-17.cfg | 33 -- .../.kokoro/presubmit/graalvm-native.cfg | 33 -- .../.kokoro/presubmit/integration.cfg | 33 -- .../.kokoro/presubmit/java11.cfg | 7 - .../.kokoro/presubmit/java7.cfg | 7 - .../.kokoro/presubmit/java8-osx.cfg | 3 - .../.kokoro/presubmit/java8-win.cfg | 3 - .../.kokoro/presubmit/java8.cfg | 12 - .../.kokoro/presubmit/linkage-monitor.cfg | 12 - java-common-protos/.kokoro/presubmit/lint.cfg | 13 - .../.kokoro/presubmit/samples.cfg | 33 -- java-common-protos/.kokoro/readme.sh | 45 -- .../.kokoro/release/bump_snapshot.cfg | 53 -- java-common-protos/.kokoro/release/common.cfg | 49 -- java-common-protos/.kokoro/release/common.sh | 50 -- java-common-protos/.kokoro/release/drop.cfg | 6 - java-common-protos/.kokoro/release/drop.sh | 32 -- .../.kokoro/release/promote.cfg | 6 - java-common-protos/.kokoro/release/promote.sh | 34 -- .../.kokoro/release/publish_javadoc.cfg | 23 - .../.kokoro/release/publish_javadoc.sh | 53 -- .../.kokoro/release/publish_javadoc11.cfg | 30 -- .../.kokoro/release/publish_javadoc11.sh | 63 --- .../.kokoro/release/snapshot.cfg | 6 - .../.kokoro/release/snapshot.sh | 33 -- java-common-protos/.kokoro/release/stage.cfg | 19 - java-common-protos/.kokoro/release/stage.sh | 47 -- java-common-protos/.kokoro/requirements.in | 34 -- java-common-protos/.kokoro/requirements.txt | 456 ------------------ java-common-protos/.kokoro/trampoline.sh | 26 - java-iam/.github/CODEOWNERS | 13 - java-iam/.github/ISSUE_TEMPLATE/bug_report.md | 51 -- .../.github/ISSUE_TEMPLATE/feature_request.md | 21 - java-iam/.github/PULL_REQUEST_TEMPLATE.md | 10 - java-iam/.github/blunderbuss.yml | 7 - java-iam/.github/generated-files-bot.yml | 12 - java-iam/.github/release-please.yml | 8 - java-iam/.github/release-trigger.yml | 1 - java-iam/.github/snippet-bot.yml | 0 java-iam/.github/sync-repo-settings.yaml | 40 -- java-iam/.github/trusted-contribution.yml | 3 - .../.github/workflows/approve-readme.yaml | 69 --- java-iam/.github/workflows/auto-release.yaml | 103 ---- java-iam/.github/workflows/ci.yaml | 89 ---- java-iam/.kokoro/build.bat | 18 - java-iam/.kokoro/build.sh | 134 ----- java-iam/.kokoro/coerce_logs.sh | 37 -- java-iam/.kokoro/common.cfg | 13 - java-iam/.kokoro/common.sh | 60 --- java-iam/.kokoro/continuous/common.cfg | 25 - java-iam/.kokoro/continuous/dependencies.cfg | 12 - java-iam/.kokoro/continuous/integration.cfg | 7 - java-iam/.kokoro/continuous/java11.cfg | 7 - java-iam/.kokoro/continuous/java7.cfg | 7 - java-iam/.kokoro/continuous/java8-osx.cfg | 3 - java-iam/.kokoro/continuous/java8-win.cfg | 3 - java-iam/.kokoro/continuous/java8.cfg | 12 - java-iam/.kokoro/continuous/lint.cfg | 13 - .../.kokoro/continuous/propose_release.cfg | 53 -- java-iam/.kokoro/continuous/samples.cfg | 31 -- java-iam/.kokoro/dependencies.sh | 59 --- java-iam/.kokoro/nightly/common.cfg | 25 - java-iam/.kokoro/nightly/dependencies.cfg | 12 - java-iam/.kokoro/nightly/integration.cfg | 37 -- .../.kokoro/nightly/java11-integration.cfg | 37 -- java-iam/.kokoro/nightly/java11.cfg | 7 - java-iam/.kokoro/nightly/java7.cfg | 7 - java-iam/.kokoro/nightly/java8-osx.cfg | 3 - java-iam/.kokoro/nightly/java8-win.cfg | 3 - java-iam/.kokoro/nightly/java8.cfg | 12 - java-iam/.kokoro/nightly/lint.cfg | 13 - java-iam/.kokoro/nightly/samples.cfg | 38 -- java-iam/.kokoro/populate-secrets.sh | 43 -- java-iam/.kokoro/presubmit/clirr.cfg | 13 - java-iam/.kokoro/presubmit/common.cfg | 34 -- java-iam/.kokoro/presubmit/dependencies.cfg | 12 - .../.kokoro/presubmit/graalvm-native-17.cfg | 33 -- java-iam/.kokoro/presubmit/graalvm-native.cfg | 33 -- java-iam/.kokoro/presubmit/integration.cfg | 33 -- java-iam/.kokoro/presubmit/java11.cfg | 7 - java-iam/.kokoro/presubmit/java7.cfg | 7 - java-iam/.kokoro/presubmit/java8-osx.cfg | 3 - java-iam/.kokoro/presubmit/java8-win.cfg | 3 - java-iam/.kokoro/presubmit/java8.cfg | 12 - .../.kokoro/presubmit/linkage-monitor.cfg | 12 - java-iam/.kokoro/presubmit/lint.cfg | 13 - java-iam/.kokoro/presubmit/samples.cfg | 33 -- java-iam/.kokoro/readme.sh | 45 -- java-iam/.kokoro/release/bump_snapshot.cfg | 53 -- java-iam/.kokoro/release/common.cfg | 49 -- java-iam/.kokoro/release/common.sh | 50 -- java-iam/.kokoro/release/drop.cfg | 6 - java-iam/.kokoro/release/drop.sh | 32 -- java-iam/.kokoro/release/promote.cfg | 6 - java-iam/.kokoro/release/promote.sh | 34 -- java-iam/.kokoro/release/publish_javadoc.cfg | 23 - java-iam/.kokoro/release/publish_javadoc.sh | 53 -- .../.kokoro/release/publish_javadoc11.cfg | 30 -- java-iam/.kokoro/release/publish_javadoc11.sh | 63 --- java-iam/.kokoro/release/snapshot.cfg | 6 - java-iam/.kokoro/release/snapshot.sh | 33 -- java-iam/.kokoro/release/stage.cfg | 19 - java-iam/.kokoro/release/stage.sh | 47 -- java-iam/.kokoro/requirements.in | 34 -- java-iam/.kokoro/requirements.txt | 456 ------------------ java-iam/.kokoro/trampoline.sh | 26 - 197 files changed, 20 insertions(+), 7818 deletions(-) rename {java-common-protos/.github => .github}/ISSUE_TEMPLATE/bug_report.md (62%) rename {java-common-protos/.github => .github}/ISSUE_TEMPLATE/feature_request.md (91%) rename {java-iam/.github => .github}/ISSUE_TEMPLATE/support_request.md (98%) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md rename {java-iam/.github => .github}/auto-label.yaml (97%) delete mode 100644 api-common-java/.github/CODEOWNERS delete mode 100644 api-common-java/.github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 api-common-java/.github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 api-common-java/.github/ISSUE_TEMPLATE/support_request.md delete mode 100644 api-common-java/.github/PULL_REQUEST_TEMPLATE.md delete mode 100644 api-common-java/.github/blunderbuss.yml delete mode 100644 api-common-java/.github/generated-files-bot.yml delete mode 100644 api-common-java/.github/release-please.yml delete mode 100644 api-common-java/.github/release-trigger.yml delete mode 100644 api-common-java/.github/snippet-bot.yml delete mode 100644 api-common-java/.github/sync-repo-settings.yaml delete mode 100644 api-common-java/.github/trusted-contribution.yml delete mode 100644 api-common-java/.github/workflows/ci.yaml delete mode 100644 api-common-java/.github/workflows/downstream.yaml delete mode 100755 api-common-java/.kokoro/build.sh delete mode 100755 api-common-java/.kokoro/coerce_logs.sh delete mode 100644 api-common-java/.kokoro/common.cfg delete mode 100644 api-common-java/.kokoro/common.sh delete mode 100755 api-common-java/.kokoro/downstream-client-library-check.sh delete mode 100755 api-common-java/.kokoro/populate-secrets.sh delete mode 100644 api-common-java/.kokoro/release/common.cfg delete mode 100755 api-common-java/.kokoro/release/common.sh delete mode 100644 api-common-java/.kokoro/release/publish_javadoc11.cfg delete mode 100755 api-common-java/.kokoro/release/publish_javadoc11.sh delete mode 100644 api-common-java/.kokoro/release/stage.cfg delete mode 100755 api-common-java/.kokoro/release/stage.sh delete mode 100644 api-common-java/.kokoro/requirements.in delete mode 100644 api-common-java/.kokoro/requirements.txt delete mode 100644 api-common-java/.kokoro/trampoline.sh delete mode 100644 gax-java/.github/CODEOWNERS delete mode 100644 gax-java/.github/release-please.yml delete mode 100644 gax-java/.github/release-trigger.yml delete mode 100644 gax-java/.github/snippet-bot.yml delete mode 100644 gax-java/.github/sync-repo-settings.yaml delete mode 100644 gax-java/.github/workflows/ci.yaml delete mode 100644 gax-java/.github/workflows/downstream-native-image.yaml delete mode 100644 gax-java/.github/workflows/downstream.yaml delete mode 100644 gax-java/.github/workflows/sonar.yaml delete mode 100755 gax-java/.kokoro/build.sh delete mode 100644 gax-java/.kokoro/common.cfg delete mode 100755 gax-java/.kokoro/downstream-client-library-check.sh delete mode 100755 gax-java/.kokoro/populate-secrets.sh delete mode 100644 gax-java/.kokoro/release/common.cfg delete mode 100755 gax-java/.kokoro/release/common.sh delete mode 100644 gax-java/.kokoro/release/publish_javadoc11.cfg delete mode 100755 gax-java/.kokoro/release/publish_javadoc11.sh delete mode 100644 gax-java/.kokoro/release/stage.cfg delete mode 100755 gax-java/.kokoro/release/stage.sh delete mode 100644 gax-java/.kokoro/requirements.in delete mode 100644 gax-java/.kokoro/requirements.txt delete mode 100755 gax-java/.kokoro/trampoline.sh delete mode 100644 java-common-protos/.github/CODEOWNERS delete mode 100644 java-common-protos/.github/ISSUE_TEMPLATE/support_request.md delete mode 100644 java-common-protos/.github/PULL_REQUEST_TEMPLATE.md delete mode 100644 java-common-protos/.github/auto-label.yaml delete mode 100644 java-common-protos/.github/blunderbuss.yml delete mode 100644 java-common-protos/.github/generated-files-bot.yml delete mode 100644 java-common-protos/.github/release-please.yml delete mode 100644 java-common-protos/.github/release-trigger.yml delete mode 100644 java-common-protos/.github/snippet-bot.yml delete mode 100644 java-common-protos/.github/sync-repo-settings.yaml delete mode 100644 java-common-protos/.github/trusted-contribution.yml delete mode 100644 java-common-protos/.github/workflows/approve-readme.yaml delete mode 100644 java-common-protos/.github/workflows/auto-release.yaml delete mode 100644 java-common-protos/.github/workflows/ci.yaml delete mode 100644 java-common-protos/.kokoro/build.bat delete mode 100755 java-common-protos/.kokoro/build.sh delete mode 100755 java-common-protos/.kokoro/coerce_logs.sh delete mode 100644 java-common-protos/.kokoro/common.cfg delete mode 100644 java-common-protos/.kokoro/common.sh delete mode 100644 java-common-protos/.kokoro/continuous/common.cfg delete mode 100644 java-common-protos/.kokoro/continuous/java8.cfg delete mode 100755 java-common-protos/.kokoro/dependencies.sh delete mode 100644 java-common-protos/.kokoro/nightly/common.cfg delete mode 100644 java-common-protos/.kokoro/nightly/integration.cfg delete mode 100644 java-common-protos/.kokoro/nightly/java11-integration.cfg delete mode 100644 java-common-protos/.kokoro/nightly/java11.cfg delete mode 100644 java-common-protos/.kokoro/nightly/java7.cfg delete mode 100644 java-common-protos/.kokoro/nightly/java8-osx.cfg delete mode 100644 java-common-protos/.kokoro/nightly/java8-win.cfg delete mode 100644 java-common-protos/.kokoro/nightly/java8.cfg delete mode 100644 java-common-protos/.kokoro/nightly/samples.cfg delete mode 100755 java-common-protos/.kokoro/populate-secrets.sh delete mode 100644 java-common-protos/.kokoro/presubmit/clirr.cfg delete mode 100644 java-common-protos/.kokoro/presubmit/common.cfg delete mode 100644 java-common-protos/.kokoro/presubmit/dependencies.cfg delete mode 100644 java-common-protos/.kokoro/presubmit/graalvm-native-17.cfg delete mode 100644 java-common-protos/.kokoro/presubmit/graalvm-native.cfg delete mode 100644 java-common-protos/.kokoro/presubmit/integration.cfg delete mode 100644 java-common-protos/.kokoro/presubmit/java11.cfg delete mode 100644 java-common-protos/.kokoro/presubmit/java7.cfg delete mode 100644 java-common-protos/.kokoro/presubmit/java8-osx.cfg delete mode 100644 java-common-protos/.kokoro/presubmit/java8-win.cfg delete mode 100644 java-common-protos/.kokoro/presubmit/java8.cfg delete mode 100644 java-common-protos/.kokoro/presubmit/linkage-monitor.cfg delete mode 100644 java-common-protos/.kokoro/presubmit/lint.cfg delete mode 100644 java-common-protos/.kokoro/presubmit/samples.cfg delete mode 100755 java-common-protos/.kokoro/readme.sh delete mode 100644 java-common-protos/.kokoro/release/bump_snapshot.cfg delete mode 100644 java-common-protos/.kokoro/release/common.cfg delete mode 100755 java-common-protos/.kokoro/release/common.sh delete mode 100644 java-common-protos/.kokoro/release/drop.cfg delete mode 100755 java-common-protos/.kokoro/release/drop.sh delete mode 100644 java-common-protos/.kokoro/release/promote.cfg delete mode 100755 java-common-protos/.kokoro/release/promote.sh delete mode 100644 java-common-protos/.kokoro/release/publish_javadoc.cfg delete mode 100755 java-common-protos/.kokoro/release/publish_javadoc.sh delete mode 100644 java-common-protos/.kokoro/release/publish_javadoc11.cfg delete mode 100755 java-common-protos/.kokoro/release/publish_javadoc11.sh delete mode 100644 java-common-protos/.kokoro/release/snapshot.cfg delete mode 100755 java-common-protos/.kokoro/release/snapshot.sh delete mode 100644 java-common-protos/.kokoro/release/stage.cfg delete mode 100755 java-common-protos/.kokoro/release/stage.sh delete mode 100644 java-common-protos/.kokoro/requirements.in delete mode 100644 java-common-protos/.kokoro/requirements.txt delete mode 100644 java-common-protos/.kokoro/trampoline.sh delete mode 100644 java-iam/.github/CODEOWNERS delete mode 100644 java-iam/.github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 java-iam/.github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 java-iam/.github/PULL_REQUEST_TEMPLATE.md delete mode 100644 java-iam/.github/blunderbuss.yml delete mode 100644 java-iam/.github/generated-files-bot.yml delete mode 100644 java-iam/.github/release-please.yml delete mode 100644 java-iam/.github/release-trigger.yml delete mode 100644 java-iam/.github/snippet-bot.yml delete mode 100644 java-iam/.github/sync-repo-settings.yaml delete mode 100644 java-iam/.github/trusted-contribution.yml delete mode 100644 java-iam/.github/workflows/approve-readme.yaml delete mode 100644 java-iam/.github/workflows/auto-release.yaml delete mode 100644 java-iam/.github/workflows/ci.yaml delete mode 100644 java-iam/.kokoro/build.bat delete mode 100755 java-iam/.kokoro/build.sh delete mode 100755 java-iam/.kokoro/coerce_logs.sh delete mode 100644 java-iam/.kokoro/common.cfg delete mode 100644 java-iam/.kokoro/common.sh delete mode 100644 java-iam/.kokoro/continuous/common.cfg delete mode 100644 java-iam/.kokoro/continuous/dependencies.cfg delete mode 100644 java-iam/.kokoro/continuous/integration.cfg delete mode 100644 java-iam/.kokoro/continuous/java11.cfg delete mode 100644 java-iam/.kokoro/continuous/java7.cfg delete mode 100644 java-iam/.kokoro/continuous/java8-osx.cfg delete mode 100644 java-iam/.kokoro/continuous/java8-win.cfg delete mode 100644 java-iam/.kokoro/continuous/java8.cfg delete mode 100644 java-iam/.kokoro/continuous/lint.cfg delete mode 100644 java-iam/.kokoro/continuous/propose_release.cfg delete mode 100644 java-iam/.kokoro/continuous/samples.cfg delete mode 100755 java-iam/.kokoro/dependencies.sh delete mode 100644 java-iam/.kokoro/nightly/common.cfg delete mode 100644 java-iam/.kokoro/nightly/dependencies.cfg delete mode 100644 java-iam/.kokoro/nightly/integration.cfg delete mode 100644 java-iam/.kokoro/nightly/java11-integration.cfg delete mode 100644 java-iam/.kokoro/nightly/java11.cfg delete mode 100644 java-iam/.kokoro/nightly/java7.cfg delete mode 100644 java-iam/.kokoro/nightly/java8-osx.cfg delete mode 100644 java-iam/.kokoro/nightly/java8-win.cfg delete mode 100644 java-iam/.kokoro/nightly/java8.cfg delete mode 100644 java-iam/.kokoro/nightly/lint.cfg delete mode 100644 java-iam/.kokoro/nightly/samples.cfg delete mode 100755 java-iam/.kokoro/populate-secrets.sh delete mode 100644 java-iam/.kokoro/presubmit/clirr.cfg delete mode 100644 java-iam/.kokoro/presubmit/common.cfg delete mode 100644 java-iam/.kokoro/presubmit/dependencies.cfg delete mode 100644 java-iam/.kokoro/presubmit/graalvm-native-17.cfg delete mode 100644 java-iam/.kokoro/presubmit/graalvm-native.cfg delete mode 100644 java-iam/.kokoro/presubmit/integration.cfg delete mode 100644 java-iam/.kokoro/presubmit/java11.cfg delete mode 100644 java-iam/.kokoro/presubmit/java7.cfg delete mode 100644 java-iam/.kokoro/presubmit/java8-osx.cfg delete mode 100644 java-iam/.kokoro/presubmit/java8-win.cfg delete mode 100644 java-iam/.kokoro/presubmit/java8.cfg delete mode 100644 java-iam/.kokoro/presubmit/linkage-monitor.cfg delete mode 100644 java-iam/.kokoro/presubmit/lint.cfg delete mode 100644 java-iam/.kokoro/presubmit/samples.cfg delete mode 100755 java-iam/.kokoro/readme.sh delete mode 100644 java-iam/.kokoro/release/bump_snapshot.cfg delete mode 100644 java-iam/.kokoro/release/common.cfg delete mode 100755 java-iam/.kokoro/release/common.sh delete mode 100644 java-iam/.kokoro/release/drop.cfg delete mode 100755 java-iam/.kokoro/release/drop.sh delete mode 100644 java-iam/.kokoro/release/promote.cfg delete mode 100755 java-iam/.kokoro/release/promote.sh delete mode 100644 java-iam/.kokoro/release/publish_javadoc.cfg delete mode 100755 java-iam/.kokoro/release/publish_javadoc.sh delete mode 100644 java-iam/.kokoro/release/publish_javadoc11.cfg delete mode 100755 java-iam/.kokoro/release/publish_javadoc11.sh delete mode 100644 java-iam/.kokoro/release/snapshot.cfg delete mode 100755 java-iam/.kokoro/release/snapshot.sh delete mode 100644 java-iam/.kokoro/release/stage.cfg delete mode 100755 java-iam/.kokoro/release/stage.sh delete mode 100644 java-iam/.kokoro/requirements.in delete mode 100644 java-iam/.kokoro/requirements.txt delete mode 100644 java-iam/.kokoro/trampoline.sh diff --git a/java-common-protos/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md similarity index 62% rename from java-common-protos/.github/ISSUE_TEMPLATE/bug_report.md rename to .github/ISSUE_TEMPLATE/bug_report.md index 9bfcd1fe02..c36cc0354f 100644 --- a/java-common-protos/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -10,23 +10,23 @@ Thanks for stopping by to let us know something could be better! Please run down the following list and make sure you've tried the usual "quick fixes": - - Search the issues already opened: https://github.com/googleapis/java-common-protos/issues - - Check for answers on StackOverflow: http://stackoverflow.com/questions/tagged/google-cloud-platform +- Search the issues already opened: https://github.com/googleapis/gapic-generator-java/issues +- Check for answers on StackOverflow: http://stackoverflow.com/questions/tagged/google-cloud-platform If you are still having issues, please include as much information as possible: #### Environment details -1. Specify the API at the beginning of the title. For example, "BigQuery: ..."). - General, Core, and Other are also allowed as types +1. Specify the artifact at the beginning of the title. For example, "api-common", "gax" etc) 2. OS type and version: 3. Java version: -4. version(s): +4. artifact version(s): #### Steps to reproduce +If possible, please provide a test case or sample application that reproduces the problem. This makes it much easier for us to diagnose the problem and to verify that we have fixed it. - 1. ? - 2. ? +1. ? +2. ? #### Code example @@ -48,4 +48,4 @@ Any relevant stacktrace here. Following these steps guarantees the quickest resolution possible. -Thanks! +Thanks! \ No newline at end of file diff --git a/java-common-protos/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md similarity index 91% rename from java-common-protos/.github/ISSUE_TEMPLATE/feature_request.md rename to .github/ISSUE_TEMPLATE/feature_request.md index 754e30c68a..63c28769c1 100644 --- a/java-common-protos/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -18,4 +18,4 @@ What you want to happen. Any alternative solutions or features you've considered. **Additional context** -Any other context or screenshots about the feature request. +Any other context or screenshots about the feature request. \ No newline at end of file diff --git a/java-iam/.github/ISSUE_TEMPLATE/support_request.md b/.github/ISSUE_TEMPLATE/support_request.md similarity index 98% rename from java-iam/.github/ISSUE_TEMPLATE/support_request.md rename to .github/ISSUE_TEMPLATE/support_request.md index 9958690321..35d1cd8665 100644 --- a/java-iam/.github/ISSUE_TEMPLATE/support_request.md +++ b/.github/ISSUE_TEMPLATE/support_request.md @@ -1,4 +1,3 @@ ---- name: Support request about: If you have a support contract with Google, please create an issue in the Google Cloud Support console. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000000..5f3f055bdf --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,10 @@ +Thank you for opening a Pull Request! For general contributing guidelines, please refer to [contributing guide](https://github.com/googleapis/gapic-generator-java/blob/main/CONTRIBUTING.md) + +Before submitting your PR, there are a few things you can do to make sure it goes smoothly: + +- [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/gapic-generator-java/issues/new/choose) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea +- [ ] Ensure the tests and linter pass +- [ ] Code coverage does not decrease (if any source code was changed) +- [ ] Appropriate docs were updated (if necessary) + +Fixes # ☕️ \ No newline at end of file diff --git a/java-iam/.github/auto-label.yaml b/.github/auto-label.yaml similarity index 97% rename from java-iam/.github/auto-label.yaml rename to .github/auto-label.yaml index 4caef688b7..3d1d831a11 100644 --- a/java-iam/.github/auto-label.yaml +++ b/.github/auto-label.yaml @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. requestsize: - enabled: true + enabled: true \ No newline at end of file diff --git a/api-common-java/.github/CODEOWNERS b/api-common-java/.github/CODEOWNERS deleted file mode 100644 index 1bb9607cb2..0000000000 --- a/api-common-java/.github/CODEOWNERS +++ /dev/null @@ -1,10 +0,0 @@ -# Code owners file. -# This file controls who is tagged for review for any given pull request. - -# For syntax help see: -# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#codeowners-syntax - -* @googleapis/actools-java @googleapis/yoshi-java - -# The java-samples-reviewers team is the default owner for samples changes -samples/**/*.java @googleapis/java-samples-reviewers diff --git a/api-common-java/.github/ISSUE_TEMPLATE/bug_report.md b/api-common-java/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 4924b71dd0..0000000000 --- a/api-common-java/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve - ---- - -Thanks for stopping by to let us know something could be better! - -**PLEASE READ**: If you have a support contract with Google, please create an issue in the [support console](https://cloud.google.com/support/) instead of filing on GitHub. This will ensure a timely response. - -Please run down the following list and make sure you've tried the usual "quick fixes": - - - Search the issues already opened: https://github.com/googleapis/api-common-java/issues - - Check for answers on StackOverflow: http://stackoverflow.com/questions/tagged/google-cloud-platform - -If you are still having issues, please include as much information as possible: - -#### Environment details - -1. Specify the API at the beginning of the title. For example, "BigQuery: ..."). - General, Core, and Other are also allowed as types -2. OS type and version: -3. Java version: -4. api-common-java version(s): - -#### Steps to reproduce - - 1. ? - 2. ? - -#### Code example - -```java -// example -``` - -#### Stack trace -``` -Any relevant stacktrace here. -``` - -#### External references such as API reference guides - -- ? - -#### Any additional information below - - -Following these steps guarantees the quickest resolution possible. - -Thanks! diff --git a/api-common-java/.github/ISSUE_TEMPLATE/feature_request.md b/api-common-java/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 754e30c68a..0000000000 --- a/api-common-java/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this library - ---- - -Thanks for stopping by to let us know something could be better! - -**PLEASE READ**: If you have a support contract with Google, please create an issue in the [support console](https://cloud.google.com/support/) instead of filing on GitHub. This will ensure a timely response. - -**Is your feature request related to a problem? Please describe.** -What the problem is. Example: I'm always frustrated when [...] - -**Describe the solution you'd like** -What you want to happen. - -**Describe alternatives you've considered** -Any alternative solutions or features you've considered. - -**Additional context** -Any other context or screenshots about the feature request. diff --git a/api-common-java/.github/ISSUE_TEMPLATE/support_request.md b/api-common-java/.github/ISSUE_TEMPLATE/support_request.md deleted file mode 100644 index 9958690321..0000000000 --- a/api-common-java/.github/ISSUE_TEMPLATE/support_request.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -name: Support request -about: If you have a support contract with Google, please create an issue in the Google Cloud Support console. - ---- - -**PLEASE READ**: If you have a support contract with Google, please create an issue in the [support console](https://cloud.google.com/support/) instead of filing on GitHub. This will ensure a timely response. diff --git a/api-common-java/.github/PULL_REQUEST_TEMPLATE.md b/api-common-java/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index dfc3053312..0000000000 --- a/api-common-java/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ -Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly: -- [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/api-common-java/issues/new/choose) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea -- [ ] Ensure the tests and linter pass -- [ ] Code coverage does not decrease (if any source code was changed) -- [ ] Appropriate docs were updated (if necessary) - -Fixes # ☕️ diff --git a/api-common-java/.github/blunderbuss.yml b/api-common-java/.github/blunderbuss.yml deleted file mode 100644 index 2176b05432..0000000000 --- a/api-common-java/.github/blunderbuss.yml +++ /dev/null @@ -1,7 +0,0 @@ -# Configuration for the Blunderbuss GitHub app. For more info see -# https://github.com/googleapis/repo-automation-bots/tree/main/packages/blunderbuss -assign_prs_by: -- labels: - - samples - to: - - googleapis/java-samples-reviewers \ No newline at end of file diff --git a/api-common-java/.github/generated-files-bot.yml b/api-common-java/.github/generated-files-bot.yml deleted file mode 100644 index 47c2ba132e..0000000000 --- a/api-common-java/.github/generated-files-bot.yml +++ /dev/null @@ -1,11 +0,0 @@ -externalManifests: -- type: json - file: 'synth.metadata' - jsonpath: '$.generatedFiles[*]' -- type: json - file: '.github/readme/synth.metadata/synth.metadata' - jsonpath: '$.generatedFiles[*]' -ignoreAuthors: -- 'renovate-bot' -- 'yoshi-automation' -- 'release-please[bot]' diff --git a/api-common-java/.github/release-please.yml b/api-common-java/.github/release-please.yml deleted file mode 100644 index 8b034773a4..0000000000 --- a/api-common-java/.github/release-please.yml +++ /dev/null @@ -1,24 +0,0 @@ -releaseType: java-yoshi -bumpMinorPreMajor: true -handleGHRelease: true -branches: - - releaseType: java-lts - bumpMinorPreMajor: true - branch: 1.10.1-sp - handleGHRelease: true - - bumpMinorPreMajor: true - handleGHRelease: true - releaseType: java-yoshi - branch: java7 - - releaseType: java-backport - bumpMinorPreMajor: true - handleGHRelease: true - branch: 2.0.x - - releaseType: java-backport - bumpMinorPreMajor: true - handleGHRelease: true - branch: 2.1.x - - releaseType: java-backport - bumpMinorPreMajor: true - handleGHRelease: true - branch: 2.2.x diff --git a/api-common-java/.github/release-trigger.yml b/api-common-java/.github/release-trigger.yml deleted file mode 100644 index 7fe3622578..0000000000 --- a/api-common-java/.github/release-trigger.yml +++ /dev/null @@ -1 +0,0 @@ -enabled: true \ No newline at end of file diff --git a/api-common-java/.github/snippet-bot.yml b/api-common-java/.github/snippet-bot.yml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/api-common-java/.github/sync-repo-settings.yaml b/api-common-java/.github/sync-repo-settings.yaml deleted file mode 100644 index a1587888ce..0000000000 --- a/api-common-java/.github/sync-repo-settings.yaml +++ /dev/null @@ -1,79 +0,0 @@ -rebaseMergeAllowed: true -squashMergeAllowed: true -mergeCommitAllowed: false -branchProtectionRules: - - pattern: main - isAdminEnforced: true - requiredStatusCheckContexts: - - units (8) - - units (11) - - units (17) - - lint - - cla/google - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: true - - pattern: 1.10.1-sp - isAdminEnforced: true - requiredStatusCheckContexts: - - units (8) - - units (11) - - units (17) - - lint - - cla/google - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: true - - pattern: java7 - isAdminEnforced: true - requiredStatusCheckContexts: - - units (8) - - units (11) - - units (17) - - lint - - cla/google - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: true - - pattern: 2.0.x - isAdminEnforced: true - requiredStatusCheckContexts: - - units (8) - - units (11) - - units (17) - - lint - - cla/google - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: true - - pattern: 2.1.x - isAdminEnforced: true - requiredStatusCheckContexts: - - units (8) - - units (11) - - units (17) - - lint - - cla/google - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: true - - pattern: 2.2.x - isAdminEnforced: true - requiredStatusCheckContexts: - - units (8) - - units (11) - - units (17) - - lint - - cla/google - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: true -permissionRules: - - team: Googlers - permission: pull - - team: yoshi-java - permission: push - - team: yoshi-java-admins - permission: admin - - team: yoshi-admins - permission: admin diff --git a/api-common-java/.github/trusted-contribution.yml b/api-common-java/.github/trusted-contribution.yml deleted file mode 100644 index f247d5c789..0000000000 --- a/api-common-java/.github/trusted-contribution.yml +++ /dev/null @@ -1,2 +0,0 @@ -trustedContributors: -- renovate-bot \ No newline at end of file diff --git a/api-common-java/.github/workflows/ci.yaml b/api-common-java/.github/workflows/ci.yaml deleted file mode 100644 index 663e62aaff..0000000000 --- a/api-common-java/.github/workflows/ci.yaml +++ /dev/null @@ -1,96 +0,0 @@ -on: - push: - branches: - - main - pull_request: -name: ci -jobs: - clirr: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: 8 - - run: echo "JAVA8_HOME=${JAVA_HOME}" >> $GITHUB_ENV - - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: 11 - - run: echo "JAVA11_HOME=${JAVA_HOME}" >> $GITHUB_ENV - - run: .kokoro/build.sh - env: - JOB_TYPE: clirr - units-8: - name: units (8) - runs-on: ubuntu-latest - steps: - - name: Get current week within the year - id: date - run: echo "::set-output name=week_of_year::$(date +'%W' --utc)" - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - java-version: 8 - distribution: temurin - - run: echo "JAVA8_HOME=${JAVA_HOME}" >> $GITHUB_ENV - - uses: actions/setup-java@v3 - with: - java-version: 11 - distribution: temurin - - run: echo "JAVA11_HOME=${JAVA_HOME}" >> $GITHUB_ENV - - uses: actions/cache@v3 - id: mvn-cache - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-unified-${{ steps.date.outputs.week_of_year }} - - run: .kokoro/build.sh - env: - JOB_TYPE: test - JOB_NAME: units-8 - units: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - java: [ 11, 17 ] - steps: - - name: Get current week within the year - id: date - run: echo "::set-output name=week_of_year::$(date +'%W' --utc)" - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: ${{matrix.java}} - - run: java -version - - uses: actions/cache@v3 - id: mvn-cache - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-unified-${{ steps.date.outputs.week_of_year }} - - run: .kokoro/build.sh - env: - JOB_TYPE: test - JOB_NAME: units-${{matrix.java}} - lint: - runs-on: ubuntu-latest - steps: - - name: Get current week within the year - id: date - run: echo "::set-output name=week_of_year::$(date +'%W' --utc)" - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: 11 - - run: java -version - - uses: actions/cache@v3 - id: mvn-cache - with: - path: ~/.m2/repository - key: ${{ runner.os }}-maven-unified-${{ steps.date.outputs.week_of_year }} - - run: java -version - - run: mvn -B -ntp com.coveo:fmt-maven-plugin:check - - run: mvn -B -ntp checkstyle:check@checkstyle diff --git a/api-common-java/.github/workflows/downstream.yaml b/api-common-java/.github/workflows/downstream.yaml deleted file mode 100644 index 250194a16b..0000000000 --- a/api-common-java/.github/workflows/downstream.yaml +++ /dev/null @@ -1,144 +0,0 @@ -on: - pull_request: - types: [ labeled ] - branches: - - main -name: downstream -jobs: - dependencies: - if: ${{ github.event.label.name == 'downstream-check:run' }} - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - java: [8] - repo: - # This list needs to be updated manually until an automated solution is in place. - - accessapproval - - accesscontextmanager - - aiplatform - - analytics-admin - - analytics-data - - api-gateway - - apigee-connect - - appengine-admin - - area120-tables - - artifact-registry - - asset - - assured-workloads - - automl - - bigquery - - bigqueryconnection - - bigquerydatatransfer - - bigquerymigration - - bigqueryreservation - - bigtable - - billing - - billingbudgets - - binary-authorization - - channel - - cloudbuild - - compute - - contact-center-insights - - container - - containeranalysis - - data-fusion - - datacatalog - - dataflow - - datalabeling - - dataproc - - dataproc-metastore - - datastore - - datastream - - debugger-client - - deploy - - dialogflow - - dialogflow-cx - - dlp - - dms - - dns - - document-ai - - domains - - errorreporting - - essential-contacts - - eventarc - - filestore - - firestore - - functions - - game-servers - - gke-connect-gateway - - gkehub - - gsuite-addons - - iam-admin - - iamcredentials - - iot - - kms - - language - - life-sciences - - logging - - logging-logback - - managed-identities - - mediatranslation - - memcache - - monitoring - - monitoring-dashboards - - network-management - - network-security - - networkconnectivity - - notebooks - - orchestration-airflow - - orgpolicy - - os-config - - os-login - - phishingprotection - - policy-troubleshooter - - private-catalog - - profiler - - pubsublite - - recaptchaenterprise - - recommendations-ai - - recommender - - redis - - resource-settings - - resourcemanager - - retail - - scheduler - - secretmanager - - security-private-ca - - securitycenter - - securitycenter-settings - - service-control - - service-management - - service-usage - - servicedirectory - - shell - - spanner - - spanner-jdbc - - speech - - storage - - storage-nio - - storage-transfer - - talent - - tasks - - texttospeech - - tpu - - trace - - translate - - video-intelligence - - video-transcoder - - vision - - vpcaccess - - webrisk - - websecurityscanner - - workflow-executions - - workflows - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: ${{matrix.java}} - - run: java -version - - run: sudo apt-get update -y - - run: sudo apt-get install libxml2-utils - - run: .kokoro/downstream-client-library-check.sh api-common ${{matrix.repo}} diff --git a/api-common-java/.kokoro/build.sh b/api-common-java/.kokoro/build.sh deleted file mode 100755 index 38ab4128a1..0000000000 --- a/api-common-java/.kokoro/build.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -## Get the directory of the build script -scriptDir=$(realpath $(dirname "${BASH_SOURCE[0]}")) -## cd to the parent directory, i.e. the root of the git repo -cd ${scriptDir}/.. - -# include common functions -source ${scriptDir}/common.sh - -function setJava() { - export JAVA_HOME=$1 - export PATH=${JAVA_HOME}/bin:$PATH -} - -# This project requires compiling the classes in JDK 11 or higher for GraalVM -# classes. Compiling this project with Java 8 or earlier would fail with "class -# file has wrong version 55.0, should be 53.0" and "unrecognized --release 8 -# option" (set in build.gradle). -if [ ! -z "${JAVA11_HOME}" ]; then - setJava "${JAVA11_HOME}" -fi - -echo "Compiling using Java:" -java -version -mvn clean install -B -ntp -DskipTests - -# We ensure the generated class files are compatible with Java 8 -if [ ! -z "${JAVA8_HOME}" ]; then - setJava "${JAVA8_HOME}" -fi - -RETURN_CODE=0 - -case ${JOB_TYPE} in - test) - retry_with_backoff 3 10 \ - mvn -B -ntp \ - -Dclirr.skip=true \ - -Denforcer.skip=true \ - -Dcheckstyle.skip=true \ - -Dmaven.wagon.http.retryHandler.count=5 \ - test - RETURN_CODE=$? - ;; - clirr) - mvn -B -ntp clirr:check - RETURN_CODE=$? - ;; - *) ;; -esac - -echo "exiting with ${RETURN_CODE}" -exit ${RETURN_CODE} diff --git a/api-common-java/.kokoro/coerce_logs.sh b/api-common-java/.kokoro/coerce_logs.sh deleted file mode 100755 index 7b153733df..0000000000 --- a/api-common-java/.kokoro/coerce_logs.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# This script finds and moves sponge logs so that they can be found by placer -# and are not flagged as flaky by sponge. - -set -eo pipefail - -## Get the directory of the build script -scriptDir=$(realpath $(dirname "${BASH_SOURCE[0]}")) -## cd to the parent directory, i.e. the root of the git repo -cd ${scriptDir}/.. - -if [ -z "${KOKORO_JOB_NAME}" ]; then - job="${JOB_NAME}" -else - job=$(basename ${KOKORO_JOB_NAME}) -fi - -echo "coercing sponge logs..." -for xml in `find . -name *-sponge_log.xml` -do - echo "processing ${xml}" - class=$(basename ${xml} | cut -d- -f2) - dir=$(dirname ${xml})/${job}/${class} - text=$(dirname ${xml})/${class}-sponge_log.txt - mkdir -p ${dir} - mv ${xml} ${dir}/sponge_log.xml - mv ${text} ${dir}/sponge_log.txt -done diff --git a/api-common-java/.kokoro/common.cfg b/api-common-java/.kokoro/common.cfg deleted file mode 100644 index 083db40dd8..0000000000 --- a/api-common-java/.kokoro/common.cfg +++ /dev/null @@ -1,13 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Download trampoline resources. These will be in ${KOKORO_GFILE_DIR} -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# All builds use the trampoline script to run in docker. -build_file: "api-common-java/.kokoro/trampoline.sh" - -# Tell the trampoline which build file to use. -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/api-common-java/.kokoro/build.sh" -} diff --git a/api-common-java/.kokoro/common.sh b/api-common-java/.kokoro/common.sh deleted file mode 100644 index ace89f45a9..0000000000 --- a/api-common-java/.kokoro/common.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -function retry_with_backoff { - attempts_left=$1 - sleep_seconds=$2 - shift 2 - command=$@ - - - # store current flag state - flags=$- - - # allow a failures to continue - set +e - ${command} - exit_code=$? - - # restore "e" flag - if [[ ${flags} =~ e ]] - then set -e - else set +e - fi - - if [[ $exit_code == 0 ]] - then - return 0 - fi - - # failure - if [[ ${attempts_left} > 0 ]] - then - echo "failure (${exit_code}), sleeping ${sleep_seconds}..." - sleep ${sleep_seconds} - new_attempts=$((${attempts_left} - 1)) - new_sleep=$((${sleep_seconds} * 2)) - retry_with_backoff ${new_attempts} ${new_sleep} ${command} - fi - - return $exit_code -} - -## Helper functionss -function now() { date +"%Y-%m-%d %H:%M:%S" | tr -d '\n'; } -function msg() { println "$*" >&2; } -function println() { printf '%s\n' "$(now) $*"; } \ No newline at end of file diff --git a/api-common-java/.kokoro/downstream-client-library-check.sh b/api-common-java/.kokoro/downstream-client-library-check.sh deleted file mode 100755 index b3751f6303..0000000000 --- a/api-common-java/.kokoro/downstream-client-library-check.sh +++ /dev/null @@ -1,92 +0,0 @@ -#!/bin/bash -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Presubmit to ensure the dependencies of the Google Libraries BOM, with the modification of change -# in the PR, pick up the highest versions among transitive dependencies. -# https://maven.apache.org/enforcer/enforcer-rules/requireUpperBoundDeps.html -set -eo pipefail -# Display commands being run. -set -x - -CORE_LIBRARY_ARTIFACT=$1 -CLIENT_LIBRARY=$2 -## Get the directory of the build script -scriptDir="$(realpath "$(dirname "${BASH_SOURCE[0]}")")" -## cd to the parent directory, i.e. the root of the git repo -cd "${scriptDir}"/.. - -CORE_VERSION=$( ./gradlew -q properties | grep '^version: ' | cut -d' ' -f2 ) -echo "$CORE_VERSION" - -# Publish api-common to local maven to make it available for downstream libraries -./gradlew publishToMavenLocal - -# Round 1 -# Check this java core library against HEAD of java-shared dependencies - -git clone "https://github.com/googleapis/java-shared-dependencies.git" --depth=1 -pushd java-shared-dependencies/first-party-dependencies - -# replace version -xmllint --shell pom.xml << EOF -setns x=http://maven.apache.org/POM/4.0.0 -cd .//x:artifactId[text()="${CORE_LIBRARY_ARTIFACT}"] -cd ../x:version -set ${CORE_VERSION} -save pom.xml -EOF - -cd .. -mvn verify install -B -V -ntp -fae \ --DskipTests=true \ --Dmaven.javadoc.skip=true \ --Dgcloud.download.skip=true \ --Denforcer.skip=true - -SHARED_DEPS_VERSION_POM=pom.xml -# Namespace (xmlns) prevents xmllint from specifying tag names in XPath -SHARED_DEPS_VERSION=$(sed -e 's/xmlns=".*"//' ${SHARED_DEPS_VERSION_POM} | xmllint --xpath '/project/version/text()' -) - -if [ -z "${SHARED_DEPS_VERSION}" ]; then - echo "Version is not found in ${SHARED_DEPS_VERSION_POM}" - exit 1 -fi - -# Round 2 -# Check this BOM against java client libraries -git clone "https://github.com/googleapis/java-${CLIENT_LIBRARY}.git" --depth=1 -pushd java-"${CLIENT_LIBRARY}" - -if [[ $CLIENT_LIBRARY == "bigtable" ]]; then - pushd google-cloud-bigtable-deps-bom -fi - -# replace version -xmllint --shell pom.xml << EOF -setns x=http://maven.apache.org/POM/4.0.0 -cd .//x:artifactId[text()="google-cloud-shared-dependencies"] -cd ../x:version -set ${SHARED_DEPS_VERSION} -save pom.xml -EOF - -if [[ $CLIENT_LIBRARY == "bigtable" ]]; then - popd -fi - -mvn verify install -B -V -ntp -fae \ --Dmaven.javadoc.skip=true \ --Dgcloud.download.skip=true \ --Denforcer.skip=true diff --git a/api-common-java/.kokoro/populate-secrets.sh b/api-common-java/.kokoro/populate-secrets.sh deleted file mode 100755 index f52514257e..0000000000 --- a/api-common-java/.kokoro/populate-secrets.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# Copyright 2020 Google LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -function now { date +"%Y-%m-%d %H:%M:%S" | tr -d '\n' ;} -function msg { println "$*" >&2 ;} -function println { printf '%s\n' "$(now) $*" ;} - - -# Populates requested secrets set in SECRET_MANAGER_KEYS from service account: -# kokoro-trampoline@cloud-devrel-kokoro-resources.iam.gserviceaccount.com -SECRET_LOCATION="${KOKORO_GFILE_DIR}/secret_manager" -msg "Creating folder on disk for secrets: ${SECRET_LOCATION}" -mkdir -p ${SECRET_LOCATION} -for key in $(echo ${SECRET_MANAGER_KEYS} | sed "s/,/ /g") -do - msg "Retrieving secret ${key}" - docker run --entrypoint=gcloud \ - --volume=${KOKORO_GFILE_DIR}:${KOKORO_GFILE_DIR} \ - gcr.io/google.com/cloudsdktool/cloud-sdk \ - secrets versions access latest \ - --project cloud-devrel-kokoro-resources \ - --secret ${key} > \ - "${SECRET_LOCATION}/${key}" - if [[ $? == 0 ]]; then - msg "Secret written to ${SECRET_LOCATION}/${key}" - else - msg "Error retrieving secret ${key}" - fi -done diff --git a/api-common-java/.kokoro/release/common.cfg b/api-common-java/.kokoro/release/common.cfg deleted file mode 100644 index 3845a6665f..0000000000 --- a/api-common-java/.kokoro/release/common.cfg +++ /dev/null @@ -1,49 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Download trampoline resources. -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# Use the trampoline script to run in docker. -build_file: "api-common-java/.kokoro/trampoline.sh" - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java11" -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "maven-gpg-keyring" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "maven-gpg-passphrase" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "maven-gpg-pubkeyring" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "sonatype-credentials" - } - } -} diff --git a/api-common-java/.kokoro/release/common.sh b/api-common-java/.kokoro/release/common.sh deleted file mode 100755 index e96a6f9689..0000000000 --- a/api-common-java/.kokoro/release/common.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -# Get secrets from keystore and set and environment variables -setup_environment_secrets() { - export GPG_PASSPHRASE=$(cat ${KOKORO_KEYSTORE_DIR}/70247_maven-gpg-passphrase) - export GPG_TTY=$(tty) - export GPG_HOMEDIR=/gpg - mkdir $GPG_HOMEDIR - mv ${KOKORO_KEYSTORE_DIR}/70247_maven-gpg-pubkeyring $GPG_HOMEDIR/pubring.gpg - mv ${KOKORO_KEYSTORE_DIR}/70247_maven-gpg-keyring $GPG_HOMEDIR/secring.gpg - export GPG_KEY_ID=$(echo -n $(gpg --with-colons ${GPG_HOMEDIR}/pubring.gpg | awk -F':' '/pub/{ print $5 }')) - export SONATYPE_USERNAME=$(cat ${KOKORO_KEYSTORE_DIR}/70247_sonatype-credentials | cut -f1 -d'|') - export SONATYPE_PASSWORD=$(cat ${KOKORO_KEYSTORE_DIR}/70247_sonatype-credentials | cut -f2 -d'|') -} - -create_settings_xml_file() { - echo " - - - - ossrh - ${SONATYPE_USERNAME} - ${SONATYPE_PASSWORD} - - - sonatype-nexus-staging - ${SONATYPE_USERNAME} - ${SONATYPE_PASSWORD} - - - sonatype-nexus-snapshots - ${SONATYPE_USERNAME} - ${SONATYPE_PASSWORD} - - -" > $1 -} diff --git a/api-common-java/.kokoro/release/publish_javadoc11.cfg b/api-common-java/.kokoro/release/publish_javadoc11.cfg deleted file mode 100644 index 2d99e24481..0000000000 --- a/api-common-java/.kokoro/release/publish_javadoc11.cfg +++ /dev/null @@ -1,30 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# cloud-rad production -env_vars: { - key: "STAGING_BUCKET_V2" - value: "docs-staging-v2" -} - -# Configure the docker image for kokoro-trampoline -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java11" -} - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/api-common-java/.kokoro/release/publish_javadoc11.sh" -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "docuploader_service_account" - } - } -} - -# Downloads docfx doclet resource. This will be in ${KOKORO_GFILE_DIR}/ -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/docfx" diff --git a/api-common-java/.kokoro/release/publish_javadoc11.sh b/api-common-java/.kokoro/release/publish_javadoc11.sh deleted file mode 100755 index 73b61d2542..0000000000 --- a/api-common-java/.kokoro/release/publish_javadoc11.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -if [[ -z "${CREDENTIALS}" ]]; then - CREDENTIALS=${KOKORO_KEYSTORE_DIR}/73713_docuploader_service_account -fi - -if [[ -z "${STAGING_BUCKET_V2}" ]]; then - echo "Need to set STAGING_BUCKET environment variable" - exit 1 -fi - -# work from the git root directory -pushd $(dirname "$0")/../../ - -# install docuploader package -python3 -m pip install --require-hashes -r .kokoro/requirements.txt - -NAME=api-common -VERSION=$(grep ${NAME}: versions.txt | cut -d: -f3) - -# build the docs -mvn -B -ntp \ - -P docFX \ - -Dclirr.skip=true \ - -Denforcer.skip=true \ - -Dcheckstyle.skip=true \ - -Dflatten.skip=true \ - -Danimal.sniffer.skip=true \ - javadoc:aggregate - -# copy README to docfx-yml dir and rename index.md -cp README.md target/docfx-yml/index.md - -# copy CHANGELOG to docfx-yml dir and rename history.md -cp CHANGELOG.md target/docfx-yml/history.md - -pushd target/docfx-yml/ - -# create metadata -python3 -m docuploader create-metadata \ - --name ${NAME} \ - --version ${VERSION} \ - --language java - -# upload docs -python3 -m docuploader upload . \ - --credentials ${CREDENTIALS} \ - --staging-bucket ${STAGING_BUCKET_V2} \ - --destination-prefix docfx - -popd \ No newline at end of file diff --git a/api-common-java/.kokoro/release/stage.cfg b/api-common-java/.kokoro/release/stage.cfg deleted file mode 100644 index d42938cc52..0000000000 --- a/api-common-java/.kokoro/release/stage.cfg +++ /dev/null @@ -1,19 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/api-common-java/.kokoro/release/stage.sh" -} - -# Need to save the properties file -action { - define_artifacts { - regex: "github/api-common-java/target/nexus-staging/staging/*.properties" - strip_prefix: "github/api-common-java" - } -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "releasetool-publish-reporter-app,releasetool-publish-reporter-googleapis-installation,releasetool-publish-reporter-pem" -} diff --git a/api-common-java/.kokoro/release/stage.sh b/api-common-java/.kokoro/release/stage.sh deleted file mode 100755 index ba1cf7e20a..0000000000 --- a/api-common-java/.kokoro/release/stage.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -if [[ -n "${AUTORELEASE_PR}" ]] -then - # Start the releasetool reporter - python3 -m pip install gcp-releasetool - python3 -m releasetool publish-reporter-script > /tmp/publisher-script; source /tmp/publisher-script -fi - -source $(dirname "$0")/common.sh -MAVEN_SETTINGS_FILE=$(realpath $(dirname "$0")/../../)/settings.xml -pushd $(dirname "$0")/../../ - -setup_environment_secrets -create_settings_xml_file "settings.xml" - -mvn clean deploy -B \ - -DskipTests=true \ - -Dclirr.skip=true \ - --settings ${MAVEN_SETTINGS_FILE} \ - -Dgpg.executable=gpg \ - -Dgpg.passphrase=${GPG_PASSPHRASE} \ - -Dgpg.homedir=${GPG_HOMEDIR} \ - -P release - -# The job triggered by Release Please (release-trigger) has this AUTORELEASE_PR -# environment variable. Fusion also lets us to specify this variable. -if [[ -n "${AUTORELEASE_PR}" ]] -then - mvn nexus-staging:release -B \ - -DperformRelease=true \ - --settings=${MAVEN_SETTINGS_FILE} -else - echo "AUTORELEASE_PR is not set. Not releasing." -fi \ No newline at end of file diff --git a/api-common-java/.kokoro/requirements.in b/api-common-java/.kokoro/requirements.in deleted file mode 100644 index a5010f77d4..0000000000 --- a/api-common-java/.kokoro/requirements.in +++ /dev/null @@ -1,34 +0,0 @@ -gcp-docuploader==0.6.3 -google-crc32c==1.3.0 -googleapis-common-protos==1.56.3 -gcp-releasetool==1.9.1 -cryptography==38.0.3 -cachetools==4.2.4 -cffi==1.15.1 -jeepney==0.7.1 -jinja2==3.0.3 -markupsafe==2.0.1 -keyring==23.4.1 -packaging==21.3 -protobuf==3.19.5 -pyjwt==2.4.0 -pyparsing==3.0.9 -pycparser==2.21 -pyperclip==1.8.2 -python-dateutil==2.8.2 -requests==2.27.1 -certifi==2022.12.7 -importlib-metadata==4.8.3 -zipp==3.6.0 -google_api_core==2.8.2 -google-cloud-storage==2.0.0 -google-resumable-media==2.3.3 -google-cloud-core==2.3.1 -typing-extensions==4.1.1 -urllib3==1.26.12 -zipp==3.6.0 -rsa==4.9 -six==1.16.0 -attrs==22.1.0 -google-auth==2.14.1 -idna==3.4 \ No newline at end of file diff --git a/api-common-java/.kokoro/requirements.txt b/api-common-java/.kokoro/requirements.txt deleted file mode 100644 index 5294c8029f..0000000000 --- a/api-common-java/.kokoro/requirements.txt +++ /dev/null @@ -1,455 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.10 -# To update, run: -# -# pip-compile --generate-hashes requirements.in -# -attrs==22.1.0 \ - --hash=sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6 \ - --hash=sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c - # via - # -r requirements.in - # gcp-releasetool -cachetools==4.2.4 \ - --hash=sha256:89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693 \ - --hash=sha256:92971d3cb7d2a97efff7c7bb1657f21a8f5fb309a37530537c71b1774189f2d1 - # via - # -r requirements.in - # google-auth -certifi==2022.12.7 \ - --hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \ - --hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18 - # via - # -r requirements.in - # requests -cffi==1.15.1 \ - --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \ - --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \ - --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \ - --hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 \ - --hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 \ - --hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 \ - --hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a \ - --hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e \ - --hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc \ - --hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf \ - --hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 \ - --hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 \ - --hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 \ - --hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 \ - --hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c \ - --hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 \ - --hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 \ - --hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca \ - --hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 \ - --hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac \ - --hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd \ - --hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee \ - --hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a \ - --hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 \ - --hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 \ - --hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 \ - --hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 \ - --hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f \ - --hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e \ - --hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 \ - --hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b \ - --hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e \ - --hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e \ - --hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d \ - --hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c \ - --hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 \ - --hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 \ - --hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 \ - --hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 \ - --hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 \ - --hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c \ - --hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 \ - --hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 \ - --hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 \ - --hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d \ - --hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 \ - --hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 \ - --hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 \ - --hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c \ - --hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 \ - --hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 \ - --hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 \ - --hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d \ - --hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d \ - --hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 \ - --hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 \ - --hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 \ - --hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 \ - --hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e \ - --hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 \ - --hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 \ - --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \ - --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \ - --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0 - # via - # -r requirements.in - # cryptography -charset-normalizer==2.0.12 \ - --hash=sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597 \ - --hash=sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df - # via requests -click==8.0.4 \ - --hash=sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1 \ - --hash=sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb - # via - # gcp-docuploader - # gcp-releasetool -colorlog==6.7.0 \ - --hash=sha256:0d33ca236784a1ba3ff9c532d4964126d8a2c44f1f0cb1d2b0728196f512f662 \ - --hash=sha256:bd94bd21c1e13fac7bd3153f4bc3a7dc0eb0974b8bc2fdf1a989e474f6e582e5 - # via gcp-docuploader -cryptography==38.0.3 \ - --hash=sha256:068147f32fa662c81aebab95c74679b401b12b57494872886eb5c1139250ec5d \ - --hash=sha256:06fc3cc7b6f6cca87bd56ec80a580c88f1da5306f505876a71c8cfa7050257dd \ - --hash=sha256:25c1d1f19729fb09d42e06b4bf9895212292cb27bb50229f5aa64d039ab29146 \ - --hash=sha256:402852a0aea73833d982cabb6d0c3bb582c15483d29fb7085ef2c42bfa7e38d7 \ - --hash=sha256:4e269dcd9b102c5a3d72be3c45d8ce20377b8076a43cbed6f660a1afe365e436 \ - --hash=sha256:5419a127426084933076132d317911e3c6eb77568a1ce23c3ac1e12d111e61e0 \ - --hash=sha256:554bec92ee7d1e9d10ded2f7e92a5d70c1f74ba9524947c0ba0c850c7b011828 \ - --hash=sha256:5e89468fbd2fcd733b5899333bc54d0d06c80e04cd23d8c6f3e0542358c6060b \ - --hash=sha256:65535bc550b70bd6271984d9863a37741352b4aad6fb1b3344a54e6950249b55 \ - --hash=sha256:6ab9516b85bebe7aa83f309bacc5f44a61eeb90d0b4ec125d2d003ce41932d36 \ - --hash=sha256:6addc3b6d593cd980989261dc1cce38263c76954d758c3c94de51f1e010c9a50 \ - --hash=sha256:728f2694fa743a996d7784a6194da430f197d5c58e2f4e278612b359f455e4a2 \ - --hash=sha256:785e4056b5a8b28f05a533fab69febf5004458e20dad7e2e13a3120d8ecec75a \ - --hash=sha256:78cf5eefac2b52c10398a42765bfa981ce2372cbc0457e6bf9658f41ec3c41d8 \ - --hash=sha256:7f836217000342d448e1c9a342e9163149e45d5b5eca76a30e84503a5a96cab0 \ - --hash=sha256:8d41a46251bf0634e21fac50ffd643216ccecfaf3701a063257fe0b2be1b6548 \ - --hash=sha256:984fe150f350a3c91e84de405fe49e688aa6092b3525f407a18b9646f6612320 \ - --hash=sha256:9b24bcff7853ed18a63cfb0c2b008936a9554af24af2fb146e16d8e1aed75748 \ - --hash=sha256:b1b35d9d3a65542ed2e9d90115dfd16bbc027b3f07ee3304fc83580f26e43249 \ - --hash=sha256:b1b52c9e5f8aa2b802d48bd693190341fae201ea51c7a167d69fc48b60e8a959 \ - --hash=sha256:bbf203f1a814007ce24bd4d51362991d5cb90ba0c177a9c08825f2cc304d871f \ - --hash=sha256:be243c7e2bfcf6cc4cb350c0d5cdf15ca6383bbcb2a8ef51d3c9411a9d4386f0 \ - --hash=sha256:bfbe6ee19615b07a98b1d2287d6a6073f734735b49ee45b11324d85efc4d5cbd \ - --hash=sha256:c46837ea467ed1efea562bbeb543994c2d1f6e800785bd5a2c98bc096f5cb220 \ - --hash=sha256:dfb4f4dd568de1b6af9f4cda334adf7d72cf5bc052516e1b2608b683375dd95c \ - --hash=sha256:ed7b00096790213e09eb11c97cc6e2b757f15f3d2f85833cd2d3ec3fe37c1722 - # via - # -r requirements.in - # gcp-releasetool - # secretstorage -gcp-docuploader==0.6.3 \ - --hash=sha256:ba8c9d76b3bbac54b0311c503a373b00edc2dc02d6d54ea9507045adb8e870f7 \ - --hash=sha256:c0f5aaa82ce1854a386197e4e359b120ad6d4e57ae2c812fce42219a3288026b - # via -r requirements.in -gcp-releasetool==1.9.1 \ - --hash=sha256:952f4055d5d986b070ae2a71c4410b250000f9cc5a1e26398fcd55a5bbc5a15f \ - --hash=sha256:d0d3c814a97c1a237517e837d8cfa668ced8df4b882452578ecef4a4e79c583b - # via -r requirements.in -google-api-core==2.8.2 \ - --hash=sha256:06f7244c640322b508b125903bb5701bebabce8832f85aba9335ec00b3d02edc \ - --hash=sha256:93c6a91ccac79079ac6bbf8b74ee75db970cc899278b97d53bc012f35908cf50 - # via - # -r requirements.in - # google-cloud-core - # google-cloud-storage -google-auth==2.14.1 \ - --hash=sha256:f5d8701633bebc12e0deea4df8abd8aff31c28b355360597f7f2ee60f2e4d016 - # via - # -r requirements.in - # gcp-releasetool - # google-api-core - # google-cloud-core - # google-cloud-storage -google-cloud-core==2.3.1 \ - --hash=sha256:113ba4f492467d5bd442c8d724c1a25ad7384045c3178369038840ecdd19346c \ - --hash=sha256:34334359cb04187bdc80ddcf613e462dfd7a3aabbc3fe4d118517ab4b9303d53 - # via - # -r requirements.in - # google-cloud-storage -google-cloud-storage==2.0.0 \ - --hash=sha256:a57a15aead0f9dfbd4381f1bfdbe8bf89818a4bd75bab846cafcefb2db846c47 \ - --hash=sha256:ec4be60bb223a3a960f0d01697d849b86d91cad815a84915a32ed3635e93a5e7 - # via - # -r requirements.in - # gcp-docuploader -google-crc32c==1.3.0 \ - --hash=sha256:04e7c220798a72fd0f08242bc8d7a05986b2a08a0573396187fd32c1dcdd58b3 \ - --hash=sha256:05340b60bf05b574159e9bd940152a47d38af3fb43803ffe71f11d704b7696a6 \ - --hash=sha256:12674a4c3b56b706153a358eaa1018c4137a5a04635b92b4652440d3d7386206 \ - --hash=sha256:127f9cc3ac41b6a859bd9dc4321097b1a4f6aa7fdf71b4f9227b9e3ebffb4422 \ - --hash=sha256:13af315c3a0eec8bb8b8d80b8b128cb3fcd17d7e4edafc39647846345a3f003a \ - --hash=sha256:1926fd8de0acb9d15ee757175ce7242e235482a783cd4ec711cc999fc103c24e \ - --hash=sha256:226f2f9b8e128a6ca6a9af9b9e8384f7b53a801907425c9a292553a3a7218ce0 \ - --hash=sha256:276de6273eb074a35bc598f8efbc00c7869c5cf2e29c90748fccc8c898c244df \ - --hash=sha256:318f73f5484b5671f0c7f5f63741ab020a599504ed81d209b5c7129ee4667407 \ - --hash=sha256:3bbce1be3687bbfebe29abdb7631b83e6b25da3f4e1856a1611eb21854b689ea \ - --hash=sha256:42ae4781333e331a1743445931b08ebdad73e188fd554259e772556fc4937c48 \ - --hash=sha256:58be56ae0529c664cc04a9c76e68bb92b091e0194d6e3c50bea7e0f266f73713 \ - --hash=sha256:5da2c81575cc3ccf05d9830f9e8d3c70954819ca9a63828210498c0774fda1a3 \ - --hash=sha256:6311853aa2bba4064d0c28ca54e7b50c4d48e3de04f6770f6c60ebda1e975267 \ - --hash=sha256:650e2917660e696041ab3dcd7abac160b4121cd9a484c08406f24c5964099829 \ - --hash=sha256:6a4db36f9721fdf391646685ecffa404eb986cbe007a3289499020daf72e88a2 \ - --hash=sha256:779cbf1ce375b96111db98fca913c1f5ec11b1d870e529b1dc7354b2681a8c3a \ - --hash=sha256:7f6fe42536d9dcd3e2ffb9d3053f5d05221ae3bbcefbe472bdf2c71c793e3183 \ - --hash=sha256:891f712ce54e0d631370e1f4997b3f182f3368179198efc30d477c75d1f44942 \ - --hash=sha256:95c68a4b9b7828ba0428f8f7e3109c5d476ca44996ed9a5f8aac6269296e2d59 \ - --hash=sha256:96a8918a78d5d64e07c8ea4ed2bc44354e3f93f46a4866a40e8db934e4c0d74b \ - --hash=sha256:9c3cf890c3c0ecfe1510a452a165431b5831e24160c5fcf2071f0f85ca5a47cd \ - --hash=sha256:9f58099ad7affc0754ae42e6d87443299f15d739b0ce03c76f515153a5cda06c \ - --hash=sha256:a0b9e622c3b2b8d0ce32f77eba617ab0d6768b82836391e4f8f9e2074582bf02 \ - --hash=sha256:a7f9cbea4245ee36190f85fe1814e2d7b1e5f2186381b082f5d59f99b7f11328 \ - --hash=sha256:bab4aebd525218bab4ee615786c4581952eadc16b1ff031813a2fd51f0cc7b08 \ - --hash=sha256:c124b8c8779bf2d35d9b721e52d4adb41c9bfbde45e6a3f25f0820caa9aba73f \ - --hash=sha256:c9da0a39b53d2fab3e5467329ed50e951eb91386e9d0d5b12daf593973c3b168 \ - --hash=sha256:ca60076c388728d3b6ac3846842474f4250c91efbfe5afa872d3ffd69dd4b318 \ - --hash=sha256:cb6994fff247987c66a8a4e550ef374671c2b82e3c0d2115e689d21e511a652d \ - --hash=sha256:d1c1d6236feab51200272d79b3d3e0f12cf2cbb12b208c835b175a21efdb0a73 \ - --hash=sha256:dd7760a88a8d3d705ff562aa93f8445ead54f58fd482e4f9e2bafb7e177375d4 \ - --hash=sha256:dda4d8a3bb0b50f540f6ff4b6033f3a74e8bf0bd5320b70fab2c03e512a62812 \ - --hash=sha256:e0f1ff55dde0ebcfbef027edc21f71c205845585fffe30d4ec4979416613e9b3 \ - --hash=sha256:e7a539b9be7b9c00f11ef16b55486141bc2cdb0c54762f84e3c6fc091917436d \ - --hash=sha256:eb0b14523758e37802f27b7f8cd973f5f3d33be7613952c0df904b68c4842f0e \ - --hash=sha256:ed447680ff21c14aaceb6a9f99a5f639f583ccfe4ce1a5e1d48eb41c3d6b3217 \ - --hash=sha256:f52a4ad2568314ee713715b1e2d79ab55fab11e8b304fd1462ff5cccf4264b3e \ - --hash=sha256:fbd60c6aaa07c31d7754edbc2334aef50601b7f1ada67a96eb1eb57c7c72378f \ - --hash=sha256:fc28e0db232c62ca0c3600884933178f0825c99be4474cdd645e378a10588125 \ - --hash=sha256:fe31de3002e7b08eb20823b3735b97c86c5926dd0581c7710a680b418a8709d4 \ - --hash=sha256:fec221a051150eeddfdfcff162e6db92c65ecf46cb0f7bb1bf812a1520ec026b \ - --hash=sha256:ff71073ebf0e42258a42a0b34f2c09ec384977e7f6808999102eedd5b49920e3 - # via - # -r requirements.in - # google-resumable-media -google-resumable-media==2.3.3 \ - --hash=sha256:27c52620bd364d1c8116eaac4ea2afcbfb81ae9139fb3199652fcac1724bfb6c \ - --hash=sha256:5b52774ea7a829a8cdaa8bd2d4c3d4bc660c91b30857ab2668d0eb830f4ea8c5 - # via - # -r requirements.in - # google-cloud-storage -googleapis-common-protos==1.56.3 \ - --hash=sha256:6f1369b58ed6cf3a4b7054a44ebe8d03b29c309257583a2bbdc064cd1e4a1442 \ - --hash=sha256:87955d7b3a73e6e803f2572a33179de23989ebba725e05ea42f24838b792e461 - # via - # -r requirements.in - # google-api-core -idna==3.4 \ - --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ - --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 - # via - # -r requirements.in - # requests -importlib-metadata==4.8.3 \ - --hash=sha256:65a9576a5b2d58ca44d133c42a241905cc45e34d2c06fd5ba2bafa221e5d7b5e \ - --hash=sha256:766abffff765960fcc18003801f7044eb6755ffae4521c8e8ce8e83b9c9b0668 - # via - # -r requirements.in - # keyring -jeepney==0.7.1 \ - --hash=sha256:1b5a0ea5c0e7b166b2f5895b91a08c14de8915afda4407fb5022a195224958ac \ - --hash=sha256:fa9e232dfa0c498bd0b8a3a73b8d8a31978304dcef0515adc859d4e096f96f4f - # via - # -r requirements.in - # keyring - # secretstorage -jinja2==3.0.3 \ - --hash=sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8 \ - --hash=sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7 - # via - # -r requirements.in - # gcp-releasetool -keyring==23.4.1 \ - --hash=sha256:17e49fb0d6883c2b4445359434dba95aad84aabb29bbff044ad0ed7100232eca \ - --hash=sha256:89cbd74d4683ed164c8082fb38619341097741323b3786905c6dac04d6915a55 - # via - # -r requirements.in - # gcp-releasetool -markupsafe==2.0.1 \ - --hash=sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298 \ - --hash=sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64 \ - --hash=sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b \ - --hash=sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194 \ - --hash=sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567 \ - --hash=sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff \ - --hash=sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724 \ - --hash=sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74 \ - --hash=sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646 \ - --hash=sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35 \ - --hash=sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6 \ - --hash=sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a \ - --hash=sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6 \ - --hash=sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad \ - --hash=sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26 \ - --hash=sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38 \ - --hash=sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac \ - --hash=sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7 \ - --hash=sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6 \ - --hash=sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047 \ - --hash=sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75 \ - --hash=sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f \ - --hash=sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b \ - --hash=sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135 \ - --hash=sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8 \ - --hash=sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a \ - --hash=sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a \ - --hash=sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1 \ - --hash=sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9 \ - --hash=sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864 \ - --hash=sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914 \ - --hash=sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee \ - --hash=sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f \ - --hash=sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18 \ - --hash=sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8 \ - --hash=sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2 \ - --hash=sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d \ - --hash=sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b \ - --hash=sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b \ - --hash=sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86 \ - --hash=sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6 \ - --hash=sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f \ - --hash=sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb \ - --hash=sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833 \ - --hash=sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28 \ - --hash=sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e \ - --hash=sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415 \ - --hash=sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902 \ - --hash=sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f \ - --hash=sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d \ - --hash=sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9 \ - --hash=sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d \ - --hash=sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145 \ - --hash=sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066 \ - --hash=sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c \ - --hash=sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1 \ - --hash=sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a \ - --hash=sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207 \ - --hash=sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f \ - --hash=sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53 \ - --hash=sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd \ - --hash=sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134 \ - --hash=sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85 \ - --hash=sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9 \ - --hash=sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5 \ - --hash=sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94 \ - --hash=sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509 \ - --hash=sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51 \ - --hash=sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872 - # via - # -r requirements.in - # jinja2 -packaging==21.3 \ - --hash=sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb \ - --hash=sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522 - # via - # -r requirements.in - # gcp-releasetool -protobuf==3.19.5 \ - --hash=sha256:1867f93b06a183f87696871bb8d1e99ee71dbb69d468ce1f0cc8bf3d30f982f3 \ - --hash=sha256:3c4160b601220627f7e91154e572baf5e161a9c3f445a8242d536ee3d0b7b17c \ - --hash=sha256:4ee2af7051d3b10c8a4fe6fd1a2c69f201fea36aeee7086cf202a692e1b99ee1 \ - --hash=sha256:5266c36cc0af3bb3dbf44f199d225b33da66a9a5c3bdc2b14865ad10eddf0e37 \ - --hash=sha256:5470f892961af464ae6eaf0f3099e2c1190ae8c7f36f174b89491281341f79ca \ - --hash=sha256:66d14b5b90090353efe75c9fb1bf65ef7267383034688d255b500822e37d5c2f \ - --hash=sha256:67efb5d20618020aa9596e17bfc37ca068c28ec0c1507d9507f73c93d46c9855 \ - --hash=sha256:696e6cfab94cc15a14946f2bf72719dced087d437adbd994fff34f38986628bc \ - --hash=sha256:6a02172b9650f819d01fb8e224fc69b0706458fc1ab4f1c669281243c71c1a5e \ - --hash=sha256:950abd6c00e7b51f87ae8b18a0ce4d69fea217f62f171426e77de5061f6d9850 \ - --hash=sha256:9e1d74032f56ff25f417cfe84c8147047732e5059137ca42efad20cbbd25f5e0 \ - --hash=sha256:9e42b1cf2ecd8a1bd161239e693f22035ba99905ae6d7efeac8a0546c7ec1a27 \ - --hash=sha256:9f957ef53e872d58a0afd3bf6d80d48535d28c99b40e75e6634cbc33ea42fd54 \ - --hash=sha256:a89aa0c042e61e11ade320b802d6db4ee5391d8d973e46d3a48172c1597789f8 \ - --hash=sha256:c0f80876a8ff0ae7064084ed094eb86497bd5a3812e6fc96a05318b92301674e \ - --hash=sha256:c44e3282cff74ad18c7e8a0375f407f69ee50c2116364b44492a196293e08b21 \ - --hash=sha256:d249519ba5ecf5dd6b18150c9b6bcde510b273714b696f3923ff8308fc11ae49 \ - --hash=sha256:d3973a2d58aefc7d1230725c2447ce7f86a71cbc094b86a77c6ee1505ac7cdb1 \ - --hash=sha256:dca2284378a5f2a86ffed35c6ac147d14c48b525eefcd1083e5a9ce28dfa8657 \ - --hash=sha256:e63b0b3c42e51c94add62b010366cd4979cb6d5f06158bcae8faac4c294f91e1 \ - --hash=sha256:f2b599a21c9a32e171ec29a2ac54e03297736c578698e11b099d031f79da114b \ - --hash=sha256:f2bde37667b18c2b5280df83bc799204394a5d2d774e4deaf9de0eb741df6833 \ - --hash=sha256:f4f909f4dde413dec435a44b0894956d55bb928ded7d6e3c726556ca4c796e84 \ - --hash=sha256:f976234e20ab2785f54224bcdafa027674e23663b132fa3ca0caa291a6cfbde7 \ - --hash=sha256:f9cebda093c2f6bfed88f1c17cdade09d4d96096421b344026feee236532d4de - # via - # -r requirements.in - # gcp-docuploader - # gcp-releasetool - # google-api-core - # google-cloud-storage - # googleapis-common-protos -pyasn1==0.4.8 \ - --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \ - --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba - # via - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 \ - --hash=sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e \ - --hash=sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74 - # via google-auth -pycparser==2.21 \ - --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ - --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 - # via - # -r requirements.in - # cffi -pyjwt==2.4.0 \ - --hash=sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf \ - --hash=sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba - # via - # -r requirements.in - # gcp-releasetool -pyparsing==3.0.9 \ - --hash=sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb \ - --hash=sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc - # via - # -r requirements.in - # packaging -pyperclip==1.8.2 \ - --hash=sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57 - # via - # -r requirements.in - # gcp-releasetool -python-dateutil==2.8.2 \ - --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ - --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 - # via - # -r requirements.in - # gcp-releasetool -requests==2.27.1 \ - --hash=sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61 \ - --hash=sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d - # via - # -r requirements.in - # gcp-releasetool - # google-api-core - # google-cloud-storage -rsa==4.9 \ - --hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \ - --hash=sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21 - # via - # -r requirements.in - # google-auth -secretstorage==3.3.3 \ - --hash=sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77 \ - --hash=sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99 - # via keyring -six==1.16.0 \ - --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ - --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 - # via - # -r requirements.in - # gcp-docuploader - # google-auth - # python-dateutil -typing-extensions==4.1.1 \ - --hash=sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42 \ - --hash=sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2 - # via -r requirements.in -urllib3==1.26.12 \ - --hash=sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e \ - --hash=sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997 - # via - # -r requirements.in - # requests -zipp==3.6.0 \ - --hash=sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832 \ - --hash=sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc - # via - # -r requirements.in - # importlib-metadata diff --git a/api-common-java/.kokoro/trampoline.sh b/api-common-java/.kokoro/trampoline.sh deleted file mode 100644 index e422a90dda..0000000000 --- a/api-common-java/.kokoro/trampoline.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -set -eo pipefail -# Always run the cleanup script, regardless of the success of bouncing into -# the container. -function cleanup() { - chmod +x ${KOKORO_GFILE_DIR}/trampoline_cleanup.sh - ${KOKORO_GFILE_DIR}/trampoline_cleanup.sh - echo "cleanup"; -} -trap cleanup EXIT - -$(dirname $0)/populate-secrets.sh # Secret Manager secrets. -python3 "${KOKORO_GFILE_DIR}/trampoline_v1.py" diff --git a/gax-java/.github/CODEOWNERS b/gax-java/.github/CODEOWNERS deleted file mode 100644 index a1d58a77c4..0000000000 --- a/gax-java/.github/CODEOWNERS +++ /dev/null @@ -1,7 +0,0 @@ -# Code owners file. -# This file controls who is tagged for review for any given pull request. -# -# For syntax help see: -# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#codeowners-syntax - -* @googleapis/actools-java @googleapis/yoshi-java @googleapis/cloud-java-team-teamsync diff --git a/gax-java/.github/release-please.yml b/gax-java/.github/release-please.yml deleted file mode 100644 index 27d7ef3a6a..0000000000 --- a/gax-java/.github/release-please.yml +++ /dev/null @@ -1,12 +0,0 @@ -releaseType: java-yoshi -bumpMinorPreMajor: true -handleGHRelease: true -branches: - - releaseType: java-backport - bumpMinorPreMajor: true - handleGHRelease: true - branch: 2.16.x - - releaseType: java-backport - bumpMinorPreMajor: true - handleGHRelease: true - branch: 2.19.x diff --git a/gax-java/.github/release-trigger.yml b/gax-java/.github/release-trigger.yml deleted file mode 100644 index 7fe3622578..0000000000 --- a/gax-java/.github/release-trigger.yml +++ /dev/null @@ -1 +0,0 @@ -enabled: true \ No newline at end of file diff --git a/gax-java/.github/snippet-bot.yml b/gax-java/.github/snippet-bot.yml deleted file mode 100644 index 1488c14ec0..0000000000 --- a/gax-java/.github/snippet-bot.yml +++ /dev/null @@ -1,2 +0,0 @@ -aggregateChecks: false -alwaysCreateStatusCheck: false diff --git a/gax-java/.github/sync-repo-settings.yaml b/gax-java/.github/sync-repo-settings.yaml deleted file mode 100644 index 4ff4f40b14..0000000000 --- a/gax-java/.github/sync-repo-settings.yaml +++ /dev/null @@ -1,45 +0,0 @@ -rebaseMergeAllowed: false -squashMergeAllowed: true -mergeCommitAllowed: false -branchProtectionRules: - - pattern: main - isAdminEnforced: true - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: false - requiredStatusCheckContexts: - - bazel - - units (8) - - units (11) - - cla/google - - pattern: 2.16.x - isAdminEnforced: true - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: true - requiredStatusCheckContexts: - - bazel - - units (8) - - units (11) - - cla/google - - pattern: 2.19.x - isAdminEnforced: true - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: false - requiredStatusCheckContexts: - - bazel - - units (8) - - units (11) - - cla/google -permissionRules: - - team: yoshi-admins - permission: admin - - team: yoshi-java-admins - permission: admin - - team: yoshi-java - permission: push - - team: actools - permission: admin - - team: actools-java - permission: push diff --git a/gax-java/.github/workflows/ci.yaml b/gax-java/.github/workflows/ci.yaml deleted file mode 100644 index b05c1da3d2..0000000000 --- a/gax-java/.github/workflows/ci.yaml +++ /dev/null @@ -1,113 +0,0 @@ -on: - push: - branches: - - main - pull_request: -name: ci -jobs: - clirr: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: 8 - - run: echo "JAVA8_HOME=${JAVA_HOME}" >> $GITHUB_ENV - - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: 11 - - run: echo "JAVA11_HOME=${JAVA_HOME}" >> $GITHUB_ENV - - run: .kokoro/build.sh - env: - JOB_TYPE: clirr - units-java11: - name: "units (11)" - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - java-version: 11 - distribution: zulu - - run: java -version - - run: .kokoro/build.sh - env: - JOB_TYPE: test - units-java8: - name: "units (8)" - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - # Java 8 tests uses JDK 11 to compile and JDK 8 to run tests. See .kokoro/ - # build.sh for the setup. - - uses: actions/setup-java@v3 - with: - java-version: 8 - distribution: zulu - - run: echo "JAVA8_HOME=${JAVA_HOME}" >> $GITHUB_ENV - - uses: actions/setup-java@v3 - with: - java-version: 11 - distribution: zulu - - run: echo "JAVA11_HOME=${JAVA_HOME}" >> $GITHUB_ENV - - run: printenv - - run: .kokoro/build.sh - env: - JOB_TYPE: test - bazel: - runs-on: ubuntu-latest - # Not using a container. The ubuntu-latest has Bazel 4.2 installed as of - # November 2021. gRPC 1.42 requires Bazel 4. - # https://github.com/grpc/grpc-java/pull/7598 - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v1 - with: - java-version: 8 - - run: java -version - - - name: Bazel File Cache Setup - id: cache-bazel - uses: actions/cache@v3 - with: - path: ~/.cache/bazel - key: ${{ runner.os }}-bazel-20210105-${{ secrets.CACHE_VERSION }} - - - name: Bazel Cache Not Found - if: steps.cache-bazel.outputs.cache-hit != 'true' - run: | - echo "No cache found." - - name: Bazel Cache Found - if: steps.cache-bazel.outputs.cache-hit == 'true' - run: | - echo -n "Cache found. Cache size: " - du -sh ~/.cache/bazel - echo "If the cache seems broken, update the CACHE_VERSION secret in" - echo "https://github.com/googleapis/googleapis-discovery/settings/secrets/actions" - echo "(use any random string, any GUID will work)" - echo "and it will start over with a clean cache." - echo "The old one will disappear after 7 days." - - - name: Run bazel tests - run: | - which bazel - bazel --version - bazel --batch test //... --noshow_progress --test_output=errors - - - uses: actions/upload-artifact@v3 - if: ${{ failure() }} - with: - name: test-artifacts - path: ~/.cache/bazel/*/*/*/gax-java/bazel-out/*/testlogs/* - retention-days: 5 - requirements: - name: "requirements" - runs-on: ubuntu-latest - container: gcr.io/cloud-devrel-public-resources/java8 - steps: - - uses: actions/checkout@v2 - - run: | - python3 --version - python3 -m pip install --require-hashes -r .kokoro/requirements.txt diff --git a/gax-java/.github/workflows/downstream-native-image.yaml b/gax-java/.github/workflows/downstream-native-image.yaml deleted file mode 100644 index 5e0b4431ca..0000000000 --- a/gax-java/.github/workflows/downstream-native-image.yaml +++ /dev/null @@ -1,41 +0,0 @@ -on: - push: - branches: - - main - pull_request: - -# Keeping this file separate as the dependencies check would use more -# repositories than needed this downstream check for GraalVM native image -# compilation. -name: downstream -jobs: - # GraalVM job ensures the compatibility of GraaVM version - graalvm: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - graalvm: [22.3.0] - java: [11, 17] - repo: - # GAPIC library that doesn't use a real GCP project in integration tests - - orgpolicy - steps: - - uses: actions/checkout@v2 - - uses: stCarolas/setup-maven@v4 - with: - maven-version: 3.8.1 - - uses: ayltai/setup-graalvm@v1 - with: - java-version: ${{matrix.java}} - # When a new version of native-maven-plugin fails to run in a downstream - # library, it's likely to be an incompatibility with the GraalVM version. - # In that case, you need to upgrade the Docker container used in the - # tests in the downstream repositories (not just this value below). - # Example: https://github.com/googleapis/testing-infra-docker/pull/195 - graalvm-version: ${{matrix.graalvm}} - native-image: true - - run: java -version - - run: sudo apt-get update -y - - run: sudo apt-get install libxml2-utils - - run: .kokoro/downstream-client-library-check.sh ${{matrix.repo}} graalvm diff --git a/gax-java/.github/workflows/downstream.yaml b/gax-java/.github/workflows/downstream.yaml deleted file mode 100644 index 45e45fa25e..0000000000 --- a/gax-java/.github/workflows/downstream.yaml +++ /dev/null @@ -1,144 +0,0 @@ -on: - pull_request: - types: [ labeled ] - branches: - - main -name: downstream -jobs: - dependencies: - if: ${{ github.event.label.name == 'downstream-check:run' }} - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - java: [11] - repo: - # This list needs to be updated manually until an automated solution is in place. - - accessapproval - - accesscontextmanager - - aiplatform - - analytics-admin - - analytics-data - - api-gateway - - apigee-connect - - appengine-admin - - area120-tables - - artifact-registry - - asset - - assured-workloads - - automl - - bigquery - - bigqueryconnection - - bigquerydatatransfer - - bigquerymigration - - bigqueryreservation - - bigtable - - billing - - billingbudgets - - binary-authorization - - channel - - cloudbuild - - compute - - contact-center-insights - - container - - containeranalysis - - data-fusion - - datacatalog - - dataflow - - datalabeling - - dataproc - - dataproc-metastore - - datastore - - datastream - - debugger-client - - deploy - - dialogflow - - dialogflow-cx - - dlp - - dms - - dns - - document-ai - - domains - - errorreporting - - essential-contacts - - eventarc - - filestore - - firestore - - functions - - game-servers - - gke-connect-gateway - - gkehub - - gsuite-addons - - iam-admin - - iamcredentials - - iot - - kms - - language - - life-sciences - - logging - - logging-logback - - managed-identities - - mediatranslation - - memcache - - monitoring - - monitoring-dashboards - - network-management - - network-security - - networkconnectivity - - notebooks - - orchestration-airflow - - orgpolicy - - os-config - - os-login - - phishingprotection - - policy-troubleshooter - - private-catalog - - profiler - - pubsublite - - recaptchaenterprise - - recommendations-ai - - recommender - - redis - - resource-settings - - resourcemanager - - retail - - scheduler - - secretmanager - - security-private-ca - - securitycenter - - securitycenter-settings - - service-control - - service-management - - service-usage - - servicedirectory - - shell - - spanner - - spanner-jdbc - - speech - - storage - - storage-nio - - storage-transfer - - talent - - tasks - - texttospeech - - tpu - - trace - - translate - - video-intelligence - - video-transcoder - - vision - - vpcaccess - - webrisk - - websecurityscanner - - workflow-executions - - workflows - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-java@v3 - with: - distribution: zulu - java-version: ${{matrix.java}} - - run: java -version - - run: sudo apt-get update -y - - run: sudo apt-get install libxml2-utils - - run: .kokoro/downstream-client-library-check.sh ${{matrix.repo}} test diff --git a/gax-java/.github/workflows/sonar.yaml b/gax-java/.github/workflows/sonar.yaml deleted file mode 100644 index 1eb2608b83..0000000000 --- a/gax-java/.github/workflows/sonar.yaml +++ /dev/null @@ -1,38 +0,0 @@ -name: Sonar -on: - push: - branches: - - main - pull_request: - types: [opened, synchronize, reopened] -jobs: - sonar-maven: - name: Java 11 Maven Build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Set up JDK 11 - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: 11 - - name: Cache SonarCloud packages - uses: actions/cache@v3 - with: - path: ~/.sonar/cache - key: ${{ runner.os }}-sonar - restore-keys: ${{ runner.os }}-sonar - - name: Cache Maven packages - uses: actions/cache@v3 - with: - path: ~/.m2/repository - key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} - restore-keys: ${{ runner.os }}-m2 - - name: Build and analyze - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} - run: mvn -B verify sonar:sonar -Dsonar.projectKey=googleapis_gax-java -Dsonar.organization=googleapis -Dsonar.host.url=https://sonarcloud.io - diff --git a/gax-java/.kokoro/build.sh b/gax-java/.kokoro/build.sh deleted file mode 100755 index a9e909f0d8..0000000000 --- a/gax-java/.kokoro/build.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -scriptDir=$(realpath $(dirname "${BASH_SOURCE[0]}")) -# cd to the parent directory, i.e. the root of the git repo -cd ${scriptDir}/.. - -echo $JOB_TYPE - -function setJava() { - export JAVA_HOME=$1 - export PATH=${JAVA_HOME}/bin:$PATH -} - -# This project requires compiling the classes in JDK 11 or higher for GraalVM -# classes. Compiling this project with Java 8 or earlier would fail with "class -# file has wrong version 55.0, should be 53.0" and "unrecognized --release 8 -# option" (set in build.gradle). -if [ ! -z "${JAVA11_HOME}" ]; then - setJava "${JAVA11_HOME}" -fi - -mvn -V -B -ntp clean install -DskipTests - -# We ensure the generated class files are compatible with Java 8 -if [ ! -z "${JAVA8_HOME}" ]; then - setJava "${JAVA8_HOME}" -fi - -RETURN_CODE=0 - -case "${JOB_TYPE}" in -test) - # run tests in Java 8 with the source compiled in Java 11 - mvn -V -B -ntp surefire:test - RETURN_CODE=$? - ;; -clirr) - mvn -B -ntp clirr:check - RETURN_CODE=$? - ;; -*) ;; -esac - -echo "exiting with ${RETURN_CODE}" -exit ${RETURN_CODE} \ No newline at end of file diff --git a/gax-java/.kokoro/common.cfg b/gax-java/.kokoro/common.cfg deleted file mode 100644 index e97bed17fc..0000000000 --- a/gax-java/.kokoro/common.cfg +++ /dev/null @@ -1,13 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Download trampoline resources. These will be in ${KOKORO_GFILE_DIR} -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# All builds use the trampoline script to run in docker. -build_file: "gax-java/.kokoro/trampoline.sh" - -# Tell the trampoline which build file to use. -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/gax-java/.kokoro/build.sh" -} diff --git a/gax-java/.kokoro/downstream-client-library-check.sh b/gax-java/.kokoro/downstream-client-library-check.sh deleted file mode 100755 index 612fd793b4..0000000000 --- a/gax-java/.kokoro/downstream-client-library-check.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/bash -# 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 -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail -# Display commands being run. -set -x - -CLIENT_LIBRARY=$1 - -# Example JOB_TYPE: "test" or "graalvm" -export JOB_TYPE=$2 -## Get the directory of the build script -scriptDir="$(realpath "$(dirname "${BASH_SOURCE[0]}")")" -## cd to the parent directory, i.e. the root of the git repo -cd "${scriptDir}"/.. - -# Round 1 -# Publish gax to local maven to make it available for downstream libraries -./gradlew publishToMavenLocal - -# Read current gax version -GAX_VERSION=$( ./gradlew -q :gax:properties | grep '^version: ' | cut -d' ' -f2 ) - -# Round 2 -# Run this gax-java against HEAD of java-shared dependencies - -git clone "https://github.com/googleapis/java-shared-dependencies.git" --depth=1 -pushd java-shared-dependencies/first-party-dependencies - -# replace version -xmllint --shell pom.xml << EOF -setns x=http://maven.apache.org/POM/4.0.0 -cd .//x:artifactId[text()="gax-bom"] -cd ../x:version -set ${GAX_VERSION} -cd ../.. -cd .//x:artifactId[text()="gax-grpc"] -cd ../x:version -set ${GAX_VERSION} -save pom.xml -EOF - -cd .. -mvn verify install -B -V -ntp -fae \ --DskipTests=true \ --Dmaven.javadoc.skip=true \ --Dgcloud.download.skip=true \ --Denforcer.skip=true - -# Namespace (xmlns) prevents xmllint from specifying tag names in XPath -SHARED_DEPS_VERSION=$( sed -e 's/xmlns=".*"//' pom.xml | xmllint --xpath '/project/version/text()' - ) - -if [ -z "${SHARED_DEPS_VERSION}" ]; then - echo "Version is not found in pom.xml" - exit 1 -fi - -# Round 3 -# Run this shared-dependencies BOM against java client libraries -git clone "https://github.com/googleapis/java-${CLIENT_LIBRARY}.git" --depth=1 -pushd java-"${CLIENT_LIBRARY}" - -if [[ $CLIENT_LIBRARY == "bigtable" ]]; then - pushd google-cloud-bigtable-deps-bom -fi - -# replace version -xmllint --shell pom.xml << EOF -setns x=http://maven.apache.org/POM/4.0.0 -cd .//x:artifactId[text()="google-cloud-shared-dependencies"] -cd ../x:version -set ${SHARED_DEPS_VERSION} -save pom.xml -EOF - -if [[ $CLIENT_LIBRARY == "bigtable" ]]; then - popd -fi - -echo "Modification on the shared dependencies BOM:" -git diff -echo - -export INTEGRATION_TEST_ARGS="-Denforcer.skip=true" - -# This reads the JOB_TYPE environmental variable ("test" or "graalvm") -.kokoro/build.sh diff --git a/gax-java/.kokoro/populate-secrets.sh b/gax-java/.kokoro/populate-secrets.sh deleted file mode 100755 index f52514257e..0000000000 --- a/gax-java/.kokoro/populate-secrets.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# Copyright 2020 Google LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -function now { date +"%Y-%m-%d %H:%M:%S" | tr -d '\n' ;} -function msg { println "$*" >&2 ;} -function println { printf '%s\n' "$(now) $*" ;} - - -# Populates requested secrets set in SECRET_MANAGER_KEYS from service account: -# kokoro-trampoline@cloud-devrel-kokoro-resources.iam.gserviceaccount.com -SECRET_LOCATION="${KOKORO_GFILE_DIR}/secret_manager" -msg "Creating folder on disk for secrets: ${SECRET_LOCATION}" -mkdir -p ${SECRET_LOCATION} -for key in $(echo ${SECRET_MANAGER_KEYS} | sed "s/,/ /g") -do - msg "Retrieving secret ${key}" - docker run --entrypoint=gcloud \ - --volume=${KOKORO_GFILE_DIR}:${KOKORO_GFILE_DIR} \ - gcr.io/google.com/cloudsdktool/cloud-sdk \ - secrets versions access latest \ - --project cloud-devrel-kokoro-resources \ - --secret ${key} > \ - "${SECRET_LOCATION}/${key}" - if [[ $? == 0 ]]; then - msg "Secret written to ${SECRET_LOCATION}/${key}" - else - msg "Error retrieving secret ${key}" - fi -done diff --git a/gax-java/.kokoro/release/common.cfg b/gax-java/.kokoro/release/common.cfg deleted file mode 100644 index e86574d518..0000000000 --- a/gax-java/.kokoro/release/common.cfg +++ /dev/null @@ -1,50 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Download trampoline resources. -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# Use the trampoline script to run in docker. -build_file: "gax-java/.kokoro/trampoline.sh" - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - # We use JDK 11 to produce Java 8-compatible artifacts - value: "gcr.io/cloud-devrel-kokoro-resources/java11" -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "maven-gpg-keyring" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "maven-gpg-passphrase" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "maven-gpg-pubkeyring" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "sonatype-credentials" - } - } -} diff --git a/gax-java/.kokoro/release/common.sh b/gax-java/.kokoro/release/common.sh deleted file mode 100755 index 693bae8bfb..0000000000 --- a/gax-java/.kokoro/release/common.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -# Get secrets from keystore and set and environment variables -setup_environment_secrets() { - export GPG_PASSPHRASE=$(cat ${KOKORO_KEYSTORE_DIR}/70247_maven-gpg-passphrase) - export GPG_TTY=$(tty) - export GPG_HOMEDIR=/gpg - mkdir $GPG_HOMEDIR - mv ${KOKORO_KEYSTORE_DIR}/70247_maven-gpg-pubkeyring $GPG_HOMEDIR/pubring.gpg - mv ${KOKORO_KEYSTORE_DIR}/70247_maven-gpg-keyring $GPG_HOMEDIR/secring.gpg - export GPG_KEY_ID=$(echo -n $(gpg --with-colons ${GPG_HOMEDIR}/pubring.gpg | awk -F':' '/pub/{ print $5 }')) - export SONATYPE_USERNAME=$(cat ${KOKORO_KEYSTORE_DIR}/70247_sonatype-credentials | cut -f1 -d'|') - export SONATYPE_PASSWORD=$(cat ${KOKORO_KEYSTORE_DIR}/70247_sonatype-credentials | cut -f2 -d'|') -} - -create_settings_xml_file() { - echo " - - - - ossrh - ${SONATYPE_USERNAME} - ${SONATYPE_PASSWORD} - - - sonatype-nexus-staging - ${SONATYPE_USERNAME} - ${SONATYPE_PASSWORD} - - - sonatype-nexus-snapshots - ${SONATYPE_USERNAME} - ${SONATYPE_PASSWORD} - - -" > $1 -} \ No newline at end of file diff --git a/gax-java/.kokoro/release/publish_javadoc11.cfg b/gax-java/.kokoro/release/publish_javadoc11.cfg deleted file mode 100644 index 4bfabf6d00..0000000000 --- a/gax-java/.kokoro/release/publish_javadoc11.cfg +++ /dev/null @@ -1,29 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -env_vars: { - key: "STAGING_BUCKET_V2" - value: "docs-staging-v2" -} - -# Configure the docker image for kokoro-trampoline -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java11" -} - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/gax-java/.kokoro/release/publish_javadoc11.sh" -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "docuploader_service_account" - } - } -} - -# Downloads docfx doclet resource. This will be in ${KOKORO_GFILE_DIR}/ -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/docfx" diff --git a/gax-java/.kokoro/release/publish_javadoc11.sh b/gax-java/.kokoro/release/publish_javadoc11.sh deleted file mode 100755 index 2a6fb82911..0000000000 --- a/gax-java/.kokoro/release/publish_javadoc11.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -if [[ -z "${CREDENTIALS}" ]]; then - CREDENTIALS=${KOKORO_KEYSTORE_DIR}/73713_docuploader_service_account -fi - -if [[ -z "${STAGING_BUCKET_V2}" ]]; then - echo "Need to set STAGING_BUCKET environment variable" - exit 1 -fi - -# work from the git root directory -pushd $(dirname "$0")/../../ - -# install docuploader package -python3 -m pip install --require-hashes -r .kokoro/requirements.txt - -NAME=gax -VERSION=$(grep ${NAME}: versions.txt | cut -d: -f3) - -mvn -B -ntp \ - -DtrimStackTrace=false \ - -Dclirr.skip=true \ - -Denforcer.skip=true \ - -Dcheckstyle.skip=true \ - -Dflatten.skip=true \ - -Danimal.sniffer.skip=true \ - -DskipTests=true \ - -Djacoco.skip=true \ - install - -# build the docs -mvn -B -ntp \ - -P docFX \ - -Dclirr.skip=true \ - -Denforcer.skip=true \ - -Dcheckstyle.skip=true \ - -Dflatten.skip=true \ - -Danimal.sniffer.skip=true \ - javadoc:aggregate - -# copy README to docfx-yml dir and rename index.md -cp README.md target/docfx-yml/index.md - -# copy CHANGELOG to docfx-yml dir and rename history.md -cp CHANGELOG.md target/docfx-yml/history.md - -pushd target/docfx-yml/ - -# create metadata -python3 -m docuploader create-metadata \ - --name ${NAME} \ - --version ${VERSION} \ - --language java - -# upload docs -python3 -m docuploader upload . \ - --credentials ${CREDENTIALS} \ - --staging-bucket ${STAGING_BUCKET_V2} \ - --destination-prefix docfx - -popd \ No newline at end of file diff --git a/gax-java/.kokoro/release/stage.cfg b/gax-java/.kokoro/release/stage.cfg deleted file mode 100644 index b08c759087..0000000000 --- a/gax-java/.kokoro/release/stage.cfg +++ /dev/null @@ -1,17 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/gax-java/.kokoro/release/stage.sh" -} - -action { - define_artifacts { - regex: "github/gax-java/target/nexus-staging/staging/*.properties" - strip_prefix: "github/gax-java" - } -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "releasetool-publish-reporter-app,releasetool-publish-reporter-googleapis-installation,releasetool-publish-reporter-pem" -} diff --git a/gax-java/.kokoro/release/stage.sh b/gax-java/.kokoro/release/stage.sh deleted file mode 100755 index 5ff691d31a..0000000000 --- a/gax-java/.kokoro/release/stage.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -if [[ -n "${AUTORELEASE_PR}" ]] -then - # Start the releasetool reporter - requirementsFile=$(realpath $(dirname "${BASH_SOURCE[0]}")/../requirements.txt) - python3 -m pip install --require-hashes -r $requirementsFile - python3 -m releasetool publish-reporter-script > /tmp/publisher-script; source /tmp/publisher-script -fi - -source $(dirname "$0")/common.sh -MAVEN_SETTINGS_FILE=$(realpath $(dirname "$0")/../../)/settings.xml -pushd $(dirname "$0")/../../ - -setup_environment_secrets -create_settings_xml_file "settings.xml" - -mvn clean deploy -B \ - -DskipTests=true \ - -Dclirr.skip=true \ - --settings ${MAVEN_SETTINGS_FILE} \ - -Dgpg.executable=gpg \ - -Dgpg.passphrase=${GPG_PASSPHRASE} \ - -Dgpg.homedir=${GPG_HOMEDIR} \ - -P release - -# The job triggered by Release Please (release-trigger) has this AUTORELEASE_PR -# environment variable. Fusion also lets us to specify this variable. -if [[ -n "${AUTORELEASE_PR}" ]] -then - mvn nexus-staging:release -B \ - -P release-staging-repository \ - -DperformRelease=true \ - --settings=${MAVEN_SETTINGS_FILE} -else - echo "AUTORELEASE_PR is not set. Not releasing." -fi diff --git a/gax-java/.kokoro/requirements.in b/gax-java/.kokoro/requirements.in deleted file mode 100644 index a5010f77d4..0000000000 --- a/gax-java/.kokoro/requirements.in +++ /dev/null @@ -1,34 +0,0 @@ -gcp-docuploader==0.6.3 -google-crc32c==1.3.0 -googleapis-common-protos==1.56.3 -gcp-releasetool==1.9.1 -cryptography==38.0.3 -cachetools==4.2.4 -cffi==1.15.1 -jeepney==0.7.1 -jinja2==3.0.3 -markupsafe==2.0.1 -keyring==23.4.1 -packaging==21.3 -protobuf==3.19.5 -pyjwt==2.4.0 -pyparsing==3.0.9 -pycparser==2.21 -pyperclip==1.8.2 -python-dateutil==2.8.2 -requests==2.27.1 -certifi==2022.12.7 -importlib-metadata==4.8.3 -zipp==3.6.0 -google_api_core==2.8.2 -google-cloud-storage==2.0.0 -google-resumable-media==2.3.3 -google-cloud-core==2.3.1 -typing-extensions==4.1.1 -urllib3==1.26.12 -zipp==3.6.0 -rsa==4.9 -six==1.16.0 -attrs==22.1.0 -google-auth==2.14.1 -idna==3.4 \ No newline at end of file diff --git a/gax-java/.kokoro/requirements.txt b/gax-java/.kokoro/requirements.txt deleted file mode 100644 index 5294c8029f..0000000000 --- a/gax-java/.kokoro/requirements.txt +++ /dev/null @@ -1,455 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.10 -# To update, run: -# -# pip-compile --generate-hashes requirements.in -# -attrs==22.1.0 \ - --hash=sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6 \ - --hash=sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c - # via - # -r requirements.in - # gcp-releasetool -cachetools==4.2.4 \ - --hash=sha256:89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693 \ - --hash=sha256:92971d3cb7d2a97efff7c7bb1657f21a8f5fb309a37530537c71b1774189f2d1 - # via - # -r requirements.in - # google-auth -certifi==2022.12.7 \ - --hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \ - --hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18 - # via - # -r requirements.in - # requests -cffi==1.15.1 \ - --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \ - --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \ - --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \ - --hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 \ - --hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 \ - --hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 \ - --hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a \ - --hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e \ - --hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc \ - --hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf \ - --hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 \ - --hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 \ - --hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 \ - --hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 \ - --hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c \ - --hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 \ - --hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 \ - --hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca \ - --hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 \ - --hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac \ - --hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd \ - --hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee \ - --hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a \ - --hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 \ - --hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 \ - --hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 \ - --hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 \ - --hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f \ - --hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e \ - --hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 \ - --hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b \ - --hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e \ - --hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e \ - --hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d \ - --hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c \ - --hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 \ - --hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 \ - --hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 \ - --hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 \ - --hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 \ - --hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c \ - --hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 \ - --hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 \ - --hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 \ - --hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d \ - --hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 \ - --hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 \ - --hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 \ - --hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c \ - --hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 \ - --hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 \ - --hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 \ - --hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d \ - --hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d \ - --hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 \ - --hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 \ - --hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 \ - --hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 \ - --hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e \ - --hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 \ - --hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 \ - --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \ - --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \ - --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0 - # via - # -r requirements.in - # cryptography -charset-normalizer==2.0.12 \ - --hash=sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597 \ - --hash=sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df - # via requests -click==8.0.4 \ - --hash=sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1 \ - --hash=sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb - # via - # gcp-docuploader - # gcp-releasetool -colorlog==6.7.0 \ - --hash=sha256:0d33ca236784a1ba3ff9c532d4964126d8a2c44f1f0cb1d2b0728196f512f662 \ - --hash=sha256:bd94bd21c1e13fac7bd3153f4bc3a7dc0eb0974b8bc2fdf1a989e474f6e582e5 - # via gcp-docuploader -cryptography==38.0.3 \ - --hash=sha256:068147f32fa662c81aebab95c74679b401b12b57494872886eb5c1139250ec5d \ - --hash=sha256:06fc3cc7b6f6cca87bd56ec80a580c88f1da5306f505876a71c8cfa7050257dd \ - --hash=sha256:25c1d1f19729fb09d42e06b4bf9895212292cb27bb50229f5aa64d039ab29146 \ - --hash=sha256:402852a0aea73833d982cabb6d0c3bb582c15483d29fb7085ef2c42bfa7e38d7 \ - --hash=sha256:4e269dcd9b102c5a3d72be3c45d8ce20377b8076a43cbed6f660a1afe365e436 \ - --hash=sha256:5419a127426084933076132d317911e3c6eb77568a1ce23c3ac1e12d111e61e0 \ - --hash=sha256:554bec92ee7d1e9d10ded2f7e92a5d70c1f74ba9524947c0ba0c850c7b011828 \ - --hash=sha256:5e89468fbd2fcd733b5899333bc54d0d06c80e04cd23d8c6f3e0542358c6060b \ - --hash=sha256:65535bc550b70bd6271984d9863a37741352b4aad6fb1b3344a54e6950249b55 \ - --hash=sha256:6ab9516b85bebe7aa83f309bacc5f44a61eeb90d0b4ec125d2d003ce41932d36 \ - --hash=sha256:6addc3b6d593cd980989261dc1cce38263c76954d758c3c94de51f1e010c9a50 \ - --hash=sha256:728f2694fa743a996d7784a6194da430f197d5c58e2f4e278612b359f455e4a2 \ - --hash=sha256:785e4056b5a8b28f05a533fab69febf5004458e20dad7e2e13a3120d8ecec75a \ - --hash=sha256:78cf5eefac2b52c10398a42765bfa981ce2372cbc0457e6bf9658f41ec3c41d8 \ - --hash=sha256:7f836217000342d448e1c9a342e9163149e45d5b5eca76a30e84503a5a96cab0 \ - --hash=sha256:8d41a46251bf0634e21fac50ffd643216ccecfaf3701a063257fe0b2be1b6548 \ - --hash=sha256:984fe150f350a3c91e84de405fe49e688aa6092b3525f407a18b9646f6612320 \ - --hash=sha256:9b24bcff7853ed18a63cfb0c2b008936a9554af24af2fb146e16d8e1aed75748 \ - --hash=sha256:b1b35d9d3a65542ed2e9d90115dfd16bbc027b3f07ee3304fc83580f26e43249 \ - --hash=sha256:b1b52c9e5f8aa2b802d48bd693190341fae201ea51c7a167d69fc48b60e8a959 \ - --hash=sha256:bbf203f1a814007ce24bd4d51362991d5cb90ba0c177a9c08825f2cc304d871f \ - --hash=sha256:be243c7e2bfcf6cc4cb350c0d5cdf15ca6383bbcb2a8ef51d3c9411a9d4386f0 \ - --hash=sha256:bfbe6ee19615b07a98b1d2287d6a6073f734735b49ee45b11324d85efc4d5cbd \ - --hash=sha256:c46837ea467ed1efea562bbeb543994c2d1f6e800785bd5a2c98bc096f5cb220 \ - --hash=sha256:dfb4f4dd568de1b6af9f4cda334adf7d72cf5bc052516e1b2608b683375dd95c \ - --hash=sha256:ed7b00096790213e09eb11c97cc6e2b757f15f3d2f85833cd2d3ec3fe37c1722 - # via - # -r requirements.in - # gcp-releasetool - # secretstorage -gcp-docuploader==0.6.3 \ - --hash=sha256:ba8c9d76b3bbac54b0311c503a373b00edc2dc02d6d54ea9507045adb8e870f7 \ - --hash=sha256:c0f5aaa82ce1854a386197e4e359b120ad6d4e57ae2c812fce42219a3288026b - # via -r requirements.in -gcp-releasetool==1.9.1 \ - --hash=sha256:952f4055d5d986b070ae2a71c4410b250000f9cc5a1e26398fcd55a5bbc5a15f \ - --hash=sha256:d0d3c814a97c1a237517e837d8cfa668ced8df4b882452578ecef4a4e79c583b - # via -r requirements.in -google-api-core==2.8.2 \ - --hash=sha256:06f7244c640322b508b125903bb5701bebabce8832f85aba9335ec00b3d02edc \ - --hash=sha256:93c6a91ccac79079ac6bbf8b74ee75db970cc899278b97d53bc012f35908cf50 - # via - # -r requirements.in - # google-cloud-core - # google-cloud-storage -google-auth==2.14.1 \ - --hash=sha256:f5d8701633bebc12e0deea4df8abd8aff31c28b355360597f7f2ee60f2e4d016 - # via - # -r requirements.in - # gcp-releasetool - # google-api-core - # google-cloud-core - # google-cloud-storage -google-cloud-core==2.3.1 \ - --hash=sha256:113ba4f492467d5bd442c8d724c1a25ad7384045c3178369038840ecdd19346c \ - --hash=sha256:34334359cb04187bdc80ddcf613e462dfd7a3aabbc3fe4d118517ab4b9303d53 - # via - # -r requirements.in - # google-cloud-storage -google-cloud-storage==2.0.0 \ - --hash=sha256:a57a15aead0f9dfbd4381f1bfdbe8bf89818a4bd75bab846cafcefb2db846c47 \ - --hash=sha256:ec4be60bb223a3a960f0d01697d849b86d91cad815a84915a32ed3635e93a5e7 - # via - # -r requirements.in - # gcp-docuploader -google-crc32c==1.3.0 \ - --hash=sha256:04e7c220798a72fd0f08242bc8d7a05986b2a08a0573396187fd32c1dcdd58b3 \ - --hash=sha256:05340b60bf05b574159e9bd940152a47d38af3fb43803ffe71f11d704b7696a6 \ - --hash=sha256:12674a4c3b56b706153a358eaa1018c4137a5a04635b92b4652440d3d7386206 \ - --hash=sha256:127f9cc3ac41b6a859bd9dc4321097b1a4f6aa7fdf71b4f9227b9e3ebffb4422 \ - --hash=sha256:13af315c3a0eec8bb8b8d80b8b128cb3fcd17d7e4edafc39647846345a3f003a \ - --hash=sha256:1926fd8de0acb9d15ee757175ce7242e235482a783cd4ec711cc999fc103c24e \ - --hash=sha256:226f2f9b8e128a6ca6a9af9b9e8384f7b53a801907425c9a292553a3a7218ce0 \ - --hash=sha256:276de6273eb074a35bc598f8efbc00c7869c5cf2e29c90748fccc8c898c244df \ - --hash=sha256:318f73f5484b5671f0c7f5f63741ab020a599504ed81d209b5c7129ee4667407 \ - --hash=sha256:3bbce1be3687bbfebe29abdb7631b83e6b25da3f4e1856a1611eb21854b689ea \ - --hash=sha256:42ae4781333e331a1743445931b08ebdad73e188fd554259e772556fc4937c48 \ - --hash=sha256:58be56ae0529c664cc04a9c76e68bb92b091e0194d6e3c50bea7e0f266f73713 \ - --hash=sha256:5da2c81575cc3ccf05d9830f9e8d3c70954819ca9a63828210498c0774fda1a3 \ - --hash=sha256:6311853aa2bba4064d0c28ca54e7b50c4d48e3de04f6770f6c60ebda1e975267 \ - --hash=sha256:650e2917660e696041ab3dcd7abac160b4121cd9a484c08406f24c5964099829 \ - --hash=sha256:6a4db36f9721fdf391646685ecffa404eb986cbe007a3289499020daf72e88a2 \ - --hash=sha256:779cbf1ce375b96111db98fca913c1f5ec11b1d870e529b1dc7354b2681a8c3a \ - --hash=sha256:7f6fe42536d9dcd3e2ffb9d3053f5d05221ae3bbcefbe472bdf2c71c793e3183 \ - --hash=sha256:891f712ce54e0d631370e1f4997b3f182f3368179198efc30d477c75d1f44942 \ - --hash=sha256:95c68a4b9b7828ba0428f8f7e3109c5d476ca44996ed9a5f8aac6269296e2d59 \ - --hash=sha256:96a8918a78d5d64e07c8ea4ed2bc44354e3f93f46a4866a40e8db934e4c0d74b \ - --hash=sha256:9c3cf890c3c0ecfe1510a452a165431b5831e24160c5fcf2071f0f85ca5a47cd \ - --hash=sha256:9f58099ad7affc0754ae42e6d87443299f15d739b0ce03c76f515153a5cda06c \ - --hash=sha256:a0b9e622c3b2b8d0ce32f77eba617ab0d6768b82836391e4f8f9e2074582bf02 \ - --hash=sha256:a7f9cbea4245ee36190f85fe1814e2d7b1e5f2186381b082f5d59f99b7f11328 \ - --hash=sha256:bab4aebd525218bab4ee615786c4581952eadc16b1ff031813a2fd51f0cc7b08 \ - --hash=sha256:c124b8c8779bf2d35d9b721e52d4adb41c9bfbde45e6a3f25f0820caa9aba73f \ - --hash=sha256:c9da0a39b53d2fab3e5467329ed50e951eb91386e9d0d5b12daf593973c3b168 \ - --hash=sha256:ca60076c388728d3b6ac3846842474f4250c91efbfe5afa872d3ffd69dd4b318 \ - --hash=sha256:cb6994fff247987c66a8a4e550ef374671c2b82e3c0d2115e689d21e511a652d \ - --hash=sha256:d1c1d6236feab51200272d79b3d3e0f12cf2cbb12b208c835b175a21efdb0a73 \ - --hash=sha256:dd7760a88a8d3d705ff562aa93f8445ead54f58fd482e4f9e2bafb7e177375d4 \ - --hash=sha256:dda4d8a3bb0b50f540f6ff4b6033f3a74e8bf0bd5320b70fab2c03e512a62812 \ - --hash=sha256:e0f1ff55dde0ebcfbef027edc21f71c205845585fffe30d4ec4979416613e9b3 \ - --hash=sha256:e7a539b9be7b9c00f11ef16b55486141bc2cdb0c54762f84e3c6fc091917436d \ - --hash=sha256:eb0b14523758e37802f27b7f8cd973f5f3d33be7613952c0df904b68c4842f0e \ - --hash=sha256:ed447680ff21c14aaceb6a9f99a5f639f583ccfe4ce1a5e1d48eb41c3d6b3217 \ - --hash=sha256:f52a4ad2568314ee713715b1e2d79ab55fab11e8b304fd1462ff5cccf4264b3e \ - --hash=sha256:fbd60c6aaa07c31d7754edbc2334aef50601b7f1ada67a96eb1eb57c7c72378f \ - --hash=sha256:fc28e0db232c62ca0c3600884933178f0825c99be4474cdd645e378a10588125 \ - --hash=sha256:fe31de3002e7b08eb20823b3735b97c86c5926dd0581c7710a680b418a8709d4 \ - --hash=sha256:fec221a051150eeddfdfcff162e6db92c65ecf46cb0f7bb1bf812a1520ec026b \ - --hash=sha256:ff71073ebf0e42258a42a0b34f2c09ec384977e7f6808999102eedd5b49920e3 - # via - # -r requirements.in - # google-resumable-media -google-resumable-media==2.3.3 \ - --hash=sha256:27c52620bd364d1c8116eaac4ea2afcbfb81ae9139fb3199652fcac1724bfb6c \ - --hash=sha256:5b52774ea7a829a8cdaa8bd2d4c3d4bc660c91b30857ab2668d0eb830f4ea8c5 - # via - # -r requirements.in - # google-cloud-storage -googleapis-common-protos==1.56.3 \ - --hash=sha256:6f1369b58ed6cf3a4b7054a44ebe8d03b29c309257583a2bbdc064cd1e4a1442 \ - --hash=sha256:87955d7b3a73e6e803f2572a33179de23989ebba725e05ea42f24838b792e461 - # via - # -r requirements.in - # google-api-core -idna==3.4 \ - --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ - --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 - # via - # -r requirements.in - # requests -importlib-metadata==4.8.3 \ - --hash=sha256:65a9576a5b2d58ca44d133c42a241905cc45e34d2c06fd5ba2bafa221e5d7b5e \ - --hash=sha256:766abffff765960fcc18003801f7044eb6755ffae4521c8e8ce8e83b9c9b0668 - # via - # -r requirements.in - # keyring -jeepney==0.7.1 \ - --hash=sha256:1b5a0ea5c0e7b166b2f5895b91a08c14de8915afda4407fb5022a195224958ac \ - --hash=sha256:fa9e232dfa0c498bd0b8a3a73b8d8a31978304dcef0515adc859d4e096f96f4f - # via - # -r requirements.in - # keyring - # secretstorage -jinja2==3.0.3 \ - --hash=sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8 \ - --hash=sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7 - # via - # -r requirements.in - # gcp-releasetool -keyring==23.4.1 \ - --hash=sha256:17e49fb0d6883c2b4445359434dba95aad84aabb29bbff044ad0ed7100232eca \ - --hash=sha256:89cbd74d4683ed164c8082fb38619341097741323b3786905c6dac04d6915a55 - # via - # -r requirements.in - # gcp-releasetool -markupsafe==2.0.1 \ - --hash=sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298 \ - --hash=sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64 \ - --hash=sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b \ - --hash=sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194 \ - --hash=sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567 \ - --hash=sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff \ - --hash=sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724 \ - --hash=sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74 \ - --hash=sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646 \ - --hash=sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35 \ - --hash=sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6 \ - --hash=sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a \ - --hash=sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6 \ - --hash=sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad \ - --hash=sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26 \ - --hash=sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38 \ - --hash=sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac \ - --hash=sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7 \ - --hash=sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6 \ - --hash=sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047 \ - --hash=sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75 \ - --hash=sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f \ - --hash=sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b \ - --hash=sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135 \ - --hash=sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8 \ - --hash=sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a \ - --hash=sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a \ - --hash=sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1 \ - --hash=sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9 \ - --hash=sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864 \ - --hash=sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914 \ - --hash=sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee \ - --hash=sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f \ - --hash=sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18 \ - --hash=sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8 \ - --hash=sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2 \ - --hash=sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d \ - --hash=sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b \ - --hash=sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b \ - --hash=sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86 \ - --hash=sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6 \ - --hash=sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f \ - --hash=sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb \ - --hash=sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833 \ - --hash=sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28 \ - --hash=sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e \ - --hash=sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415 \ - --hash=sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902 \ - --hash=sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f \ - --hash=sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d \ - --hash=sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9 \ - --hash=sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d \ - --hash=sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145 \ - --hash=sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066 \ - --hash=sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c \ - --hash=sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1 \ - --hash=sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a \ - --hash=sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207 \ - --hash=sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f \ - --hash=sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53 \ - --hash=sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd \ - --hash=sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134 \ - --hash=sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85 \ - --hash=sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9 \ - --hash=sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5 \ - --hash=sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94 \ - --hash=sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509 \ - --hash=sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51 \ - --hash=sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872 - # via - # -r requirements.in - # jinja2 -packaging==21.3 \ - --hash=sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb \ - --hash=sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522 - # via - # -r requirements.in - # gcp-releasetool -protobuf==3.19.5 \ - --hash=sha256:1867f93b06a183f87696871bb8d1e99ee71dbb69d468ce1f0cc8bf3d30f982f3 \ - --hash=sha256:3c4160b601220627f7e91154e572baf5e161a9c3f445a8242d536ee3d0b7b17c \ - --hash=sha256:4ee2af7051d3b10c8a4fe6fd1a2c69f201fea36aeee7086cf202a692e1b99ee1 \ - --hash=sha256:5266c36cc0af3bb3dbf44f199d225b33da66a9a5c3bdc2b14865ad10eddf0e37 \ - --hash=sha256:5470f892961af464ae6eaf0f3099e2c1190ae8c7f36f174b89491281341f79ca \ - --hash=sha256:66d14b5b90090353efe75c9fb1bf65ef7267383034688d255b500822e37d5c2f \ - --hash=sha256:67efb5d20618020aa9596e17bfc37ca068c28ec0c1507d9507f73c93d46c9855 \ - --hash=sha256:696e6cfab94cc15a14946f2bf72719dced087d437adbd994fff34f38986628bc \ - --hash=sha256:6a02172b9650f819d01fb8e224fc69b0706458fc1ab4f1c669281243c71c1a5e \ - --hash=sha256:950abd6c00e7b51f87ae8b18a0ce4d69fea217f62f171426e77de5061f6d9850 \ - --hash=sha256:9e1d74032f56ff25f417cfe84c8147047732e5059137ca42efad20cbbd25f5e0 \ - --hash=sha256:9e42b1cf2ecd8a1bd161239e693f22035ba99905ae6d7efeac8a0546c7ec1a27 \ - --hash=sha256:9f957ef53e872d58a0afd3bf6d80d48535d28c99b40e75e6634cbc33ea42fd54 \ - --hash=sha256:a89aa0c042e61e11ade320b802d6db4ee5391d8d973e46d3a48172c1597789f8 \ - --hash=sha256:c0f80876a8ff0ae7064084ed094eb86497bd5a3812e6fc96a05318b92301674e \ - --hash=sha256:c44e3282cff74ad18c7e8a0375f407f69ee50c2116364b44492a196293e08b21 \ - --hash=sha256:d249519ba5ecf5dd6b18150c9b6bcde510b273714b696f3923ff8308fc11ae49 \ - --hash=sha256:d3973a2d58aefc7d1230725c2447ce7f86a71cbc094b86a77c6ee1505ac7cdb1 \ - --hash=sha256:dca2284378a5f2a86ffed35c6ac147d14c48b525eefcd1083e5a9ce28dfa8657 \ - --hash=sha256:e63b0b3c42e51c94add62b010366cd4979cb6d5f06158bcae8faac4c294f91e1 \ - --hash=sha256:f2b599a21c9a32e171ec29a2ac54e03297736c578698e11b099d031f79da114b \ - --hash=sha256:f2bde37667b18c2b5280df83bc799204394a5d2d774e4deaf9de0eb741df6833 \ - --hash=sha256:f4f909f4dde413dec435a44b0894956d55bb928ded7d6e3c726556ca4c796e84 \ - --hash=sha256:f976234e20ab2785f54224bcdafa027674e23663b132fa3ca0caa291a6cfbde7 \ - --hash=sha256:f9cebda093c2f6bfed88f1c17cdade09d4d96096421b344026feee236532d4de - # via - # -r requirements.in - # gcp-docuploader - # gcp-releasetool - # google-api-core - # google-cloud-storage - # googleapis-common-protos -pyasn1==0.4.8 \ - --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \ - --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba - # via - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 \ - --hash=sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e \ - --hash=sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74 - # via google-auth -pycparser==2.21 \ - --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ - --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 - # via - # -r requirements.in - # cffi -pyjwt==2.4.0 \ - --hash=sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf \ - --hash=sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba - # via - # -r requirements.in - # gcp-releasetool -pyparsing==3.0.9 \ - --hash=sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb \ - --hash=sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc - # via - # -r requirements.in - # packaging -pyperclip==1.8.2 \ - --hash=sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57 - # via - # -r requirements.in - # gcp-releasetool -python-dateutil==2.8.2 \ - --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ - --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 - # via - # -r requirements.in - # gcp-releasetool -requests==2.27.1 \ - --hash=sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61 \ - --hash=sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d - # via - # -r requirements.in - # gcp-releasetool - # google-api-core - # google-cloud-storage -rsa==4.9 \ - --hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \ - --hash=sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21 - # via - # -r requirements.in - # google-auth -secretstorage==3.3.3 \ - --hash=sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77 \ - --hash=sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99 - # via keyring -six==1.16.0 \ - --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ - --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 - # via - # -r requirements.in - # gcp-docuploader - # google-auth - # python-dateutil -typing-extensions==4.1.1 \ - --hash=sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42 \ - --hash=sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2 - # via -r requirements.in -urllib3==1.26.12 \ - --hash=sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e \ - --hash=sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997 - # via - # -r requirements.in - # requests -zipp==3.6.0 \ - --hash=sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832 \ - --hash=sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc - # via - # -r requirements.in - # importlib-metadata diff --git a/gax-java/.kokoro/trampoline.sh b/gax-java/.kokoro/trampoline.sh deleted file mode 100755 index 9da0f83987..0000000000 --- a/gax-java/.kokoro/trampoline.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# Copyright 2018 Google Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -set -eo pipefail -# Always run the cleanup script, regardless of the success of bouncing into -# the container. -function cleanup() { - chmod +x ${KOKORO_GFILE_DIR}/trampoline_cleanup.sh - ${KOKORO_GFILE_DIR}/trampoline_cleanup.sh - echo "cleanup"; -} -trap cleanup EXIT - -$(dirname $0)/populate-secrets.sh # Secret Manager secrets. -python3 "${KOKORO_GFILE_DIR}/trampoline_v1.py" diff --git a/java-common-protos/.github/CODEOWNERS b/java-common-protos/.github/CODEOWNERS deleted file mode 100644 index db2d8ad174..0000000000 --- a/java-common-protos/.github/CODEOWNERS +++ /dev/null @@ -1,13 +0,0 @@ -# Code owners file. -# This file controls who is tagged for review for any given pull request. - -# For syntax help see: -# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#codeowners-syntax - -* @googleapis/yoshi-java - -# The java-samples-reviewers team is the default owner for samples changes -samples/**/*.java @googleapis/java-samples-reviewers - -# Generated snippets should not be owned by samples reviewers -samples/snippets/generated/ @googleapis/yoshi-java diff --git a/java-common-protos/.github/ISSUE_TEMPLATE/support_request.md b/java-common-protos/.github/ISSUE_TEMPLATE/support_request.md deleted file mode 100644 index 9958690321..0000000000 --- a/java-common-protos/.github/ISSUE_TEMPLATE/support_request.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -name: Support request -about: If you have a support contract with Google, please create an issue in the Google Cloud Support console. - ---- - -**PLEASE READ**: If you have a support contract with Google, please create an issue in the [support console](https://cloud.google.com/support/) instead of filing on GitHub. This will ensure a timely response. diff --git a/java-common-protos/.github/PULL_REQUEST_TEMPLATE.md b/java-common-protos/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 7d3626fbb5..0000000000 --- a/java-common-protos/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,10 +0,0 @@ -Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly: -- [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/java-common-protos/issues/new/choose) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea -- [ ] Ensure the tests and linter pass -- [ ] Code coverage does not decrease (if any source code was changed) -- [ ] Appropriate docs were updated (if necessary) - -Fixes # ☕️ - -If you write sample code, please follow the [samples format]( -https://github.com/GoogleCloudPlatform/java-docs-samples/blob/main/SAMPLE_FORMAT.md). diff --git a/java-common-protos/.github/auto-label.yaml b/java-common-protos/.github/auto-label.yaml deleted file mode 100644 index 4caef688b7..0000000000 --- a/java-common-protos/.github/auto-label.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright 2021 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -requestsize: - enabled: true diff --git a/java-common-protos/.github/blunderbuss.yml b/java-common-protos/.github/blunderbuss.yml deleted file mode 100644 index 2176b05432..0000000000 --- a/java-common-protos/.github/blunderbuss.yml +++ /dev/null @@ -1,7 +0,0 @@ -# Configuration for the Blunderbuss GitHub app. For more info see -# https://github.com/googleapis/repo-automation-bots/tree/main/packages/blunderbuss -assign_prs_by: -- labels: - - samples - to: - - googleapis/java-samples-reviewers \ No newline at end of file diff --git a/java-common-protos/.github/generated-files-bot.yml b/java-common-protos/.github/generated-files-bot.yml deleted file mode 100644 index c644a24e11..0000000000 --- a/java-common-protos/.github/generated-files-bot.yml +++ /dev/null @@ -1,12 +0,0 @@ -externalManifests: -- type: json - file: 'synth.metadata' - jsonpath: '$.generatedFiles[*]' -- type: json - file: '.github/readme/synth.metadata/synth.metadata' - jsonpath: '$.generatedFiles[*]' -ignoreAuthors: -- 'renovate-bot' -- 'yoshi-automation' -- 'release-please[bot]' -- 'gcf-owl-bot[bot]' diff --git a/java-common-protos/.github/release-please.yml b/java-common-protos/.github/release-please.yml deleted file mode 100644 index 7f2d2a1348..0000000000 --- a/java-common-protos/.github/release-please.yml +++ /dev/null @@ -1,20 +0,0 @@ -bumpMinorPreMajor: true -handleGHRelease: true -releaseType: java-yoshi -branches: - - bumpMinorPreMajor: true - handleGHRelease: true - releaseType: java-yoshi - branch: java7 - - bumpMinorPreMajor: true - handleGHRelease: true - releaseType: java-backport - branch: 2.6.x - - bumpMinorPreMajor: true - handleGHRelease: true - releaseType: java-backport - branch: 2.8.x - - bumpMinorPreMajor: true - handleGHRelease: true - releaseType: java-backport - branch: 2.10.x diff --git a/java-common-protos/.github/release-trigger.yml b/java-common-protos/.github/release-trigger.yml deleted file mode 100644 index d4ca94189e..0000000000 --- a/java-common-protos/.github/release-trigger.yml +++ /dev/null @@ -1 +0,0 @@ -enabled: true diff --git a/java-common-protos/.github/snippet-bot.yml b/java-common-protos/.github/snippet-bot.yml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/java-common-protos/.github/sync-repo-settings.yaml b/java-common-protos/.github/sync-repo-settings.yaml deleted file mode 100644 index 6f36909ee3..0000000000 --- a/java-common-protos/.github/sync-repo-settings.yaml +++ /dev/null @@ -1,86 +0,0 @@ -rebaseMergeAllowed: false -squashMergeAllowed: true -mergeCommitAllowed: false -branchProtectionRules: - - pattern: main - isAdminEnforced: true - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: false - requiredStatusCheckContexts: - - dependencies (8) - - dependencies (11) - - lint - - clirr - - units (8) - - units (11) - - 'Kokoro - Test: Integration' - - cla/google - - OwlBot Post Processor - - pattern: java7 - isAdminEnforced: true - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: false - requiredStatusCheckContexts: - - dependencies (8) - - dependencies (11) - - lint - - clirr - - units (7) - - units (8) - - units (11) - - 'Kokoro - Test: Integration' - - cla/google - - pattern: 2.6.x - isAdminEnforced: true - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: false - requiredStatusCheckContexts: - - dependencies (8) - - dependencies (11) - - lint - - clirr - - units (8) - - units (11) - - 'Kokoro - Test: Integration' - - cla/google - - OwlBot Post Processor - - pattern: 2.8.x - isAdminEnforced: true - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: false - requiredStatusCheckContexts: - - dependencies (8) - - dependencies (11) - - lint - - clirr - - units (8) - - units (11) - - 'Kokoro - Test: Integration' - - cla/google - - OwlBot Post Processor - - pattern: 2.10.x - isAdminEnforced: true - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: false - requiredStatusCheckContexts: - - dependencies (8) - - dependencies (11) - - lint - - clirr - - units (8) - - units (11) - - 'Kokoro - Test: Integration' - - cla/google - - OwlBot Post Processor -permissionRules: - - team: yoshi-admins - permission: admin - - team: yoshi-java-admins - permission: admin - - team: yoshi-java - permission: push diff --git a/java-common-protos/.github/trusted-contribution.yml b/java-common-protos/.github/trusted-contribution.yml deleted file mode 100644 index a0ba1f7d90..0000000000 --- a/java-common-protos/.github/trusted-contribution.yml +++ /dev/null @@ -1,3 +0,0 @@ -trustedContributors: -- renovate-bot -- gcf-owl-bot[bot] diff --git a/java-common-protos/.github/workflows/approve-readme.yaml b/java-common-protos/.github/workflows/approve-readme.yaml deleted file mode 100644 index f5fc7d5169..0000000000 --- a/java-common-protos/.github/workflows/approve-readme.yaml +++ /dev/null @@ -1,69 +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 -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Github action job to test core java library features on -# downstream client libraries before they are released. -on: - pull_request: -name: auto-merge-readme -jobs: - approve: - runs-on: ubuntu-latest - if: github.repository_owner == 'googleapis' && github.head_ref == 'autosynth-readme' - steps: - - uses: actions/github-script@v6 - with: - github-token: ${{secrets.YOSHI_APPROVER_TOKEN}} - script: | - // only approve PRs from yoshi-automation - if (context.payload.pull_request.user.login !== "yoshi-automation") { - return; - } - - // only approve PRs like "chore: release " - if (!context.payload.pull_request.title === "chore: regenerate README") { - return; - } - - // only approve PRs with README.md and synth.metadata changes - const files = new Set( - ( - await github.paginate( - github.pulls.listFiles.endpoint({ - owner: context.repo.owner, - repo: context.repo.repo, - pull_number: context.payload.pull_request.number, - }) - ) - ).map(file => file.filename) - ); - if (files.size != 2 || !files.has("README.md") || !files.has(".github/readme/synth.metadata/synth.metadata")) { - return; - } - - // approve README regeneration PR - await github.pulls.createReview({ - owner: context.repo.owner, - repo: context.repo.repo, - body: 'Rubber stamped PR!', - pull_number: context.payload.pull_request.number, - event: 'APPROVE' - }); - - // attach automerge label - await github.issues.addLabels({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.payload.pull_request.number, - labels: ['automerge'] - }); diff --git a/java-common-protos/.github/workflows/auto-release.yaml b/java-common-protos/.github/workflows/auto-release.yaml deleted file mode 100644 index 7a106d007e..0000000000 --- a/java-common-protos/.github/workflows/auto-release.yaml +++ /dev/null @@ -1,103 +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 -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Github action job to test core java library features on -# downstream client libraries before they are released. -on: - pull_request: -name: auto-release -jobs: - approve: - runs-on: ubuntu-latest - if: contains(github.head_ref, 'release-please') - steps: - - uses: actions/github-script@v6 - with: - github-token: ${{secrets.YOSHI_APPROVER_TOKEN}} - debug: true - script: | - // only approve PRs from release-please[bot] - if (context.payload.pull_request.user.login !== "release-please[bot]") { - return; - } - - // only approve PRs like "chore(main): release " - if ( !context.payload.pull_request.title.startsWith("chore(main): release") ) { - return; - } - - // only approve PRs with pom.xml and versions.txt changes - const filesPromise = github.rest.pulls.listFiles.endpoint({ - owner: context.repo.owner, - repo: context.repo.repo, - pull_number: context.payload.pull_request.number, - }); - const changed_files = await github.paginate(filesPromise) - - if ( changed_files.length < 1 ) { - console.log( "Not proceeding since PR is empty!" ) - return; - } - - if ( !changed_files.some(v => v.filename.includes("pom")) || !changed_files.some(v => v.filename.includes("versions.txt")) ) { - console.log( "PR file changes do not have pom.xml or versions.txt -- something is wrong. PTAL!" ) - return; - } - - // trigger auto-release when - // 1) it is a SNAPSHOT release (auto-generated post regular release) - // 2) there are dependency updates only - // 3) there are no open dependency update PRs in this repo (to avoid multiple releases) - if ( - context.payload.pull_request.body.includes("Fix") || - context.payload.pull_request.body.includes("Build") || - context.payload.pull_request.body.includes("Documentation") || - context.payload.pull_request.body.includes("BREAKING CHANGES") || - context.payload.pull_request.body.includes("Features") - ) { - console.log( "Not auto-releasing since it is not a dependency-update-only release." ); - return; - } - - const promise = github.rest.pulls.list.endpoint({ - owner: context.repo.owner, - repo: context.repo.repo, - state: 'open' - }); - const open_pulls = await github.paginate(promise) - - if ( open_pulls.length > 1 && !context.payload.pull_request.title.includes("SNAPSHOT") ) { - for ( const pull of open_pulls ) { - if ( pull.title.startsWith("deps: update dependency") ) { - console.log( "Not auto-releasing yet since there are dependency update PRs open in this repo." ); - return; - } - } - } - - // approve release PR - await github.rest.pulls.createReview({ - owner: context.repo.owner, - repo: context.repo.repo, - body: 'Rubber stamped release!', - pull_number: context.payload.pull_request.number, - event: 'APPROVE' - }); - - // attach kokoro:force-run and automerge labels - await github.rest.issues.addLabels({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.payload.pull_request.number, - labels: ['kokoro:force-run', 'automerge'] - }); diff --git a/java-common-protos/.github/workflows/ci.yaml b/java-common-protos/.github/workflows/ci.yaml deleted file mode 100644 index e3bb26e377..0000000000 --- a/java-common-protos/.github/workflows/ci.yaml +++ /dev/null @@ -1,89 +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 -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Github action job to test core java library features on -# downstream client libraries before they are released. -on: - push: - branches: - - main - pull_request: -name: ci -jobs: - units: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - java: [8, 11, 17] - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: zulu - java-version: ${{matrix.java}} - - run: java -version - - run: .kokoro/build.sh - env: - JOB_TYPE: test - windows: - runs-on: windows-latest - steps: - - name: Support longpaths - run: git config --system core.longpaths true - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: zulu - java-version: 8 - - run: java -version - - run: .kokoro/build.bat - env: - JOB_TYPE: test - dependencies: - runs-on: ubuntu-latest - strategy: - matrix: - java: [8, 11, 17] - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: zulu - java-version: ${{matrix.java}} - - run: java -version - - run: .kokoro/dependencies.sh - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: zulu - java-version: 11 - - run: java -version - - run: .kokoro/build.sh - env: - JOB_TYPE: lint - clirr: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: zulu - java-version: 8 - - run: java -version - - run: .kokoro/build.sh - env: - JOB_TYPE: clirr diff --git a/java-common-protos/.kokoro/build.bat b/java-common-protos/.kokoro/build.bat deleted file mode 100644 index 067cf4a4c4..0000000000 --- a/java-common-protos/.kokoro/build.bat +++ /dev/null @@ -1,18 +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 -:: -:: http://www.apache.org/licenses/LICENSE-2.0 -:: -:: Unless required by applicable law or agreed to in writing, software -:: distributed under the License is distributed on an "AS IS" BASIS, -:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -:: See the License for the specific language governing permissions and -:: limitations under the License. -:: Github action job to test core java library features on -:: downstream client libraries before they are released. -:: See documentation in type-shell-output.bat - -"C:\Program Files\Git\bin\bash.exe" %~dp0build.sh diff --git a/java-common-protos/.kokoro/build.sh b/java-common-protos/.kokoro/build.sh deleted file mode 100755 index 2740275207..0000000000 --- a/java-common-protos/.kokoro/build.sh +++ /dev/null @@ -1,134 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -## Get the directory of the build script -scriptDir=$(realpath $(dirname "${BASH_SOURCE[0]}")) -## cd to the parent directory, i.e. the root of the git repo -cd ${scriptDir}/.. - -# include common functions -source ${scriptDir}/common.sh - -# Print out Maven & Java version -mvn -version -echo ${JOB_TYPE} - -# attempt to install 3 times with exponential backoff (starting with 10 seconds) -retry_with_backoff 3 10 \ - mvn install -B -V -ntp \ - -DskipTests=true \ - -Dclirr.skip=true \ - -Denforcer.skip=true \ - -Dmaven.javadoc.skip=true \ - -Dgcloud.download.skip=true \ - -T 1C - -# if GOOGLE_APPLICATION_CREDENTIALS is specified as a relative path, prepend Kokoro root directory onto it -if [[ ! -z "${GOOGLE_APPLICATION_CREDENTIALS}" && "${GOOGLE_APPLICATION_CREDENTIALS}" != /* ]]; then - export GOOGLE_APPLICATION_CREDENTIALS=$(realpath ${KOKORO_GFILE_DIR}/${GOOGLE_APPLICATION_CREDENTIALS}) -fi - -RETURN_CODE=0 -set +e - -case ${JOB_TYPE} in -test) - mvn test -B -ntp -Dclirr.skip=true -Denforcer.skip=true - RETURN_CODE=$? - ;; -lint) - mvn com.coveo:fmt-maven-plugin:check -B -ntp - RETURN_CODE=$? - ;; -javadoc) - mvn javadoc:javadoc javadoc:test-javadoc -B -ntp - RETURN_CODE=$? - ;; -integration) - mvn -B ${INTEGRATION_TEST_ARGS} \ - -ntp \ - -Penable-integration-tests \ - -DtrimStackTrace=false \ - -Dclirr.skip=true \ - -Denforcer.skip=true \ - -fae \ - verify - RETURN_CODE=$? - ;; -graalvm) - # Run Unit and Integration Tests with Native Image - mvn -B ${INTEGRATION_TEST_ARGS} -ntp -Pnative -Penable-integration-tests test - RETURN_CODE=$? - ;; -graalvm17) - # Run Unit and Integration Tests with Native Image - mvn -B ${INTEGRATION_TEST_ARGS} -ntp -Pnative -Penable-integration-tests test - RETURN_CODE=$? - ;; -samples) - SAMPLES_DIR=samples - # only run ITs in snapshot/ on presubmit PRs. run ITs in all 3 samples/ subdirectories otherwise. - if [[ ! -z ${KOKORO_GITHUB_PULL_REQUEST_NUMBER} ]] - then - SAMPLES_DIR=samples/snapshot - fi - - if [[ -f ${SAMPLES_DIR}/pom.xml ]] - then - for FILE in ${KOKORO_GFILE_DIR}/secret_manager/*-samples-secrets; do - [[ -f "$FILE" ]] || continue - source "$FILE" - done - - pushd ${SAMPLES_DIR} - mvn -B \ - -ntp \ - -DtrimStackTrace=false \ - -Dclirr.skip=true \ - -Denforcer.skip=true \ - -fae \ - verify - RETURN_CODE=$? - popd - else - echo "no sample pom.xml found - skipping sample tests" - fi - ;; -clirr) - mvn -B -ntp -Denforcer.skip=true clirr:check - RETURN_CODE=$? - ;; -*) - ;; -esac - -if [ "${REPORT_COVERAGE}" == "true" ] -then - bash ${KOKORO_GFILE_DIR}/codecov.sh -fi - -# fix output location of logs -bash .kokoro/coerce_logs.sh - -if [[ "${ENABLE_FLAKYBOT}" == "true" ]] -then - chmod +x ${KOKORO_GFILE_DIR}/linux_amd64/flakybot - ${KOKORO_GFILE_DIR}/linux_amd64/flakybot -repo=googleapis/java-common-protos -fi - -echo "exiting with ${RETURN_CODE}" -exit ${RETURN_CODE} diff --git a/java-common-protos/.kokoro/coerce_logs.sh b/java-common-protos/.kokoro/coerce_logs.sh deleted file mode 100755 index 46edbf7f2f..0000000000 --- a/java-common-protos/.kokoro/coerce_logs.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# This script finds and moves sponge logs so that they can be found by placer -# and are not flagged as flaky by sponge. - -set -eo pipefail - -## Get the directory of the build script -scriptDir=$(realpath $(dirname "${BASH_SOURCE[0]}")) -## cd to the parent directory, i.e. the root of the git repo -cd ${scriptDir}/.. - -job=$(basename ${KOKORO_JOB_NAME}) - -echo "coercing sponge logs..." -for xml in `find . -name *-sponge_log.xml` -do - class=$(basename ${xml} | cut -d- -f2) - dir=$(dirname ${xml})/${job}/${class} - text=$(dirname ${xml})/${class}-sponge_log.txt - mkdir -p ${dir} - mv ${xml} ${dir}/sponge_log.xml - mv ${text} ${dir}/sponge_log.txt -done diff --git a/java-common-protos/.kokoro/common.cfg b/java-common-protos/.kokoro/common.cfg deleted file mode 100644 index 8b2d91d032..0000000000 --- a/java-common-protos/.kokoro/common.cfg +++ /dev/null @@ -1,13 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Download trampoline resources. These will be in ${KOKORO_GFILE_DIR} -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# All builds use the trampoline script to run in docker. -build_file: "java-common-protos/.kokoro/trampoline.sh" - -# Tell the trampoline which build file to use. -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-common-protos/.kokoro/build.sh" -} diff --git a/java-common-protos/.kokoro/common.sh b/java-common-protos/.kokoro/common.sh deleted file mode 100644 index f8f957af11..0000000000 --- a/java-common-protos/.kokoro/common.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -function retry_with_backoff { - attempts_left=$1 - sleep_seconds=$2 - shift 2 - command=$@ - - - # store current flag state - flags=$- - - # allow a failures to continue - set +e - ${command} - exit_code=$? - - # restore "e" flag - if [[ ${flags} =~ e ]] - then set -e - else set +e - fi - - if [[ $exit_code == 0 ]] - then - return 0 - fi - - # failure - if [[ ${attempts_left} > 0 ]] - then - echo "failure (${exit_code}), sleeping ${sleep_seconds}..." - sleep ${sleep_seconds} - new_attempts=$((${attempts_left} - 1)) - new_sleep=$((${sleep_seconds} * 2)) - retry_with_backoff ${new_attempts} ${new_sleep} ${command} - fi - - return $exit_code -} - -## Helper functionss -function now() { date +"%Y-%m-%d %H:%M:%S" | tr -d '\n'; } -function msg() { println "$*" >&2; } -function println() { printf '%s\n' "$(now) $*"; } - -## Helper comment to trigger updated repo dependency release \ No newline at end of file diff --git a/java-common-protos/.kokoro/continuous/common.cfg b/java-common-protos/.kokoro/continuous/common.cfg deleted file mode 100644 index d8e6ffc95f..0000000000 --- a/java-common-protos/.kokoro/continuous/common.cfg +++ /dev/null @@ -1,25 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Build logs will be here -action { - define_artifacts { - regex: "**/*sponge_log.xml" - regex: "**/*sponge_log.txt" - } -} - -# Download trampoline resources. -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# Use the trampoline script to run in docker. -build_file: "java-common-protos/.kokoro/trampoline.sh" - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-common-protos/.kokoro/build.sh" -} - -env_vars: { - key: "JOB_TYPE" - value: "test" -} diff --git a/java-common-protos/.kokoro/continuous/java8.cfg b/java-common-protos/.kokoro/continuous/java8.cfg deleted file mode 100644 index 495cc7bacd..0000000000 --- a/java-common-protos/.kokoro/continuous/java8.cfg +++ /dev/null @@ -1,12 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "REPORT_COVERAGE" - value: "true" -} diff --git a/java-common-protos/.kokoro/dependencies.sh b/java-common-protos/.kokoro/dependencies.sh deleted file mode 100755 index 3371515e99..0000000000 --- a/java-common-protos/.kokoro/dependencies.sh +++ /dev/null @@ -1,110 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail -shopt -s nullglob - -## Get the directory of the build script -scriptDir=$(realpath $(dirname "${BASH_SOURCE[0]}")) -## cd to the parent directory, i.e. the root of the git repo -cd ${scriptDir}/.. - -# include common functions -source ${scriptDir}/common.sh - -# Print out Java -java -version -echo $JOB_TYPE - -function determineMavenOpts() { - local javaVersion=$( - # filter down to the version line, then pull out the version between quotes, - # then trim the version number down to its minimal number (removing any - # update or suffix number). - java -version 2>&1 | grep "version" \ - | sed -E 's/^.*"(.*?)".*$/\1/g' \ - | sed -E 's/^(1\.[0-9]\.0).*$/\1/g' - ) - - if [[ $javaVersion == 17* ]] - then - # MaxPermSize is no longer supported as of jdk 17 - echo -n "-Xmx1024m" - else - echo -n "-Xmx1024m -XX:MaxPermSize=128m" - fi -} - -export MAVEN_OPTS=$(determineMavenOpts) - -# this should run maven enforcer -retry_with_backoff 3 10 \ - mvn install -B -V -ntp \ - -DskipTests=true \ - -Dmaven.javadoc.skip=true \ - -Dclirr.skip=true - -mvn -B dependency:analyze -DfailOnWarning=true - -echo "****************** DEPENDENCY LIST COMPLETENESS CHECK *******************" -## Run dependency list completeness check -function completenessCheck() { - # Output dep list with compile scope generated using the original pom - # Running mvn dependency:list on Java versions that support modules will also include the module of the dependency. - # This is stripped from the output as it is not present in the flattened pom. - # Only dependencies with 'compile' or 'runtime' scope are included from original dependency list. - msg "Generating dependency list using original pom..." - mvn dependency:list -f pom.xml -DexcludeArtifactIds=error_prone_annotations -DincludeScope=runtime -Dsort=true | grep '\[INFO] .*:.*:.*:.*:.*' | sed -e 's/ --.*//' >.org-list.txt - - # Output dep list generated using the flattened pom (only 'compile' and 'runtime' scopes) - msg "Generating dependency list using flattened pom..." - mvn dependency:list -f .flattened-pom.xml -DexcludeArtifactIds=error_prone_annotations -DincludeScope=runtime -Dsort=true | grep '\[INFO] .*:.*:.*:.*:.*' >.new-list.txt - - # Compare two dependency lists - msg "Comparing dependency lists..." - diff .org-list.txt .new-list.txt >.diff.txt - if [[ $? == 0 ]] - then - msg "Success. No diff!" - else - msg "Diff found. See below: " - msg "You can also check .diff.txt file located in $1." - cat .diff.txt - return 1 - fi -} - -# Allow failures to continue running the script -set +e - -error_count=0 -for path in **/.flattened-pom.xml -do - # Check flattened pom in each dir that contains it for completeness - dir=$(dirname "$path") - pushd "$dir" - completenessCheck "$dir" - error_count=$(($error_count + $?)) - popd -done - -if [[ $error_count == 0 ]] -then - msg "All checks passed." - exit 0 -else - msg "Errors found. See log statements above." - exit 1 -fi diff --git a/java-common-protos/.kokoro/nightly/common.cfg b/java-common-protos/.kokoro/nightly/common.cfg deleted file mode 100644 index d8e6ffc95f..0000000000 --- a/java-common-protos/.kokoro/nightly/common.cfg +++ /dev/null @@ -1,25 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Build logs will be here -action { - define_artifacts { - regex: "**/*sponge_log.xml" - regex: "**/*sponge_log.txt" - } -} - -# Download trampoline resources. -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# Use the trampoline script to run in docker. -build_file: "java-common-protos/.kokoro/trampoline.sh" - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-common-protos/.kokoro/build.sh" -} - -env_vars: { - key: "JOB_TYPE" - value: "test" -} diff --git a/java-common-protos/.kokoro/nightly/integration.cfg b/java-common-protos/.kokoro/nightly/integration.cfg deleted file mode 100644 index a2907a257b..0000000000 --- a/java-common-protos/.kokoro/nightly/integration.cfg +++ /dev/null @@ -1,37 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "JOB_TYPE" - value: "integration" -} -# TODO: remove this after we've migrated all tests and scripts -env_vars: { - key: "GCLOUD_PROJECT" - value: "java-docs-samples-testing" -} - -env_vars: { - key: "GOOGLE_CLOUD_PROJECT" - value: "java-docs-samples-testing" -} - -env_vars: { - key: "ENABLE_FLAKYBOT" - value: "true" -} - -env_vars: { - key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "secret_manager/java-it-service-account" -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "java-it-service-account" -} diff --git a/java-common-protos/.kokoro/nightly/java11-integration.cfg b/java-common-protos/.kokoro/nightly/java11-integration.cfg deleted file mode 100644 index 58049cc38f..0000000000 --- a/java-common-protos/.kokoro/nightly/java11-integration.cfg +++ /dev/null @@ -1,37 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/java11014" -} - -env_vars: { - key: "JOB_TYPE" - value: "integration" -} -# TODO: remove this after we've migrated all tests and scripts -env_vars: { - key: "GCLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "GOOGLE_CLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "ENABLE_FLAKYBOT" - value: "true" -} - -env_vars: { - key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "secret_manager/java-it-service-account" -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "java-it-service-account" -} diff --git a/java-common-protos/.kokoro/nightly/java11.cfg b/java-common-protos/.kokoro/nightly/java11.cfg deleted file mode 100644 index 709f2b4c73..0000000000 --- a/java-common-protos/.kokoro/nightly/java11.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java11" -} diff --git a/java-common-protos/.kokoro/nightly/java7.cfg b/java-common-protos/.kokoro/nightly/java7.cfg deleted file mode 100644 index cb24f44eea..0000000000 --- a/java-common-protos/.kokoro/nightly/java7.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java7" -} diff --git a/java-common-protos/.kokoro/nightly/java8-osx.cfg b/java-common-protos/.kokoro/nightly/java8-osx.cfg deleted file mode 100644 index a2205705c0..0000000000 --- a/java-common-protos/.kokoro/nightly/java8-osx.cfg +++ /dev/null @@ -1,3 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -build_file: "java-common-protos/.kokoro/build.sh" diff --git a/java-common-protos/.kokoro/nightly/java8-win.cfg b/java-common-protos/.kokoro/nightly/java8-win.cfg deleted file mode 100644 index 55d4ada741..0000000000 --- a/java-common-protos/.kokoro/nightly/java8-win.cfg +++ /dev/null @@ -1,3 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -build_file: "java-common-protos/.kokoro/build.bat" diff --git a/java-common-protos/.kokoro/nightly/java8.cfg b/java-common-protos/.kokoro/nightly/java8.cfg deleted file mode 100644 index 495cc7bacd..0000000000 --- a/java-common-protos/.kokoro/nightly/java8.cfg +++ /dev/null @@ -1,12 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "REPORT_COVERAGE" - value: "true" -} diff --git a/java-common-protos/.kokoro/nightly/samples.cfg b/java-common-protos/.kokoro/nightly/samples.cfg deleted file mode 100644 index 9761fd8648..0000000000 --- a/java-common-protos/.kokoro/nightly/samples.cfg +++ /dev/null @@ -1,38 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "JOB_TYPE" - value: "samples" -} - -# TODO: remove this after we've migrated all tests and scripts -env_vars: { - key: "GCLOUD_PROJECT" - value: "java-docs-samples-testing" -} - -env_vars: { - key: "GOOGLE_CLOUD_PROJECT" - value: "java-docs-samples-testing" -} - -env_vars: { - key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "secret_manager/java-docs-samples-service-account" -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "java-docs-samples-service-account" -} - -env_vars: { - key: "ENABLE_FLAKYBOT" - value: "true" -} diff --git a/java-common-protos/.kokoro/populate-secrets.sh b/java-common-protos/.kokoro/populate-secrets.sh deleted file mode 100755 index f52514257e..0000000000 --- a/java-common-protos/.kokoro/populate-secrets.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# Copyright 2020 Google LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -function now { date +"%Y-%m-%d %H:%M:%S" | tr -d '\n' ;} -function msg { println "$*" >&2 ;} -function println { printf '%s\n' "$(now) $*" ;} - - -# Populates requested secrets set in SECRET_MANAGER_KEYS from service account: -# kokoro-trampoline@cloud-devrel-kokoro-resources.iam.gserviceaccount.com -SECRET_LOCATION="${KOKORO_GFILE_DIR}/secret_manager" -msg "Creating folder on disk for secrets: ${SECRET_LOCATION}" -mkdir -p ${SECRET_LOCATION} -for key in $(echo ${SECRET_MANAGER_KEYS} | sed "s/,/ /g") -do - msg "Retrieving secret ${key}" - docker run --entrypoint=gcloud \ - --volume=${KOKORO_GFILE_DIR}:${KOKORO_GFILE_DIR} \ - gcr.io/google.com/cloudsdktool/cloud-sdk \ - secrets versions access latest \ - --project cloud-devrel-kokoro-resources \ - --secret ${key} > \ - "${SECRET_LOCATION}/${key}" - if [[ $? == 0 ]]; then - msg "Secret written to ${SECRET_LOCATION}/${key}" - else - msg "Error retrieving secret ${key}" - fi -done diff --git a/java-common-protos/.kokoro/presubmit/clirr.cfg b/java-common-protos/.kokoro/presubmit/clirr.cfg deleted file mode 100644 index ec572442e2..0000000000 --- a/java-common-protos/.kokoro/presubmit/clirr.cfg +++ /dev/null @@ -1,13 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. - -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "JOB_TYPE" - value: "clirr" -} \ No newline at end of file diff --git a/java-common-protos/.kokoro/presubmit/common.cfg b/java-common-protos/.kokoro/presubmit/common.cfg deleted file mode 100644 index 28a4e14b40..0000000000 --- a/java-common-protos/.kokoro/presubmit/common.cfg +++ /dev/null @@ -1,34 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Build logs will be here -action { - define_artifacts { - regex: "**/*sponge_log.xml" - regex: "**/*sponge_log.txt" - } -} - -# Download trampoline resources. -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# Use the trampoline script to run in docker. -build_file: "java-common-protos/.kokoro/trampoline.sh" - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-common-protos/.kokoro/build.sh" -} - -env_vars: { - key: "JOB_TYPE" - value: "test" -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "dpebot_codecov_token" - } - } -} diff --git a/java-common-protos/.kokoro/presubmit/dependencies.cfg b/java-common-protos/.kokoro/presubmit/dependencies.cfg deleted file mode 100644 index 5d388a2c58..0000000000 --- a/java-common-protos/.kokoro/presubmit/dependencies.cfg +++ /dev/null @@ -1,12 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-common-protos/.kokoro/dependencies.sh" -} diff --git a/java-common-protos/.kokoro/presubmit/graalvm-native-17.cfg b/java-common-protos/.kokoro/presubmit/graalvm-native-17.cfg deleted file mode 100644 index a3f7fb9d49..0000000000 --- a/java-common-protos/.kokoro/presubmit/graalvm-native-17.cfg +++ /dev/null @@ -1,33 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/graalvm17" -} - -env_vars: { - key: "JOB_TYPE" - value: "graalvm17" -} - -# TODO: remove this after we've migrated all tests and scripts -env_vars: { - key: "GCLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "GOOGLE_CLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "secret_manager/java-it-service-account" -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "java-it-service-account" -} \ No newline at end of file diff --git a/java-common-protos/.kokoro/presubmit/graalvm-native.cfg b/java-common-protos/.kokoro/presubmit/graalvm-native.cfg deleted file mode 100644 index 4c7225ec92..0000000000 --- a/java-common-protos/.kokoro/presubmit/graalvm-native.cfg +++ /dev/null @@ -1,33 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/graalvm" -} - -env_vars: { - key: "JOB_TYPE" - value: "graalvm" -} - -# TODO: remove this after we've migrated all tests and scripts -env_vars: { - key: "GCLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "GOOGLE_CLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "secret_manager/java-it-service-account" -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "java-it-service-account" -} diff --git a/java-common-protos/.kokoro/presubmit/integration.cfg b/java-common-protos/.kokoro/presubmit/integration.cfg deleted file mode 100644 index dded67a9d5..0000000000 --- a/java-common-protos/.kokoro/presubmit/integration.cfg +++ /dev/null @@ -1,33 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "JOB_TYPE" - value: "integration" -} - -# TODO: remove this after we've migrated all tests and scripts -env_vars: { - key: "GCLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "GOOGLE_CLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "secret_manager/java-it-service-account" -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "java-it-service-account" -} diff --git a/java-common-protos/.kokoro/presubmit/java11.cfg b/java-common-protos/.kokoro/presubmit/java11.cfg deleted file mode 100644 index 709f2b4c73..0000000000 --- a/java-common-protos/.kokoro/presubmit/java11.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java11" -} diff --git a/java-common-protos/.kokoro/presubmit/java7.cfg b/java-common-protos/.kokoro/presubmit/java7.cfg deleted file mode 100644 index cb24f44eea..0000000000 --- a/java-common-protos/.kokoro/presubmit/java7.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java7" -} diff --git a/java-common-protos/.kokoro/presubmit/java8-osx.cfg b/java-common-protos/.kokoro/presubmit/java8-osx.cfg deleted file mode 100644 index a2205705c0..0000000000 --- a/java-common-protos/.kokoro/presubmit/java8-osx.cfg +++ /dev/null @@ -1,3 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -build_file: "java-common-protos/.kokoro/build.sh" diff --git a/java-common-protos/.kokoro/presubmit/java8-win.cfg b/java-common-protos/.kokoro/presubmit/java8-win.cfg deleted file mode 100644 index 55d4ada741..0000000000 --- a/java-common-protos/.kokoro/presubmit/java8-win.cfg +++ /dev/null @@ -1,3 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -build_file: "java-common-protos/.kokoro/build.bat" diff --git a/java-common-protos/.kokoro/presubmit/java8.cfg b/java-common-protos/.kokoro/presubmit/java8.cfg deleted file mode 100644 index 495cc7bacd..0000000000 --- a/java-common-protos/.kokoro/presubmit/java8.cfg +++ /dev/null @@ -1,12 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "REPORT_COVERAGE" - value: "true" -} diff --git a/java-common-protos/.kokoro/presubmit/linkage-monitor.cfg b/java-common-protos/.kokoro/presubmit/linkage-monitor.cfg deleted file mode 100644 index 1ed21488fa..0000000000 --- a/java-common-protos/.kokoro/presubmit/linkage-monitor.cfg +++ /dev/null @@ -1,12 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-common-protos/.kokoro/linkage-monitor.sh" -} \ No newline at end of file diff --git a/java-common-protos/.kokoro/presubmit/lint.cfg b/java-common-protos/.kokoro/presubmit/lint.cfg deleted file mode 100644 index 6d323c8ae7..0000000000 --- a/java-common-protos/.kokoro/presubmit/lint.cfg +++ /dev/null @@ -1,13 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. - -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "JOB_TYPE" - value: "lint" -} \ No newline at end of file diff --git a/java-common-protos/.kokoro/presubmit/samples.cfg b/java-common-protos/.kokoro/presubmit/samples.cfg deleted file mode 100644 index 01e0960047..0000000000 --- a/java-common-protos/.kokoro/presubmit/samples.cfg +++ /dev/null @@ -1,33 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "JOB_TYPE" - value: "samples" -} - -# TODO: remove this after we've migrated all tests and scripts -env_vars: { - key: "GCLOUD_PROJECT" - value: "java-docs-samples-testing" -} - -env_vars: { - key: "GOOGLE_CLOUD_PROJECT" - value: "java-docs-samples-testing" -} - -env_vars: { - key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "secret_manager/java-docs-samples-service-account" -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "java-docs-samples-service-account" -} \ No newline at end of file diff --git a/java-common-protos/.kokoro/readme.sh b/java-common-protos/.kokoro/readme.sh deleted file mode 100755 index b6bd70ccb1..0000000000 --- a/java-common-protos/.kokoro/readme.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -cd ${KOKORO_ARTIFACTS_DIR}/github/java-common-protos - -# Disable buffering, so that the logs stream through. -export PYTHONUNBUFFERED=1 - -# Kokoro exposes this as a file, but the scripts expect just a plain variable. -export GITHUB_TOKEN=$(cat ${KOKORO_KEYSTORE_DIR}/73713_yoshi-automation-github-key) - -# Setup git credentials -echo "https://${GITHUB_TOKEN}:@github.com" >> ~/.git-credentials -git config --global credential.helper 'store --file ~/.git-credentials' - -python3.6 -m pip install git+https://github.com/googleapis/synthtool.git#egg=gcp-synthtool - -set +e -python3.6 -m autosynth.synth \ - --repository=googleapis/java-common-protos \ - --synth-file-name=.github/readme/synth.py \ - --metadata-path=.github/readme/synth.metadata \ - --pr-title="chore: regenerate README" \ - --branch-suffix="readme" - -# autosynth returns 28 to signal there are no changes -RETURN_CODE=$? -if [[ ${RETURN_CODE} -ne 0 && ${RETURN_CODE} -ne 28 ]] -then - exit ${RETURN_CODE} -fi diff --git a/java-common-protos/.kokoro/release/bump_snapshot.cfg b/java-common-protos/.kokoro/release/bump_snapshot.cfg deleted file mode 100644 index 3de8138d9c..0000000000 --- a/java-common-protos/.kokoro/release/bump_snapshot.cfg +++ /dev/null @@ -1,53 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Build logs will be here -action { - define_artifacts { - regex: "**/*sponge_log.xml" - } -} - -# Download trampoline resources. -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# Use the trampoline script to run in docker. -build_file: "java-common-protos/.kokoro/trampoline.sh" - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/node:10-user" -} - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-common-protos/.kokoro/release/bump_snapshot.sh" -} - -# tokens used by release-please to keep an up-to-date release PR. -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "github-magic-proxy-key-release-please" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "github-magic-proxy-token-release-please" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "github-magic-proxy-url-release-please" - } - } -} diff --git a/java-common-protos/.kokoro/release/common.cfg b/java-common-protos/.kokoro/release/common.cfg deleted file mode 100644 index e676934592..0000000000 --- a/java-common-protos/.kokoro/release/common.cfg +++ /dev/null @@ -1,49 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Download trampoline resources. -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# Use the trampoline script to run in docker. -build_file: "java-common-protos/.kokoro/trampoline.sh" - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "maven-gpg-keyring" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "maven-gpg-passphrase" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "maven-gpg-pubkeyring" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "sonatype-credentials" - } - } -} diff --git a/java-common-protos/.kokoro/release/common.sh b/java-common-protos/.kokoro/release/common.sh deleted file mode 100755 index 7f78ee414f..0000000000 --- a/java-common-protos/.kokoro/release/common.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -# Get secrets from keystore and set and environment variables -setup_environment_secrets() { - export GPG_PASSPHRASE=$(cat ${KOKORO_KEYSTORE_DIR}/70247_maven-gpg-passphrase) - export GPG_TTY=$(tty) - export GPG_HOMEDIR=/gpg - mkdir $GPG_HOMEDIR - mv ${KOKORO_KEYSTORE_DIR}/70247_maven-gpg-pubkeyring $GPG_HOMEDIR/pubring.gpg - mv ${KOKORO_KEYSTORE_DIR}/70247_maven-gpg-keyring $GPG_HOMEDIR/secring.gpg - export SONATYPE_USERNAME=$(cat ${KOKORO_KEYSTORE_DIR}/70247_sonatype-credentials | cut -f1 -d'|') - export SONATYPE_PASSWORD=$(cat ${KOKORO_KEYSTORE_DIR}/70247_sonatype-credentials | cut -f2 -d'|') -} - -create_settings_xml_file() { - echo " - - - ossrh - ${SONATYPE_USERNAME} - ${SONATYPE_PASSWORD} - - - sonatype-nexus-staging - ${SONATYPE_USERNAME} - ${SONATYPE_PASSWORD} - - - sonatype-nexus-snapshots - ${SONATYPE_USERNAME} - ${SONATYPE_PASSWORD} - - -" > $1 -} \ No newline at end of file diff --git a/java-common-protos/.kokoro/release/drop.cfg b/java-common-protos/.kokoro/release/drop.cfg deleted file mode 100644 index 1faccd52ec..0000000000 --- a/java-common-protos/.kokoro/release/drop.cfg +++ /dev/null @@ -1,6 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-common-protos/.kokoro/release/drop.sh" -} diff --git a/java-common-protos/.kokoro/release/drop.sh b/java-common-protos/.kokoro/release/drop.sh deleted file mode 100755 index 742ec1a886..0000000000 --- a/java-common-protos/.kokoro/release/drop.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -# STAGING_REPOSITORY_ID must be set -if [ -z "${STAGING_REPOSITORY_ID}" ]; then - echo "Missing STAGING_REPOSITORY_ID environment variable" - exit 1 -fi - -source $(dirname "$0")/common.sh -pushd $(dirname "$0")/../../ - -setup_environment_secrets -create_settings_xml_file "settings.xml" - -mvn nexus-staging:drop -B \ - --settings=settings.xml \ - -DstagingRepositoryId=${STAGING_REPOSITORY_ID} diff --git a/java-common-protos/.kokoro/release/promote.cfg b/java-common-protos/.kokoro/release/promote.cfg deleted file mode 100644 index 240e75aa5d..0000000000 --- a/java-common-protos/.kokoro/release/promote.cfg +++ /dev/null @@ -1,6 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-common-protos/.kokoro/release/promote.sh" -} diff --git a/java-common-protos/.kokoro/release/promote.sh b/java-common-protos/.kokoro/release/promote.sh deleted file mode 100755 index 3cac3d8a97..0000000000 --- a/java-common-protos/.kokoro/release/promote.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -# STAGING_REPOSITORY_ID must be set -if [ -z "${STAGING_REPOSITORY_ID}" ]; then - echo "Missing STAGING_REPOSITORY_ID environment variable" - exit 1 -fi - -source $(dirname "$0")/common.sh - -pushd $(dirname "$0")/../../ - -setup_environment_secrets -create_settings_xml_file "settings.xml" - -mvn nexus-staging:release -B \ - -DperformRelease=true \ - --settings=settings.xml \ - -DstagingRepositoryId=${STAGING_REPOSITORY_ID} diff --git a/java-common-protos/.kokoro/release/publish_javadoc.cfg b/java-common-protos/.kokoro/release/publish_javadoc.cfg deleted file mode 100644 index 295aa525a0..0000000000 --- a/java-common-protos/.kokoro/release/publish_javadoc.cfg +++ /dev/null @@ -1,23 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/doc-templates/" - -env_vars: { - key: "STAGING_BUCKET" - value: "docs-staging" -} - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-common-protos/.kokoro/release/publish_javadoc.sh" -} - - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "docuploader_service_account" - } - } -} diff --git a/java-common-protos/.kokoro/release/publish_javadoc.sh b/java-common-protos/.kokoro/release/publish_javadoc.sh deleted file mode 100755 index 9d4ce4ae34..0000000000 --- a/java-common-protos/.kokoro/release/publish_javadoc.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -if [[ -z "${CREDENTIALS}" ]]; then - CREDENTIALS=${KOKORO_KEYSTORE_DIR}/73713_docuploader_service_account -fi - -if [[ -z "${STAGING_BUCKET}" ]]; then - echo "Need to set STAGING_BUCKET environment variable" - exit 1 -fi - -# work from the git root directory -pushd $(dirname "$0")/../../ - -# install docuploader package -python3 -m pip install --require-hashes -r .kokoro/requirements.txt - -# compile all packages -mvn clean install -B -q -DskipTests=true - -export NAME=proto-google-common-protos -export VERSION=$(grep ${NAME}: versions.txt | cut -d: -f3) - -# build the docs -mvn site -B -q - -pushd target/site/apidocs - -# create metadata -python3 -m docuploader create-metadata \ - --name ${NAME} \ - --version ${VERSION} \ - --language java - -# upload docs -python3 -m docuploader upload . \ - --credentials ${CREDENTIALS} \ - --staging-bucket ${STAGING_BUCKET} diff --git a/java-common-protos/.kokoro/release/publish_javadoc11.cfg b/java-common-protos/.kokoro/release/publish_javadoc11.cfg deleted file mode 100644 index b5372c604a..0000000000 --- a/java-common-protos/.kokoro/release/publish_javadoc11.cfg +++ /dev/null @@ -1,30 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# cloud-rad production -env_vars: { - key: "STAGING_BUCKET_V2" - value: "docs-staging-v2" -} - -# Configure the docker image for kokoro-trampoline -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java11" -} - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-common-protos/.kokoro/release/publish_javadoc11.sh" -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "docuploader_service_account" - } - } -} - -# Downloads docfx doclet resource. This will be in ${KOKORO_GFILE_DIR}/ -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/docfx" diff --git a/java-common-protos/.kokoro/release/publish_javadoc11.sh b/java-common-protos/.kokoro/release/publish_javadoc11.sh deleted file mode 100755 index 69c00bfb17..0000000000 --- a/java-common-protos/.kokoro/release/publish_javadoc11.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash -# Copyright 2021 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -if [[ -z "${CREDENTIALS}" ]]; then - CREDENTIALS=${KOKORO_KEYSTORE_DIR}/73713_docuploader_service_account -fi - -if [[ -z "${STAGING_BUCKET_V2}" ]]; then - echo "Need to set STAGING_BUCKET_V2 environment variable" - exit 1 -fi - -# work from the git root directory -pushd $(dirname "$0")/../../ - -# install docuploader package -python3 -m pip install --require-hashes -r .kokoro/requirements.txt - -# compile all packages -mvn clean install -B -q -DskipTests=true - -export NAME=proto-google-common-protos -export VERSION=$(grep ${NAME}: versions.txt | cut -d: -f3) - -# cloud RAD generation -mvn clean javadoc:aggregate -B -q -P docFX -# include CHANGELOG -cp CHANGELOG.md target/docfx-yml/history.md - -pushd target/docfx-yml - -# create metadata -python3 -m docuploader create-metadata \ - --name ${NAME} \ - --version ${VERSION} \ - --xrefs devsite://java/gax \ - --xrefs devsite://java/google-cloud-core \ - --xrefs devsite://java/api-common \ - --xrefs devsite://java/proto-google-common-protos \ - --xrefs devsite://java/google-api-client \ - --xrefs devsite://java/google-http-client \ - --xrefs devsite://java/protobuf \ - --language java - -# upload yml to production bucket -python3 -m docuploader upload . \ - --credentials ${CREDENTIALS} \ - --staging-bucket ${STAGING_BUCKET_V2} \ - --destination-prefix docfx diff --git a/java-common-protos/.kokoro/release/snapshot.cfg b/java-common-protos/.kokoro/release/snapshot.cfg deleted file mode 100644 index 087a62896e..0000000000 --- a/java-common-protos/.kokoro/release/snapshot.cfg +++ /dev/null @@ -1,6 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-common-protos/.kokoro/release/snapshot.sh" -} \ No newline at end of file diff --git a/java-common-protos/.kokoro/release/snapshot.sh b/java-common-protos/.kokoro/release/snapshot.sh deleted file mode 100755 index 1f55b77024..0000000000 --- a/java-common-protos/.kokoro/release/snapshot.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -source $(dirname "$0")/common.sh -MAVEN_SETTINGS_FILE=$(realpath $(dirname "$0")/../../)/settings.xml -pushd $(dirname "$0")/../../ - -# ensure we're trying to push a snapshot (no-result returns non-zero exit code) -grep SNAPSHOT versions.txt - -setup_environment_secrets -create_settings_xml_file "settings.xml" - -mvn clean deploy -B \ - --settings ${MAVEN_SETTINGS_FILE} \ - -DperformRelease=true \ - -Dgpg.executable=gpg \ - -Dgpg.passphrase=${GPG_PASSPHRASE} \ - -Dgpg.homedir=${GPG_HOMEDIR} diff --git a/java-common-protos/.kokoro/release/stage.cfg b/java-common-protos/.kokoro/release/stage.cfg deleted file mode 100644 index 21a7e3cb58..0000000000 --- a/java-common-protos/.kokoro/release/stage.cfg +++ /dev/null @@ -1,19 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-common-protos/.kokoro/release/stage.sh" -} - -# Need to save the properties file -action { - define_artifacts { - regex: "github/java-common-protos/target/nexus-staging/staging/*.properties" - strip_prefix: "github/java-common-protos" - } -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "releasetool-publish-reporter-app,releasetool-publish-reporter-googleapis-installation,releasetool-publish-reporter-pem" -} diff --git a/java-common-protos/.kokoro/release/stage.sh b/java-common-protos/.kokoro/release/stage.sh deleted file mode 100755 index 61e714d6ba..0000000000 --- a/java-common-protos/.kokoro/release/stage.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -# Start the releasetool reporter -requirementsFile=$(realpath $(dirname "${BASH_SOURCE[0]}")/../requirements.txt) -python3 -m pip install --require-hashes -r $requirementsFile -python3 -m releasetool publish-reporter-script > /tmp/publisher-script; source /tmp/publisher-script - -source $(dirname "$0")/common.sh -source $(dirname "$0")/../common.sh -MAVEN_SETTINGS_FILE=$(realpath $(dirname "$0")/../../)/settings.xml -pushd $(dirname "$0")/../../ - -setup_environment_secrets -create_settings_xml_file "settings.xml" - -# attempt to stage 3 times with exponential backoff (starting with 10 seconds) -retry_with_backoff 3 10 \ - mvn clean deploy -B \ - --settings ${MAVEN_SETTINGS_FILE} \ - -DskipTests=true \ - -Dclirr.skip=true \ - -DperformRelease=true \ - -Dgpg.executable=gpg \ - -Dgpg.passphrase=${GPG_PASSPHRASE} \ - -Dgpg.homedir=${GPG_HOMEDIR} - -if [[ -n "${AUTORELEASE_PR}" ]] -then - mvn nexus-staging:release -B \ - -DperformRelease=true \ - --settings=settings.xml -fi diff --git a/java-common-protos/.kokoro/requirements.in b/java-common-protos/.kokoro/requirements.in deleted file mode 100644 index a5010f77d4..0000000000 --- a/java-common-protos/.kokoro/requirements.in +++ /dev/null @@ -1,34 +0,0 @@ -gcp-docuploader==0.6.3 -google-crc32c==1.3.0 -googleapis-common-protos==1.56.3 -gcp-releasetool==1.9.1 -cryptography==38.0.3 -cachetools==4.2.4 -cffi==1.15.1 -jeepney==0.7.1 -jinja2==3.0.3 -markupsafe==2.0.1 -keyring==23.4.1 -packaging==21.3 -protobuf==3.19.5 -pyjwt==2.4.0 -pyparsing==3.0.9 -pycparser==2.21 -pyperclip==1.8.2 -python-dateutil==2.8.2 -requests==2.27.1 -certifi==2022.12.7 -importlib-metadata==4.8.3 -zipp==3.6.0 -google_api_core==2.8.2 -google-cloud-storage==2.0.0 -google-resumable-media==2.3.3 -google-cloud-core==2.3.1 -typing-extensions==4.1.1 -urllib3==1.26.12 -zipp==3.6.0 -rsa==4.9 -six==1.16.0 -attrs==22.1.0 -google-auth==2.14.1 -idna==3.4 \ No newline at end of file diff --git a/java-common-protos/.kokoro/requirements.txt b/java-common-protos/.kokoro/requirements.txt deleted file mode 100644 index 15c404aa5a..0000000000 --- a/java-common-protos/.kokoro/requirements.txt +++ /dev/null @@ -1,456 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.10 -# To update, run: -# -# pip-compile --generate-hashes requirements.in -# -attrs==22.1.0 \ - --hash=sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6 \ - --hash=sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c - # via - # -r requirements.in - # gcp-releasetool -cachetools==4.2.4 \ - --hash=sha256:89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693 \ - --hash=sha256:92971d3cb7d2a97efff7c7bb1657f21a8f5fb309a37530537c71b1774189f2d1 - # via - # -r requirements.in - # google-auth -certifi==2022.12.7 \ - --hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \ - --hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18 - # via - # -r requirements.in - # requests -cffi==1.15.1 \ - --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \ - --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \ - --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \ - --hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 \ - --hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 \ - --hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 \ - --hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a \ - --hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e \ - --hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc \ - --hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf \ - --hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 \ - --hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 \ - --hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 \ - --hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 \ - --hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c \ - --hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 \ - --hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 \ - --hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca \ - --hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 \ - --hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac \ - --hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd \ - --hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee \ - --hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a \ - --hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 \ - --hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 \ - --hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 \ - --hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 \ - --hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f \ - --hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e \ - --hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 \ - --hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b \ - --hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e \ - --hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e \ - --hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d \ - --hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c \ - --hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 \ - --hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 \ - --hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 \ - --hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 \ - --hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 \ - --hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c \ - --hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 \ - --hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 \ - --hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 \ - --hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d \ - --hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 \ - --hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 \ - --hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 \ - --hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c \ - --hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 \ - --hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 \ - --hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 \ - --hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d \ - --hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d \ - --hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 \ - --hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 \ - --hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 \ - --hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 \ - --hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e \ - --hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 \ - --hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 \ - --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \ - --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \ - --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0 - # via - # -r requirements.in - # cryptography -charset-normalizer==2.0.12 \ - --hash=sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597 \ - --hash=sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df - # via requests -click==8.0.4 \ - --hash=sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1 \ - --hash=sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb - # via - # gcp-docuploader - # gcp-releasetool -colorlog==6.7.0 \ - --hash=sha256:0d33ca236784a1ba3ff9c532d4964126d8a2c44f1f0cb1d2b0728196f512f662 \ - --hash=sha256:bd94bd21c1e13fac7bd3153f4bc3a7dc0eb0974b8bc2fdf1a989e474f6e582e5 - # via gcp-docuploader -cryptography==38.0.3 \ - --hash=sha256:068147f32fa662c81aebab95c74679b401b12b57494872886eb5c1139250ec5d \ - --hash=sha256:06fc3cc7b6f6cca87bd56ec80a580c88f1da5306f505876a71c8cfa7050257dd \ - --hash=sha256:25c1d1f19729fb09d42e06b4bf9895212292cb27bb50229f5aa64d039ab29146 \ - --hash=sha256:402852a0aea73833d982cabb6d0c3bb582c15483d29fb7085ef2c42bfa7e38d7 \ - --hash=sha256:4e269dcd9b102c5a3d72be3c45d8ce20377b8076a43cbed6f660a1afe365e436 \ - --hash=sha256:5419a127426084933076132d317911e3c6eb77568a1ce23c3ac1e12d111e61e0 \ - --hash=sha256:554bec92ee7d1e9d10ded2f7e92a5d70c1f74ba9524947c0ba0c850c7b011828 \ - --hash=sha256:5e89468fbd2fcd733b5899333bc54d0d06c80e04cd23d8c6f3e0542358c6060b \ - --hash=sha256:65535bc550b70bd6271984d9863a37741352b4aad6fb1b3344a54e6950249b55 \ - --hash=sha256:6ab9516b85bebe7aa83f309bacc5f44a61eeb90d0b4ec125d2d003ce41932d36 \ - --hash=sha256:6addc3b6d593cd980989261dc1cce38263c76954d758c3c94de51f1e010c9a50 \ - --hash=sha256:728f2694fa743a996d7784a6194da430f197d5c58e2f4e278612b359f455e4a2 \ - --hash=sha256:785e4056b5a8b28f05a533fab69febf5004458e20dad7e2e13a3120d8ecec75a \ - --hash=sha256:78cf5eefac2b52c10398a42765bfa981ce2372cbc0457e6bf9658f41ec3c41d8 \ - --hash=sha256:7f836217000342d448e1c9a342e9163149e45d5b5eca76a30e84503a5a96cab0 \ - --hash=sha256:8d41a46251bf0634e21fac50ffd643216ccecfaf3701a063257fe0b2be1b6548 \ - --hash=sha256:984fe150f350a3c91e84de405fe49e688aa6092b3525f407a18b9646f6612320 \ - --hash=sha256:9b24bcff7853ed18a63cfb0c2b008936a9554af24af2fb146e16d8e1aed75748 \ - --hash=sha256:b1b35d9d3a65542ed2e9d90115dfd16bbc027b3f07ee3304fc83580f26e43249 \ - --hash=sha256:b1b52c9e5f8aa2b802d48bd693190341fae201ea51c7a167d69fc48b60e8a959 \ - --hash=sha256:bbf203f1a814007ce24bd4d51362991d5cb90ba0c177a9c08825f2cc304d871f \ - --hash=sha256:be243c7e2bfcf6cc4cb350c0d5cdf15ca6383bbcb2a8ef51d3c9411a9d4386f0 \ - --hash=sha256:bfbe6ee19615b07a98b1d2287d6a6073f734735b49ee45b11324d85efc4d5cbd \ - --hash=sha256:c46837ea467ed1efea562bbeb543994c2d1f6e800785bd5a2c98bc096f5cb220 \ - --hash=sha256:dfb4f4dd568de1b6af9f4cda334adf7d72cf5bc052516e1b2608b683375dd95c \ - --hash=sha256:ed7b00096790213e09eb11c97cc6e2b757f15f3d2f85833cd2d3ec3fe37c1722 - # via - # -r requirements.in - # gcp-releasetool - # secretstorage -gcp-docuploader==0.6.3 \ - --hash=sha256:ba8c9d76b3bbac54b0311c503a373b00edc2dc02d6d54ea9507045adb8e870f7 \ - --hash=sha256:c0f5aaa82ce1854a386197e4e359b120ad6d4e57ae2c812fce42219a3288026b - # via -r requirements.in -gcp-releasetool==1.9.1 \ - --hash=sha256:952f4055d5d986b070ae2a71c4410b250000f9cc5a1e26398fcd55a5bbc5a15f \ - --hash=sha256:d0d3c814a97c1a237517e837d8cfa668ced8df4b882452578ecef4a4e79c583b - # via -r requirements.in -google-api-core==2.8.2 \ - --hash=sha256:06f7244c640322b508b125903bb5701bebabce8832f85aba9335ec00b3d02edc \ - --hash=sha256:93c6a91ccac79079ac6bbf8b74ee75db970cc899278b97d53bc012f35908cf50 - # via - # -r requirements.in - # google-cloud-core - # google-cloud-storage -google-auth==2.14.1 \ - --hash=sha256:f5d8701633bebc12e0deea4df8abd8aff31c28b355360597f7f2ee60f2e4d016 - # via - # -r requirements.in - # gcp-releasetool - # google-api-core - # google-cloud-core - # google-cloud-storage -google-cloud-core==2.3.1 \ - --hash=sha256:113ba4f492467d5bd442c8d724c1a25ad7384045c3178369038840ecdd19346c \ - --hash=sha256:34334359cb04187bdc80ddcf613e462dfd7a3aabbc3fe4d118517ab4b9303d53 - # via - # -r requirements.in - # google-cloud-storage -google-cloud-storage==2.0.0 \ - --hash=sha256:a57a15aead0f9dfbd4381f1bfdbe8bf89818a4bd75bab846cafcefb2db846c47 \ - --hash=sha256:ec4be60bb223a3a960f0d01697d849b86d91cad815a84915a32ed3635e93a5e7 - # via - # -r requirements.in - # gcp-docuploader -google-crc32c==1.3.0 \ - --hash=sha256:04e7c220798a72fd0f08242bc8d7a05986b2a08a0573396187fd32c1dcdd58b3 \ - --hash=sha256:05340b60bf05b574159e9bd940152a47d38af3fb43803ffe71f11d704b7696a6 \ - --hash=sha256:12674a4c3b56b706153a358eaa1018c4137a5a04635b92b4652440d3d7386206 \ - --hash=sha256:127f9cc3ac41b6a859bd9dc4321097b1a4f6aa7fdf71b4f9227b9e3ebffb4422 \ - --hash=sha256:13af315c3a0eec8bb8b8d80b8b128cb3fcd17d7e4edafc39647846345a3f003a \ - --hash=sha256:1926fd8de0acb9d15ee757175ce7242e235482a783cd4ec711cc999fc103c24e \ - --hash=sha256:226f2f9b8e128a6ca6a9af9b9e8384f7b53a801907425c9a292553a3a7218ce0 \ - --hash=sha256:276de6273eb074a35bc598f8efbc00c7869c5cf2e29c90748fccc8c898c244df \ - --hash=sha256:318f73f5484b5671f0c7f5f63741ab020a599504ed81d209b5c7129ee4667407 \ - --hash=sha256:3bbce1be3687bbfebe29abdb7631b83e6b25da3f4e1856a1611eb21854b689ea \ - --hash=sha256:42ae4781333e331a1743445931b08ebdad73e188fd554259e772556fc4937c48 \ - --hash=sha256:58be56ae0529c664cc04a9c76e68bb92b091e0194d6e3c50bea7e0f266f73713 \ - --hash=sha256:5da2c81575cc3ccf05d9830f9e8d3c70954819ca9a63828210498c0774fda1a3 \ - --hash=sha256:6311853aa2bba4064d0c28ca54e7b50c4d48e3de04f6770f6c60ebda1e975267 \ - --hash=sha256:650e2917660e696041ab3dcd7abac160b4121cd9a484c08406f24c5964099829 \ - --hash=sha256:6a4db36f9721fdf391646685ecffa404eb986cbe007a3289499020daf72e88a2 \ - --hash=sha256:779cbf1ce375b96111db98fca913c1f5ec11b1d870e529b1dc7354b2681a8c3a \ - --hash=sha256:7f6fe42536d9dcd3e2ffb9d3053f5d05221ae3bbcefbe472bdf2c71c793e3183 \ - --hash=sha256:891f712ce54e0d631370e1f4997b3f182f3368179198efc30d477c75d1f44942 \ - --hash=sha256:95c68a4b9b7828ba0428f8f7e3109c5d476ca44996ed9a5f8aac6269296e2d59 \ - --hash=sha256:96a8918a78d5d64e07c8ea4ed2bc44354e3f93f46a4866a40e8db934e4c0d74b \ - --hash=sha256:9c3cf890c3c0ecfe1510a452a165431b5831e24160c5fcf2071f0f85ca5a47cd \ - --hash=sha256:9f58099ad7affc0754ae42e6d87443299f15d739b0ce03c76f515153a5cda06c \ - --hash=sha256:a0b9e622c3b2b8d0ce32f77eba617ab0d6768b82836391e4f8f9e2074582bf02 \ - --hash=sha256:a7f9cbea4245ee36190f85fe1814e2d7b1e5f2186381b082f5d59f99b7f11328 \ - --hash=sha256:bab4aebd525218bab4ee615786c4581952eadc16b1ff031813a2fd51f0cc7b08 \ - --hash=sha256:c124b8c8779bf2d35d9b721e52d4adb41c9bfbde45e6a3f25f0820caa9aba73f \ - --hash=sha256:c9da0a39b53d2fab3e5467329ed50e951eb91386e9d0d5b12daf593973c3b168 \ - --hash=sha256:ca60076c388728d3b6ac3846842474f4250c91efbfe5afa872d3ffd69dd4b318 \ - --hash=sha256:cb6994fff247987c66a8a4e550ef374671c2b82e3c0d2115e689d21e511a652d \ - --hash=sha256:d1c1d6236feab51200272d79b3d3e0f12cf2cbb12b208c835b175a21efdb0a73 \ - --hash=sha256:dd7760a88a8d3d705ff562aa93f8445ead54f58fd482e4f9e2bafb7e177375d4 \ - --hash=sha256:dda4d8a3bb0b50f540f6ff4b6033f3a74e8bf0bd5320b70fab2c03e512a62812 \ - --hash=sha256:e0f1ff55dde0ebcfbef027edc21f71c205845585fffe30d4ec4979416613e9b3 \ - --hash=sha256:e7a539b9be7b9c00f11ef16b55486141bc2cdb0c54762f84e3c6fc091917436d \ - --hash=sha256:eb0b14523758e37802f27b7f8cd973f5f3d33be7613952c0df904b68c4842f0e \ - --hash=sha256:ed447680ff21c14aaceb6a9f99a5f639f583ccfe4ce1a5e1d48eb41c3d6b3217 \ - --hash=sha256:f52a4ad2568314ee713715b1e2d79ab55fab11e8b304fd1462ff5cccf4264b3e \ - --hash=sha256:fbd60c6aaa07c31d7754edbc2334aef50601b7f1ada67a96eb1eb57c7c72378f \ - --hash=sha256:fc28e0db232c62ca0c3600884933178f0825c99be4474cdd645e378a10588125 \ - --hash=sha256:fe31de3002e7b08eb20823b3735b97c86c5926dd0581c7710a680b418a8709d4 \ - --hash=sha256:fec221a051150eeddfdfcff162e6db92c65ecf46cb0f7bb1bf812a1520ec026b \ - --hash=sha256:ff71073ebf0e42258a42a0b34f2c09ec384977e7f6808999102eedd5b49920e3 - # via - # -r requirements.in - # google-resumable-media -google-resumable-media==2.3.3 \ - --hash=sha256:27c52620bd364d1c8116eaac4ea2afcbfb81ae9139fb3199652fcac1724bfb6c \ - --hash=sha256:5b52774ea7a829a8cdaa8bd2d4c3d4bc660c91b30857ab2668d0eb830f4ea8c5 - # via - # -r requirements.in - # google-cloud-storage -googleapis-common-protos==1.56.3 \ - --hash=sha256:6f1369b58ed6cf3a4b7054a44ebe8d03b29c309257583a2bbdc064cd1e4a1442 \ - --hash=sha256:87955d7b3a73e6e803f2572a33179de23989ebba725e05ea42f24838b792e461 - # via - # -r requirements.in - # google-api-core -idna==3.4 \ - --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ - --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 - # via - # -r requirements.in - # requests -importlib-metadata==4.8.3 \ - --hash=sha256:65a9576a5b2d58ca44d133c42a241905cc45e34d2c06fd5ba2bafa221e5d7b5e \ - --hash=sha256:766abffff765960fcc18003801f7044eb6755ffae4521c8e8ce8e83b9c9b0668 - # via - # -r requirements.in - # keyring -jeepney==0.7.1 \ - --hash=sha256:1b5a0ea5c0e7b166b2f5895b91a08c14de8915afda4407fb5022a195224958ac \ - --hash=sha256:fa9e232dfa0c498bd0b8a3a73b8d8a31978304dcef0515adc859d4e096f96f4f - # via - # -r requirements.in - # keyring - # secretstorage -jinja2==3.0.3 \ - --hash=sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8 \ - --hash=sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7 - # via - # -r requirements.in - # gcp-releasetool -keyring==23.4.1 \ - --hash=sha256:17e49fb0d6883c2b4445359434dba95aad84aabb29bbff044ad0ed7100232eca \ - --hash=sha256:89cbd74d4683ed164c8082fb38619341097741323b3786905c6dac04d6915a55 - # via - # -r requirements.in - # gcp-releasetool -markupsafe==2.0.1 \ - --hash=sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298 \ - --hash=sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64 \ - --hash=sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b \ - --hash=sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194 \ - --hash=sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567 \ - --hash=sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff \ - --hash=sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724 \ - --hash=sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74 \ - --hash=sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646 \ - --hash=sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35 \ - --hash=sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6 \ - --hash=sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a \ - --hash=sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6 \ - --hash=sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad \ - --hash=sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26 \ - --hash=sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38 \ - --hash=sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac \ - --hash=sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7 \ - --hash=sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6 \ - --hash=sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047 \ - --hash=sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75 \ - --hash=sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f \ - --hash=sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b \ - --hash=sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135 \ - --hash=sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8 \ - --hash=sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a \ - --hash=sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a \ - --hash=sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1 \ - --hash=sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9 \ - --hash=sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864 \ - --hash=sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914 \ - --hash=sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee \ - --hash=sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f \ - --hash=sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18 \ - --hash=sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8 \ - --hash=sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2 \ - --hash=sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d \ - --hash=sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b \ - --hash=sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b \ - --hash=sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86 \ - --hash=sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6 \ - --hash=sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f \ - --hash=sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb \ - --hash=sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833 \ - --hash=sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28 \ - --hash=sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e \ - --hash=sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415 \ - --hash=sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902 \ - --hash=sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f \ - --hash=sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d \ - --hash=sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9 \ - --hash=sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d \ - --hash=sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145 \ - --hash=sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066 \ - --hash=sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c \ - --hash=sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1 \ - --hash=sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a \ - --hash=sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207 \ - --hash=sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f \ - --hash=sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53 \ - --hash=sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd \ - --hash=sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134 \ - --hash=sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85 \ - --hash=sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9 \ - --hash=sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5 \ - --hash=sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94 \ - --hash=sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509 \ - --hash=sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51 \ - --hash=sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872 - # via - # -r requirements.in - # jinja2 -packaging==21.3 \ - --hash=sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb \ - --hash=sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522 - # via - # -r requirements.in - # gcp-releasetool -protobuf==3.19.5 \ - --hash=sha256:1867f93b06a183f87696871bb8d1e99ee71dbb69d468ce1f0cc8bf3d30f982f3 \ - --hash=sha256:3c4160b601220627f7e91154e572baf5e161a9c3f445a8242d536ee3d0b7b17c \ - --hash=sha256:4ee2af7051d3b10c8a4fe6fd1a2c69f201fea36aeee7086cf202a692e1b99ee1 \ - --hash=sha256:5266c36cc0af3bb3dbf44f199d225b33da66a9a5c3bdc2b14865ad10eddf0e37 \ - --hash=sha256:5470f892961af464ae6eaf0f3099e2c1190ae8c7f36f174b89491281341f79ca \ - --hash=sha256:66d14b5b90090353efe75c9fb1bf65ef7267383034688d255b500822e37d5c2f \ - --hash=sha256:67efb5d20618020aa9596e17bfc37ca068c28ec0c1507d9507f73c93d46c9855 \ - --hash=sha256:696e6cfab94cc15a14946f2bf72719dced087d437adbd994fff34f38986628bc \ - --hash=sha256:6a02172b9650f819d01fb8e224fc69b0706458fc1ab4f1c669281243c71c1a5e \ - --hash=sha256:6eca9ae238ba615d702387a2ddea635d535d769994a9968c09a4ca920c487ab9 \ - --hash=sha256:950abd6c00e7b51f87ae8b18a0ce4d69fea217f62f171426e77de5061f6d9850 \ - --hash=sha256:9e1d74032f56ff25f417cfe84c8147047732e5059137ca42efad20cbbd25f5e0 \ - --hash=sha256:9e42b1cf2ecd8a1bd161239e693f22035ba99905ae6d7efeac8a0546c7ec1a27 \ - --hash=sha256:9f957ef53e872d58a0afd3bf6d80d48535d28c99b40e75e6634cbc33ea42fd54 \ - --hash=sha256:a89aa0c042e61e11ade320b802d6db4ee5391d8d973e46d3a48172c1597789f8 \ - --hash=sha256:c0f80876a8ff0ae7064084ed094eb86497bd5a3812e6fc96a05318b92301674e \ - --hash=sha256:c44e3282cff74ad18c7e8a0375f407f69ee50c2116364b44492a196293e08b21 \ - --hash=sha256:d249519ba5ecf5dd6b18150c9b6bcde510b273714b696f3923ff8308fc11ae49 \ - --hash=sha256:d3973a2d58aefc7d1230725c2447ce7f86a71cbc094b86a77c6ee1505ac7cdb1 \ - --hash=sha256:dca2284378a5f2a86ffed35c6ac147d14c48b525eefcd1083e5a9ce28dfa8657 \ - --hash=sha256:e63b0b3c42e51c94add62b010366cd4979cb6d5f06158bcae8faac4c294f91e1 \ - --hash=sha256:f2b599a21c9a32e171ec29a2ac54e03297736c578698e11b099d031f79da114b \ - --hash=sha256:f2bde37667b18c2b5280df83bc799204394a5d2d774e4deaf9de0eb741df6833 \ - --hash=sha256:f4f909f4dde413dec435a44b0894956d55bb928ded7d6e3c726556ca4c796e84 \ - --hash=sha256:f976234e20ab2785f54224bcdafa027674e23663b132fa3ca0caa291a6cfbde7 \ - --hash=sha256:f9cebda093c2f6bfed88f1c17cdade09d4d96096421b344026feee236532d4de - # via - # -r requirements.in - # gcp-docuploader - # gcp-releasetool - # google-api-core - # google-cloud-storage - # googleapis-common-protos -pyasn1==0.4.8 \ - --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \ - --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba - # via - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 \ - --hash=sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e \ - --hash=sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74 - # via google-auth -pycparser==2.21 \ - --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ - --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 - # via - # -r requirements.in - # cffi -pyjwt==2.4.0 \ - --hash=sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf \ - --hash=sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba - # via - # -r requirements.in - # gcp-releasetool -pyparsing==3.0.9 \ - --hash=sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb \ - --hash=sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc - # via - # -r requirements.in - # packaging -pyperclip==1.8.2 \ - --hash=sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57 - # via - # -r requirements.in - # gcp-releasetool -python-dateutil==2.8.2 \ - --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ - --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 - # via - # -r requirements.in - # gcp-releasetool -requests==2.27.1 \ - --hash=sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61 \ - --hash=sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d - # via - # -r requirements.in - # gcp-releasetool - # google-api-core - # google-cloud-storage -rsa==4.9 \ - --hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \ - --hash=sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21 - # via - # -r requirements.in - # google-auth -secretstorage==3.3.3 \ - --hash=sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77 \ - --hash=sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99 - # via keyring -six==1.16.0 \ - --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ - --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 - # via - # -r requirements.in - # gcp-docuploader - # google-auth - # python-dateutil -typing-extensions==4.1.1 \ - --hash=sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42 \ - --hash=sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2 - # via -r requirements.in -urllib3==1.26.12 \ - --hash=sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e \ - --hash=sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997 - # via - # -r requirements.in - # requests -zipp==3.6.0 \ - --hash=sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832 \ - --hash=sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc - # via - # -r requirements.in - # importlib-metadata diff --git a/java-common-protos/.kokoro/trampoline.sh b/java-common-protos/.kokoro/trampoline.sh deleted file mode 100644 index 8b69b793c9..0000000000 --- a/java-common-protos/.kokoro/trampoline.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -set -eo pipefail -# Always run the cleanup script, regardless of the success of bouncing into -# the container. -function cleanup() { - chmod +x ${KOKORO_GFILE_DIR}/trampoline_cleanup.sh - ${KOKORO_GFILE_DIR}/trampoline_cleanup.sh - echo "cleanup"; -} -trap cleanup EXIT - -$(dirname $0)/populate-secrets.sh # Secret Manager secrets. -python3 "${KOKORO_GFILE_DIR}/trampoline_v1.py" diff --git a/java-iam/.github/CODEOWNERS b/java-iam/.github/CODEOWNERS deleted file mode 100644 index db2d8ad174..0000000000 --- a/java-iam/.github/CODEOWNERS +++ /dev/null @@ -1,13 +0,0 @@ -# Code owners file. -# This file controls who is tagged for review for any given pull request. - -# For syntax help see: -# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#codeowners-syntax - -* @googleapis/yoshi-java - -# The java-samples-reviewers team is the default owner for samples changes -samples/**/*.java @googleapis/java-samples-reviewers - -# Generated snippets should not be owned by samples reviewers -samples/snippets/generated/ @googleapis/yoshi-java diff --git a/java-iam/.github/ISSUE_TEMPLATE/bug_report.md b/java-iam/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index fad37bbdd8..0000000000 --- a/java-iam/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve - ---- - -Thanks for stopping by to let us know something could be better! - -**PLEASE READ**: If you have a support contract with Google, please create an issue in the [support console](https://cloud.google.com/support/) instead of filing on GitHub. This will ensure a timely response. - -Please run down the following list and make sure you've tried the usual "quick fixes": - - - Search the issues already opened: https://github.com/googleapis/java-iam/issues - - Check for answers on StackOverflow: http://stackoverflow.com/questions/tagged/google-cloud-platform - -If you are still having issues, please include as much information as possible: - -#### Environment details - -1. Specify the API at the beginning of the title. For example, "BigQuery: ..."). - General, Core, and Other are also allowed as types -2. OS type and version: -3. Java version: -4. version(s): - -#### Steps to reproduce - - 1. ? - 2. ? - -#### Code example - -```java -// example -``` - -#### Stack trace -``` -Any relevant stacktrace here. -``` - -#### External references such as API reference guides - -- ? - -#### Any additional information below - - -Following these steps guarantees the quickest resolution possible. - -Thanks! diff --git a/java-iam/.github/ISSUE_TEMPLATE/feature_request.md b/java-iam/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 754e30c68a..0000000000 --- a/java-iam/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this library - ---- - -Thanks for stopping by to let us know something could be better! - -**PLEASE READ**: If you have a support contract with Google, please create an issue in the [support console](https://cloud.google.com/support/) instead of filing on GitHub. This will ensure a timely response. - -**Is your feature request related to a problem? Please describe.** -What the problem is. Example: I'm always frustrated when [...] - -**Describe the solution you'd like** -What you want to happen. - -**Describe alternatives you've considered** -Any alternative solutions or features you've considered. - -**Additional context** -Any other context or screenshots about the feature request. diff --git a/java-iam/.github/PULL_REQUEST_TEMPLATE.md b/java-iam/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index c9e354de0d..0000000000 --- a/java-iam/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,10 +0,0 @@ -Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly: -- [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/java-iam/issues/new/choose) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea -- [ ] Ensure the tests and linter pass -- [ ] Code coverage does not decrease (if any source code was changed) -- [ ] Appropriate docs were updated (if necessary) - -Fixes # ☕️ - -If you write sample code, please follow the [samples format]( -https://github.com/GoogleCloudPlatform/java-docs-samples/blob/main/SAMPLE_FORMAT.md). diff --git a/java-iam/.github/blunderbuss.yml b/java-iam/.github/blunderbuss.yml deleted file mode 100644 index 2176b05432..0000000000 --- a/java-iam/.github/blunderbuss.yml +++ /dev/null @@ -1,7 +0,0 @@ -# Configuration for the Blunderbuss GitHub app. For more info see -# https://github.com/googleapis/repo-automation-bots/tree/main/packages/blunderbuss -assign_prs_by: -- labels: - - samples - to: - - googleapis/java-samples-reviewers \ No newline at end of file diff --git a/java-iam/.github/generated-files-bot.yml b/java-iam/.github/generated-files-bot.yml deleted file mode 100644 index c644a24e11..0000000000 --- a/java-iam/.github/generated-files-bot.yml +++ /dev/null @@ -1,12 +0,0 @@ -externalManifests: -- type: json - file: 'synth.metadata' - jsonpath: '$.generatedFiles[*]' -- type: json - file: '.github/readme/synth.metadata/synth.metadata' - jsonpath: '$.generatedFiles[*]' -ignoreAuthors: -- 'renovate-bot' -- 'yoshi-automation' -- 'release-please[bot]' -- 'gcf-owl-bot[bot]' diff --git a/java-iam/.github/release-please.yml b/java-iam/.github/release-please.yml deleted file mode 100644 index 7bf5807658..0000000000 --- a/java-iam/.github/release-please.yml +++ /dev/null @@ -1,8 +0,0 @@ -bumpMinorPreMajor: true -handleGHRelease: true -releaseType: java-yoshi -branches: - - bumpMinorPreMajor: true - handleGHRelease: true - releaseType: java-yoshi - branch: java7 diff --git a/java-iam/.github/release-trigger.yml b/java-iam/.github/release-trigger.yml deleted file mode 100644 index d4ca94189e..0000000000 --- a/java-iam/.github/release-trigger.yml +++ /dev/null @@ -1 +0,0 @@ -enabled: true diff --git a/java-iam/.github/snippet-bot.yml b/java-iam/.github/snippet-bot.yml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/java-iam/.github/sync-repo-settings.yaml b/java-iam/.github/sync-repo-settings.yaml deleted file mode 100644 index dd5626f32d..0000000000 --- a/java-iam/.github/sync-repo-settings.yaml +++ /dev/null @@ -1,40 +0,0 @@ -rebaseMergeAllowed: false -squashMergeAllowed: true -mergeCommitAllowed: false -branchProtectionRules: - - pattern: main - isAdminEnforced: true - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: false - requiredStatusCheckContexts: - - dependencies (8) - - dependencies (11) - - lint - - units (8) - - units (11) - - 'Kokoro - Test: Integration' - - cla/google - - OwlBot Post Processor - - pattern: java7 - isAdminEnforced: true - requiredApprovingReviewCount: 1 - requiresCodeOwnerReviews: true - requiresStrictStatusChecks: false - requiredStatusCheckContexts: - - dependencies (8) - - dependencies (11) - - lint - - units (7) - - units (8) - - units (11) - - 'Kokoro - Test: Integration' - - cla/google - - OwlBot Post Processor -permissionRules: - - team: yoshi-admins - permission: admin - - team: yoshi-java-admins - permission: admin - - team: yoshi-java - permission: push diff --git a/java-iam/.github/trusted-contribution.yml b/java-iam/.github/trusted-contribution.yml deleted file mode 100644 index a0ba1f7d90..0000000000 --- a/java-iam/.github/trusted-contribution.yml +++ /dev/null @@ -1,3 +0,0 @@ -trustedContributors: -- renovate-bot -- gcf-owl-bot[bot] diff --git a/java-iam/.github/workflows/approve-readme.yaml b/java-iam/.github/workflows/approve-readme.yaml deleted file mode 100644 index f5fc7d5169..0000000000 --- a/java-iam/.github/workflows/approve-readme.yaml +++ /dev/null @@ -1,69 +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 -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Github action job to test core java library features on -# downstream client libraries before they are released. -on: - pull_request: -name: auto-merge-readme -jobs: - approve: - runs-on: ubuntu-latest - if: github.repository_owner == 'googleapis' && github.head_ref == 'autosynth-readme' - steps: - - uses: actions/github-script@v6 - with: - github-token: ${{secrets.YOSHI_APPROVER_TOKEN}} - script: | - // only approve PRs from yoshi-automation - if (context.payload.pull_request.user.login !== "yoshi-automation") { - return; - } - - // only approve PRs like "chore: release " - if (!context.payload.pull_request.title === "chore: regenerate README") { - return; - } - - // only approve PRs with README.md and synth.metadata changes - const files = new Set( - ( - await github.paginate( - github.pulls.listFiles.endpoint({ - owner: context.repo.owner, - repo: context.repo.repo, - pull_number: context.payload.pull_request.number, - }) - ) - ).map(file => file.filename) - ); - if (files.size != 2 || !files.has("README.md") || !files.has(".github/readme/synth.metadata/synth.metadata")) { - return; - } - - // approve README regeneration PR - await github.pulls.createReview({ - owner: context.repo.owner, - repo: context.repo.repo, - body: 'Rubber stamped PR!', - pull_number: context.payload.pull_request.number, - event: 'APPROVE' - }); - - // attach automerge label - await github.issues.addLabels({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.payload.pull_request.number, - labels: ['automerge'] - }); diff --git a/java-iam/.github/workflows/auto-release.yaml b/java-iam/.github/workflows/auto-release.yaml deleted file mode 100644 index 7a106d007e..0000000000 --- a/java-iam/.github/workflows/auto-release.yaml +++ /dev/null @@ -1,103 +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 -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Github action job to test core java library features on -# downstream client libraries before they are released. -on: - pull_request: -name: auto-release -jobs: - approve: - runs-on: ubuntu-latest - if: contains(github.head_ref, 'release-please') - steps: - - uses: actions/github-script@v6 - with: - github-token: ${{secrets.YOSHI_APPROVER_TOKEN}} - debug: true - script: | - // only approve PRs from release-please[bot] - if (context.payload.pull_request.user.login !== "release-please[bot]") { - return; - } - - // only approve PRs like "chore(main): release " - if ( !context.payload.pull_request.title.startsWith("chore(main): release") ) { - return; - } - - // only approve PRs with pom.xml and versions.txt changes - const filesPromise = github.rest.pulls.listFiles.endpoint({ - owner: context.repo.owner, - repo: context.repo.repo, - pull_number: context.payload.pull_request.number, - }); - const changed_files = await github.paginate(filesPromise) - - if ( changed_files.length < 1 ) { - console.log( "Not proceeding since PR is empty!" ) - return; - } - - if ( !changed_files.some(v => v.filename.includes("pom")) || !changed_files.some(v => v.filename.includes("versions.txt")) ) { - console.log( "PR file changes do not have pom.xml or versions.txt -- something is wrong. PTAL!" ) - return; - } - - // trigger auto-release when - // 1) it is a SNAPSHOT release (auto-generated post regular release) - // 2) there are dependency updates only - // 3) there are no open dependency update PRs in this repo (to avoid multiple releases) - if ( - context.payload.pull_request.body.includes("Fix") || - context.payload.pull_request.body.includes("Build") || - context.payload.pull_request.body.includes("Documentation") || - context.payload.pull_request.body.includes("BREAKING CHANGES") || - context.payload.pull_request.body.includes("Features") - ) { - console.log( "Not auto-releasing since it is not a dependency-update-only release." ); - return; - } - - const promise = github.rest.pulls.list.endpoint({ - owner: context.repo.owner, - repo: context.repo.repo, - state: 'open' - }); - const open_pulls = await github.paginate(promise) - - if ( open_pulls.length > 1 && !context.payload.pull_request.title.includes("SNAPSHOT") ) { - for ( const pull of open_pulls ) { - if ( pull.title.startsWith("deps: update dependency") ) { - console.log( "Not auto-releasing yet since there are dependency update PRs open in this repo." ); - return; - } - } - } - - // approve release PR - await github.rest.pulls.createReview({ - owner: context.repo.owner, - repo: context.repo.repo, - body: 'Rubber stamped release!', - pull_number: context.payload.pull_request.number, - event: 'APPROVE' - }); - - // attach kokoro:force-run and automerge labels - await github.rest.issues.addLabels({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.payload.pull_request.number, - labels: ['kokoro:force-run', 'automerge'] - }); diff --git a/java-iam/.github/workflows/ci.yaml b/java-iam/.github/workflows/ci.yaml deleted file mode 100644 index e3bb26e377..0000000000 --- a/java-iam/.github/workflows/ci.yaml +++ /dev/null @@ -1,89 +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 -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# Github action job to test core java library features on -# downstream client libraries before they are released. -on: - push: - branches: - - main - pull_request: -name: ci -jobs: - units: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - java: [8, 11, 17] - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: zulu - java-version: ${{matrix.java}} - - run: java -version - - run: .kokoro/build.sh - env: - JOB_TYPE: test - windows: - runs-on: windows-latest - steps: - - name: Support longpaths - run: git config --system core.longpaths true - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: zulu - java-version: 8 - - run: java -version - - run: .kokoro/build.bat - env: - JOB_TYPE: test - dependencies: - runs-on: ubuntu-latest - strategy: - matrix: - java: [8, 11, 17] - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: zulu - java-version: ${{matrix.java}} - - run: java -version - - run: .kokoro/dependencies.sh - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: zulu - java-version: 11 - - run: java -version - - run: .kokoro/build.sh - env: - JOB_TYPE: lint - clirr: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 - with: - distribution: zulu - java-version: 8 - - run: java -version - - run: .kokoro/build.sh - env: - JOB_TYPE: clirr diff --git a/java-iam/.kokoro/build.bat b/java-iam/.kokoro/build.bat deleted file mode 100644 index 067cf4a4c4..0000000000 --- a/java-iam/.kokoro/build.bat +++ /dev/null @@ -1,18 +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 -:: -:: http://www.apache.org/licenses/LICENSE-2.0 -:: -:: Unless required by applicable law or agreed to in writing, software -:: distributed under the License is distributed on an "AS IS" BASIS, -:: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -:: See the License for the specific language governing permissions and -:: limitations under the License. -:: Github action job to test core java library features on -:: downstream client libraries before they are released. -:: See documentation in type-shell-output.bat - -"C:\Program Files\Git\bin\bash.exe" %~dp0build.sh diff --git a/java-iam/.kokoro/build.sh b/java-iam/.kokoro/build.sh deleted file mode 100755 index 80348f95ca..0000000000 --- a/java-iam/.kokoro/build.sh +++ /dev/null @@ -1,134 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -## Get the directory of the build script -scriptDir=$(realpath $(dirname "${BASH_SOURCE[0]}")) -## cd to the parent directory, i.e. the root of the git repo -cd ${scriptDir}/.. - -# include common functions -source ${scriptDir}/common.sh - -# Print out Maven & Java version -mvn -version -echo ${JOB_TYPE} - -# attempt to install 3 times with exponential backoff (starting with 10 seconds) -retry_with_backoff 3 10 \ - mvn install -B -V -ntp \ - -DskipTests=true \ - -Dclirr.skip=true \ - -Denforcer.skip=true \ - -Dmaven.javadoc.skip=true \ - -Dgcloud.download.skip=true \ - -T 1C - -# if GOOGLE_APPLICATION_CREDENTIALS is specified as a relative path, prepend Kokoro root directory onto it -if [[ ! -z "${GOOGLE_APPLICATION_CREDENTIALS}" && "${GOOGLE_APPLICATION_CREDENTIALS}" != /* ]]; then - export GOOGLE_APPLICATION_CREDENTIALS=$(realpath ${KOKORO_GFILE_DIR}/${GOOGLE_APPLICATION_CREDENTIALS}) -fi - -RETURN_CODE=0 -set +e - -case ${JOB_TYPE} in -test) - mvn test -B -ntp -Dclirr.skip=true -Denforcer.skip=true - RETURN_CODE=$? - ;; -lint) - mvn com.coveo:fmt-maven-plugin:check -B -ntp - RETURN_CODE=$? - ;; -javadoc) - mvn javadoc:javadoc javadoc:test-javadoc -B -ntp - RETURN_CODE=$? - ;; -integration) - mvn -B ${INTEGRATION_TEST_ARGS} \ - -ntp \ - -Penable-integration-tests \ - -DtrimStackTrace=false \ - -Dclirr.skip=true \ - -Denforcer.skip=true \ - -fae \ - verify - RETURN_CODE=$? - ;; -graalvm) - # Run Unit and Integration Tests with Native Image - mvn -B ${INTEGRATION_TEST_ARGS} -ntp -Pnative -Penable-integration-tests test - RETURN_CODE=$? - ;; -graalvm17) - # Run Unit and Integration Tests with Native Image - mvn -B ${INTEGRATION_TEST_ARGS} -ntp -Pnative -Penable-integration-tests test - RETURN_CODE=$? - ;; -samples) - SAMPLES_DIR=samples - # only run ITs in snapshot/ on presubmit PRs. run ITs in all 3 samples/ subdirectories otherwise. - if [[ ! -z ${KOKORO_GITHUB_PULL_REQUEST_NUMBER} ]] - then - SAMPLES_DIR=samples/snapshot - fi - - if [[ -f ${SAMPLES_DIR}/pom.xml ]] - then - for FILE in ${KOKORO_GFILE_DIR}/secret_manager/*-samples-secrets; do - [[ -f "$FILE" ]] || continue - source "$FILE" - done - - pushd ${SAMPLES_DIR} - mvn -B \ - -ntp \ - -DtrimStackTrace=false \ - -Dclirr.skip=true \ - -Denforcer.skip=true \ - -fae \ - verify - RETURN_CODE=$? - popd - else - echo "no sample pom.xml found - skipping sample tests" - fi - ;; -clirr) - mvn -B -ntp -Denforcer.skip=true clirr:check - RETURN_CODE=$? - ;; -*) - ;; -esac - -if [ "${REPORT_COVERAGE}" == "true" ] -then - bash ${KOKORO_GFILE_DIR}/codecov.sh -fi - -# fix output location of logs -bash .kokoro/coerce_logs.sh - -if [[ "${ENABLE_FLAKYBOT}" == "true" ]] -then - chmod +x ${KOKORO_GFILE_DIR}/linux_amd64/flakybot - ${KOKORO_GFILE_DIR}/linux_amd64/flakybot -repo=googleapis/java-iam -fi - -echo "exiting with ${RETURN_CODE}" -exit ${RETURN_CODE} diff --git a/java-iam/.kokoro/coerce_logs.sh b/java-iam/.kokoro/coerce_logs.sh deleted file mode 100755 index 46edbf7f2f..0000000000 --- a/java-iam/.kokoro/coerce_logs.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# This script finds and moves sponge logs so that they can be found by placer -# and are not flagged as flaky by sponge. - -set -eo pipefail - -## Get the directory of the build script -scriptDir=$(realpath $(dirname "${BASH_SOURCE[0]}")) -## cd to the parent directory, i.e. the root of the git repo -cd ${scriptDir}/.. - -job=$(basename ${KOKORO_JOB_NAME}) - -echo "coercing sponge logs..." -for xml in `find . -name *-sponge_log.xml` -do - class=$(basename ${xml} | cut -d- -f2) - dir=$(dirname ${xml})/${job}/${class} - text=$(dirname ${xml})/${class}-sponge_log.txt - mkdir -p ${dir} - mv ${xml} ${dir}/sponge_log.xml - mv ${text} ${dir}/sponge_log.txt -done diff --git a/java-iam/.kokoro/common.cfg b/java-iam/.kokoro/common.cfg deleted file mode 100644 index 349dd92a78..0000000000 --- a/java-iam/.kokoro/common.cfg +++ /dev/null @@ -1,13 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Download trampoline resources. These will be in ${KOKORO_GFILE_DIR} -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# All builds use the trampoline script to run in docker. -build_file: "java-iam/.kokoro/trampoline.sh" - -# Tell the trampoline which build file to use. -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/build.sh" -} diff --git a/java-iam/.kokoro/common.sh b/java-iam/.kokoro/common.sh deleted file mode 100644 index f8f957af11..0000000000 --- a/java-iam/.kokoro/common.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -function retry_with_backoff { - attempts_left=$1 - sleep_seconds=$2 - shift 2 - command=$@ - - - # store current flag state - flags=$- - - # allow a failures to continue - set +e - ${command} - exit_code=$? - - # restore "e" flag - if [[ ${flags} =~ e ]] - then set -e - else set +e - fi - - if [[ $exit_code == 0 ]] - then - return 0 - fi - - # failure - if [[ ${attempts_left} > 0 ]] - then - echo "failure (${exit_code}), sleeping ${sleep_seconds}..." - sleep ${sleep_seconds} - new_attempts=$((${attempts_left} - 1)) - new_sleep=$((${sleep_seconds} * 2)) - retry_with_backoff ${new_attempts} ${new_sleep} ${command} - fi - - return $exit_code -} - -## Helper functionss -function now() { date +"%Y-%m-%d %H:%M:%S" | tr -d '\n'; } -function msg() { println "$*" >&2; } -function println() { printf '%s\n' "$(now) $*"; } - -## Helper comment to trigger updated repo dependency release \ No newline at end of file diff --git a/java-iam/.kokoro/continuous/common.cfg b/java-iam/.kokoro/continuous/common.cfg deleted file mode 100644 index 90c639ac13..0000000000 --- a/java-iam/.kokoro/continuous/common.cfg +++ /dev/null @@ -1,25 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Build logs will be here -action { - define_artifacts { - regex: "**/*sponge_log.xml" - regex: "**/*sponge_log.txt" - } -} - -# Download trampoline resources. -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# Use the trampoline script to run in docker. -build_file: "java-iam/.kokoro/trampoline.sh" - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/build.sh" -} - -env_vars: { - key: "JOB_TYPE" - value: "test" -} diff --git a/java-iam/.kokoro/continuous/dependencies.cfg b/java-iam/.kokoro/continuous/dependencies.cfg deleted file mode 100644 index fda7101a64..0000000000 --- a/java-iam/.kokoro/continuous/dependencies.cfg +++ /dev/null @@ -1,12 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/dependencies.sh" -} diff --git a/java-iam/.kokoro/continuous/integration.cfg b/java-iam/.kokoro/continuous/integration.cfg deleted file mode 100644 index 3b017fc80f..0000000000 --- a/java-iam/.kokoro/continuous/integration.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} diff --git a/java-iam/.kokoro/continuous/java11.cfg b/java-iam/.kokoro/continuous/java11.cfg deleted file mode 100644 index 709f2b4c73..0000000000 --- a/java-iam/.kokoro/continuous/java11.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java11" -} diff --git a/java-iam/.kokoro/continuous/java7.cfg b/java-iam/.kokoro/continuous/java7.cfg deleted file mode 100644 index cb24f44eea..0000000000 --- a/java-iam/.kokoro/continuous/java7.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java7" -} diff --git a/java-iam/.kokoro/continuous/java8-osx.cfg b/java-iam/.kokoro/continuous/java8-osx.cfg deleted file mode 100644 index 1affbbe4ad..0000000000 --- a/java-iam/.kokoro/continuous/java8-osx.cfg +++ /dev/null @@ -1,3 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -build_file: "java-iam/.kokoro/build.sh" diff --git a/java-iam/.kokoro/continuous/java8-win.cfg b/java-iam/.kokoro/continuous/java8-win.cfg deleted file mode 100644 index 4c8e051ae0..0000000000 --- a/java-iam/.kokoro/continuous/java8-win.cfg +++ /dev/null @@ -1,3 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -build_file: "java-iam/.kokoro/build.bat" diff --git a/java-iam/.kokoro/continuous/java8.cfg b/java-iam/.kokoro/continuous/java8.cfg deleted file mode 100644 index 495cc7bacd..0000000000 --- a/java-iam/.kokoro/continuous/java8.cfg +++ /dev/null @@ -1,12 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "REPORT_COVERAGE" - value: "true" -} diff --git a/java-iam/.kokoro/continuous/lint.cfg b/java-iam/.kokoro/continuous/lint.cfg deleted file mode 100644 index 6d323c8ae7..0000000000 --- a/java-iam/.kokoro/continuous/lint.cfg +++ /dev/null @@ -1,13 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. - -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "JOB_TYPE" - value: "lint" -} \ No newline at end of file diff --git a/java-iam/.kokoro/continuous/propose_release.cfg b/java-iam/.kokoro/continuous/propose_release.cfg deleted file mode 100644 index 4df19cc2f9..0000000000 --- a/java-iam/.kokoro/continuous/propose_release.cfg +++ /dev/null @@ -1,53 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Build logs will be here -action { - define_artifacts { - regex: "**/*sponge_log.xml" - } -} - -# Download trampoline resources. -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# Use the trampoline script to run in docker. -build_file: "java-iam/.kokoro/trampoline.sh" - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/node:10-user" -} - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/continuous/propose_release.sh" -} - -# tokens used by release-please to keep an up-to-date release PR. -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "github-magic-proxy-key-release-please" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "github-magic-proxy-token-release-please" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "github-magic-proxy-url-release-please" - } - } -} diff --git a/java-iam/.kokoro/continuous/samples.cfg b/java-iam/.kokoro/continuous/samples.cfg deleted file mode 100644 index fa7b493d0b..0000000000 --- a/java-iam/.kokoro/continuous/samples.cfg +++ /dev/null @@ -1,31 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "JOB_TYPE" - value: "samples" -} - -env_vars: { - key: "GCLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "keystore/73713_java_it_service_account" -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "java_it_service_account" - } - } -} diff --git a/java-iam/.kokoro/dependencies.sh b/java-iam/.kokoro/dependencies.sh deleted file mode 100755 index bd8960246f..0000000000 --- a/java-iam/.kokoro/dependencies.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail -shopt -s nullglob - -## Get the directory of the build script -scriptDir=$(realpath $(dirname "${BASH_SOURCE[0]}")) -## cd to the parent directory, i.e. the root of the git repo -cd ${scriptDir}/.. - -# include common functions -source ${scriptDir}/common.sh - -# Print out Java -java -version -echo $JOB_TYPE - -function determineMavenOpts() { - local javaVersion=$( - # filter down to the version line, then pull out the version between quotes, - # then trim the version number down to its minimal number (removing any - # update or suffix number). - java -version 2>&1 | grep "version" \ - | sed -E 's/^.*"(.*?)".*$/\1/g' \ - | sed -E 's/^(1\.[0-9]\.0).*$/\1/g' - ) - - if [[ $javaVersion == 17* ]] - then - # MaxPermSize is no longer supported as of jdk 17 - echo -n "-Xmx1024m" - else - echo -n "-Xmx1024m -XX:MaxPermSize=128m" - fi -} - -export MAVEN_OPTS=$(determineMavenOpts) - -# this should run maven enforcer -retry_with_backoff 3 10 \ - mvn install -B -V -ntp \ - -DskipTests=true \ - -Dmaven.javadoc.skip=true \ - -Dclirr.skip=true - -mvn -B dependency:analyze -DfailOnWarning=true diff --git a/java-iam/.kokoro/nightly/common.cfg b/java-iam/.kokoro/nightly/common.cfg deleted file mode 100644 index 90c639ac13..0000000000 --- a/java-iam/.kokoro/nightly/common.cfg +++ /dev/null @@ -1,25 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Build logs will be here -action { - define_artifacts { - regex: "**/*sponge_log.xml" - regex: "**/*sponge_log.txt" - } -} - -# Download trampoline resources. -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# Use the trampoline script to run in docker. -build_file: "java-iam/.kokoro/trampoline.sh" - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/build.sh" -} - -env_vars: { - key: "JOB_TYPE" - value: "test" -} diff --git a/java-iam/.kokoro/nightly/dependencies.cfg b/java-iam/.kokoro/nightly/dependencies.cfg deleted file mode 100644 index fda7101a64..0000000000 --- a/java-iam/.kokoro/nightly/dependencies.cfg +++ /dev/null @@ -1,12 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/dependencies.sh" -} diff --git a/java-iam/.kokoro/nightly/integration.cfg b/java-iam/.kokoro/nightly/integration.cfg deleted file mode 100644 index a2907a257b..0000000000 --- a/java-iam/.kokoro/nightly/integration.cfg +++ /dev/null @@ -1,37 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "JOB_TYPE" - value: "integration" -} -# TODO: remove this after we've migrated all tests and scripts -env_vars: { - key: "GCLOUD_PROJECT" - value: "java-docs-samples-testing" -} - -env_vars: { - key: "GOOGLE_CLOUD_PROJECT" - value: "java-docs-samples-testing" -} - -env_vars: { - key: "ENABLE_FLAKYBOT" - value: "true" -} - -env_vars: { - key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "secret_manager/java-it-service-account" -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "java-it-service-account" -} diff --git a/java-iam/.kokoro/nightly/java11-integration.cfg b/java-iam/.kokoro/nightly/java11-integration.cfg deleted file mode 100644 index 58049cc38f..0000000000 --- a/java-iam/.kokoro/nightly/java11-integration.cfg +++ /dev/null @@ -1,37 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/java11014" -} - -env_vars: { - key: "JOB_TYPE" - value: "integration" -} -# TODO: remove this after we've migrated all tests and scripts -env_vars: { - key: "GCLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "GOOGLE_CLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "ENABLE_FLAKYBOT" - value: "true" -} - -env_vars: { - key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "secret_manager/java-it-service-account" -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "java-it-service-account" -} diff --git a/java-iam/.kokoro/nightly/java11.cfg b/java-iam/.kokoro/nightly/java11.cfg deleted file mode 100644 index 709f2b4c73..0000000000 --- a/java-iam/.kokoro/nightly/java11.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java11" -} diff --git a/java-iam/.kokoro/nightly/java7.cfg b/java-iam/.kokoro/nightly/java7.cfg deleted file mode 100644 index cb24f44eea..0000000000 --- a/java-iam/.kokoro/nightly/java7.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java7" -} diff --git a/java-iam/.kokoro/nightly/java8-osx.cfg b/java-iam/.kokoro/nightly/java8-osx.cfg deleted file mode 100644 index 1affbbe4ad..0000000000 --- a/java-iam/.kokoro/nightly/java8-osx.cfg +++ /dev/null @@ -1,3 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -build_file: "java-iam/.kokoro/build.sh" diff --git a/java-iam/.kokoro/nightly/java8-win.cfg b/java-iam/.kokoro/nightly/java8-win.cfg deleted file mode 100644 index 4c8e051ae0..0000000000 --- a/java-iam/.kokoro/nightly/java8-win.cfg +++ /dev/null @@ -1,3 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -build_file: "java-iam/.kokoro/build.bat" diff --git a/java-iam/.kokoro/nightly/java8.cfg b/java-iam/.kokoro/nightly/java8.cfg deleted file mode 100644 index 495cc7bacd..0000000000 --- a/java-iam/.kokoro/nightly/java8.cfg +++ /dev/null @@ -1,12 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "REPORT_COVERAGE" - value: "true" -} diff --git a/java-iam/.kokoro/nightly/lint.cfg b/java-iam/.kokoro/nightly/lint.cfg deleted file mode 100644 index 6d323c8ae7..0000000000 --- a/java-iam/.kokoro/nightly/lint.cfg +++ /dev/null @@ -1,13 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. - -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "JOB_TYPE" - value: "lint" -} \ No newline at end of file diff --git a/java-iam/.kokoro/nightly/samples.cfg b/java-iam/.kokoro/nightly/samples.cfg deleted file mode 100644 index 9761fd8648..0000000000 --- a/java-iam/.kokoro/nightly/samples.cfg +++ /dev/null @@ -1,38 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "JOB_TYPE" - value: "samples" -} - -# TODO: remove this after we've migrated all tests and scripts -env_vars: { - key: "GCLOUD_PROJECT" - value: "java-docs-samples-testing" -} - -env_vars: { - key: "GOOGLE_CLOUD_PROJECT" - value: "java-docs-samples-testing" -} - -env_vars: { - key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "secret_manager/java-docs-samples-service-account" -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "java-docs-samples-service-account" -} - -env_vars: { - key: "ENABLE_FLAKYBOT" - value: "true" -} diff --git a/java-iam/.kokoro/populate-secrets.sh b/java-iam/.kokoro/populate-secrets.sh deleted file mode 100755 index f52514257e..0000000000 --- a/java-iam/.kokoro/populate-secrets.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# Copyright 2020 Google LLC. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -function now { date +"%Y-%m-%d %H:%M:%S" | tr -d '\n' ;} -function msg { println "$*" >&2 ;} -function println { printf '%s\n' "$(now) $*" ;} - - -# Populates requested secrets set in SECRET_MANAGER_KEYS from service account: -# kokoro-trampoline@cloud-devrel-kokoro-resources.iam.gserviceaccount.com -SECRET_LOCATION="${KOKORO_GFILE_DIR}/secret_manager" -msg "Creating folder on disk for secrets: ${SECRET_LOCATION}" -mkdir -p ${SECRET_LOCATION} -for key in $(echo ${SECRET_MANAGER_KEYS} | sed "s/,/ /g") -do - msg "Retrieving secret ${key}" - docker run --entrypoint=gcloud \ - --volume=${KOKORO_GFILE_DIR}:${KOKORO_GFILE_DIR} \ - gcr.io/google.com/cloudsdktool/cloud-sdk \ - secrets versions access latest \ - --project cloud-devrel-kokoro-resources \ - --secret ${key} > \ - "${SECRET_LOCATION}/${key}" - if [[ $? == 0 ]]; then - msg "Secret written to ${SECRET_LOCATION}/${key}" - else - msg "Error retrieving secret ${key}" - fi -done diff --git a/java-iam/.kokoro/presubmit/clirr.cfg b/java-iam/.kokoro/presubmit/clirr.cfg deleted file mode 100644 index ec572442e2..0000000000 --- a/java-iam/.kokoro/presubmit/clirr.cfg +++ /dev/null @@ -1,13 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. - -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "JOB_TYPE" - value: "clirr" -} \ No newline at end of file diff --git a/java-iam/.kokoro/presubmit/common.cfg b/java-iam/.kokoro/presubmit/common.cfg deleted file mode 100644 index 5bce0b64cb..0000000000 --- a/java-iam/.kokoro/presubmit/common.cfg +++ /dev/null @@ -1,34 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Build logs will be here -action { - define_artifacts { - regex: "**/*sponge_log.xml" - regex: "**/*sponge_log.txt" - } -} - -# Download trampoline resources. -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# Use the trampoline script to run in docker. -build_file: "java-iam/.kokoro/trampoline.sh" - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/build.sh" -} - -env_vars: { - key: "JOB_TYPE" - value: "test" -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "dpebot_codecov_token" - } - } -} diff --git a/java-iam/.kokoro/presubmit/dependencies.cfg b/java-iam/.kokoro/presubmit/dependencies.cfg deleted file mode 100644 index fda7101a64..0000000000 --- a/java-iam/.kokoro/presubmit/dependencies.cfg +++ /dev/null @@ -1,12 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/dependencies.sh" -} diff --git a/java-iam/.kokoro/presubmit/graalvm-native-17.cfg b/java-iam/.kokoro/presubmit/graalvm-native-17.cfg deleted file mode 100644 index a3f7fb9d49..0000000000 --- a/java-iam/.kokoro/presubmit/graalvm-native-17.cfg +++ /dev/null @@ -1,33 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/graalvm17" -} - -env_vars: { - key: "JOB_TYPE" - value: "graalvm17" -} - -# TODO: remove this after we've migrated all tests and scripts -env_vars: { - key: "GCLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "GOOGLE_CLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "secret_manager/java-it-service-account" -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "java-it-service-account" -} \ No newline at end of file diff --git a/java-iam/.kokoro/presubmit/graalvm-native.cfg b/java-iam/.kokoro/presubmit/graalvm-native.cfg deleted file mode 100644 index 4c7225ec92..0000000000 --- a/java-iam/.kokoro/presubmit/graalvm-native.cfg +++ /dev/null @@ -1,33 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/graalvm" -} - -env_vars: { - key: "JOB_TYPE" - value: "graalvm" -} - -# TODO: remove this after we've migrated all tests and scripts -env_vars: { - key: "GCLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "GOOGLE_CLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "secret_manager/java-it-service-account" -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "java-it-service-account" -} diff --git a/java-iam/.kokoro/presubmit/integration.cfg b/java-iam/.kokoro/presubmit/integration.cfg deleted file mode 100644 index dded67a9d5..0000000000 --- a/java-iam/.kokoro/presubmit/integration.cfg +++ /dev/null @@ -1,33 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "JOB_TYPE" - value: "integration" -} - -# TODO: remove this after we've migrated all tests and scripts -env_vars: { - key: "GCLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "GOOGLE_CLOUD_PROJECT" - value: "gcloud-devel" -} - -env_vars: { - key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "secret_manager/java-it-service-account" -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "java-it-service-account" -} diff --git a/java-iam/.kokoro/presubmit/java11.cfg b/java-iam/.kokoro/presubmit/java11.cfg deleted file mode 100644 index 709f2b4c73..0000000000 --- a/java-iam/.kokoro/presubmit/java11.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java11" -} diff --git a/java-iam/.kokoro/presubmit/java7.cfg b/java-iam/.kokoro/presubmit/java7.cfg deleted file mode 100644 index cb24f44eea..0000000000 --- a/java-iam/.kokoro/presubmit/java7.cfg +++ /dev/null @@ -1,7 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java7" -} diff --git a/java-iam/.kokoro/presubmit/java8-osx.cfg b/java-iam/.kokoro/presubmit/java8-osx.cfg deleted file mode 100644 index 1affbbe4ad..0000000000 --- a/java-iam/.kokoro/presubmit/java8-osx.cfg +++ /dev/null @@ -1,3 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -build_file: "java-iam/.kokoro/build.sh" diff --git a/java-iam/.kokoro/presubmit/java8-win.cfg b/java-iam/.kokoro/presubmit/java8-win.cfg deleted file mode 100644 index 4c8e051ae0..0000000000 --- a/java-iam/.kokoro/presubmit/java8-win.cfg +++ /dev/null @@ -1,3 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -build_file: "java-iam/.kokoro/build.bat" diff --git a/java-iam/.kokoro/presubmit/java8.cfg b/java-iam/.kokoro/presubmit/java8.cfg deleted file mode 100644 index 495cc7bacd..0000000000 --- a/java-iam/.kokoro/presubmit/java8.cfg +++ /dev/null @@ -1,12 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "REPORT_COVERAGE" - value: "true" -} diff --git a/java-iam/.kokoro/presubmit/linkage-monitor.cfg b/java-iam/.kokoro/presubmit/linkage-monitor.cfg deleted file mode 100644 index 7af8810aaf..0000000000 --- a/java-iam/.kokoro/presubmit/linkage-monitor.cfg +++ /dev/null @@ -1,12 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/linkage-monitor.sh" -} \ No newline at end of file diff --git a/java-iam/.kokoro/presubmit/lint.cfg b/java-iam/.kokoro/presubmit/lint.cfg deleted file mode 100644 index 6d323c8ae7..0000000000 --- a/java-iam/.kokoro/presubmit/lint.cfg +++ /dev/null @@ -1,13 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. - -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "JOB_TYPE" - value: "lint" -} \ No newline at end of file diff --git a/java-iam/.kokoro/presubmit/samples.cfg b/java-iam/.kokoro/presubmit/samples.cfg deleted file mode 100644 index 01e0960047..0000000000 --- a/java-iam/.kokoro/presubmit/samples.cfg +++ /dev/null @@ -1,33 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -env_vars: { - key: "JOB_TYPE" - value: "samples" -} - -# TODO: remove this after we've migrated all tests and scripts -env_vars: { - key: "GCLOUD_PROJECT" - value: "java-docs-samples-testing" -} - -env_vars: { - key: "GOOGLE_CLOUD_PROJECT" - value: "java-docs-samples-testing" -} - -env_vars: { - key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "secret_manager/java-docs-samples-service-account" -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "java-docs-samples-service-account" -} \ No newline at end of file diff --git a/java-iam/.kokoro/readme.sh b/java-iam/.kokoro/readme.sh deleted file mode 100755 index 5081ac809f..0000000000 --- a/java-iam/.kokoro/readme.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash -# Copyright 2020 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -cd ${KOKORO_ARTIFACTS_DIR}/github/java-iam - -# Disable buffering, so that the logs stream through. -export PYTHONUNBUFFERED=1 - -# Kokoro exposes this as a file, but the scripts expect just a plain variable. -export GITHUB_TOKEN=$(cat ${KOKORO_KEYSTORE_DIR}/73713_yoshi-automation-github-key) - -# Setup git credentials -echo "https://${GITHUB_TOKEN}:@github.com" >> ~/.git-credentials -git config --global credential.helper 'store --file ~/.git-credentials' - -python3.6 -m pip install git+https://github.com/googleapis/synthtool.git#egg=gcp-synthtool - -set +e -python3.6 -m autosynth.synth \ - --repository=googleapis/java-iam \ - --synth-file-name=.github/readme/synth.py \ - --metadata-path=.github/readme/synth.metadata \ - --pr-title="chore: regenerate README" \ - --branch-suffix="readme" - -# autosynth returns 28 to signal there are no changes -RETURN_CODE=$? -if [[ ${RETURN_CODE} -ne 0 && ${RETURN_CODE} -ne 28 ]] -then - exit ${RETURN_CODE} -fi diff --git a/java-iam/.kokoro/release/bump_snapshot.cfg b/java-iam/.kokoro/release/bump_snapshot.cfg deleted file mode 100644 index 1e28b5ed71..0000000000 --- a/java-iam/.kokoro/release/bump_snapshot.cfg +++ /dev/null @@ -1,53 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Build logs will be here -action { - define_artifacts { - regex: "**/*sponge_log.xml" - } -} - -# Download trampoline resources. -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# Use the trampoline script to run in docker. -build_file: "java-iam/.kokoro/trampoline.sh" - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/node:10-user" -} - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/release/bump_snapshot.sh" -} - -# tokens used by release-please to keep an up-to-date release PR. -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "github-magic-proxy-key-release-please" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "github-magic-proxy-token-release-please" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "github-magic-proxy-url-release-please" - } - } -} diff --git a/java-iam/.kokoro/release/common.cfg b/java-iam/.kokoro/release/common.cfg deleted file mode 100644 index 9428634ae6..0000000000 --- a/java-iam/.kokoro/release/common.cfg +++ /dev/null @@ -1,49 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# Download trampoline resources. -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/trampoline" - -# Use the trampoline script to run in docker. -build_file: "java-iam/.kokoro/trampoline.sh" - -# Configure the docker image for kokoro-trampoline. -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java8" -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "maven-gpg-keyring" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "maven-gpg-passphrase" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "maven-gpg-pubkeyring" - } - } -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 70247 - keyname: "sonatype-credentials" - } - } -} diff --git a/java-iam/.kokoro/release/common.sh b/java-iam/.kokoro/release/common.sh deleted file mode 100755 index 7f78ee414f..0000000000 --- a/java-iam/.kokoro/release/common.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/bash -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -# Get secrets from keystore and set and environment variables -setup_environment_secrets() { - export GPG_PASSPHRASE=$(cat ${KOKORO_KEYSTORE_DIR}/70247_maven-gpg-passphrase) - export GPG_TTY=$(tty) - export GPG_HOMEDIR=/gpg - mkdir $GPG_HOMEDIR - mv ${KOKORO_KEYSTORE_DIR}/70247_maven-gpg-pubkeyring $GPG_HOMEDIR/pubring.gpg - mv ${KOKORO_KEYSTORE_DIR}/70247_maven-gpg-keyring $GPG_HOMEDIR/secring.gpg - export SONATYPE_USERNAME=$(cat ${KOKORO_KEYSTORE_DIR}/70247_sonatype-credentials | cut -f1 -d'|') - export SONATYPE_PASSWORD=$(cat ${KOKORO_KEYSTORE_DIR}/70247_sonatype-credentials | cut -f2 -d'|') -} - -create_settings_xml_file() { - echo " - - - ossrh - ${SONATYPE_USERNAME} - ${SONATYPE_PASSWORD} - - - sonatype-nexus-staging - ${SONATYPE_USERNAME} - ${SONATYPE_PASSWORD} - - - sonatype-nexus-snapshots - ${SONATYPE_USERNAME} - ${SONATYPE_PASSWORD} - - -" > $1 -} \ No newline at end of file diff --git a/java-iam/.kokoro/release/drop.cfg b/java-iam/.kokoro/release/drop.cfg deleted file mode 100644 index 85fcca33f3..0000000000 --- a/java-iam/.kokoro/release/drop.cfg +++ /dev/null @@ -1,6 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/release/drop.sh" -} diff --git a/java-iam/.kokoro/release/drop.sh b/java-iam/.kokoro/release/drop.sh deleted file mode 100755 index 742ec1a886..0000000000 --- a/java-iam/.kokoro/release/drop.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -# STAGING_REPOSITORY_ID must be set -if [ -z "${STAGING_REPOSITORY_ID}" ]; then - echo "Missing STAGING_REPOSITORY_ID environment variable" - exit 1 -fi - -source $(dirname "$0")/common.sh -pushd $(dirname "$0")/../../ - -setup_environment_secrets -create_settings_xml_file "settings.xml" - -mvn nexus-staging:drop -B \ - --settings=settings.xml \ - -DstagingRepositoryId=${STAGING_REPOSITORY_ID} diff --git a/java-iam/.kokoro/release/promote.cfg b/java-iam/.kokoro/release/promote.cfg deleted file mode 100644 index de997603d2..0000000000 --- a/java-iam/.kokoro/release/promote.cfg +++ /dev/null @@ -1,6 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/release/promote.sh" -} diff --git a/java-iam/.kokoro/release/promote.sh b/java-iam/.kokoro/release/promote.sh deleted file mode 100755 index 3cac3d8a97..0000000000 --- a/java-iam/.kokoro/release/promote.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -# STAGING_REPOSITORY_ID must be set -if [ -z "${STAGING_REPOSITORY_ID}" ]; then - echo "Missing STAGING_REPOSITORY_ID environment variable" - exit 1 -fi - -source $(dirname "$0")/common.sh - -pushd $(dirname "$0")/../../ - -setup_environment_secrets -create_settings_xml_file "settings.xml" - -mvn nexus-staging:release -B \ - -DperformRelease=true \ - --settings=settings.xml \ - -DstagingRepositoryId=${STAGING_REPOSITORY_ID} diff --git a/java-iam/.kokoro/release/publish_javadoc.cfg b/java-iam/.kokoro/release/publish_javadoc.cfg deleted file mode 100644 index e6f651d11e..0000000000 --- a/java-iam/.kokoro/release/publish_javadoc.cfg +++ /dev/null @@ -1,23 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/doc-templates/" - -env_vars: { - key: "STAGING_BUCKET" - value: "docs-staging" -} - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/release/publish_javadoc.sh" -} - - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "docuploader_service_account" - } - } -} diff --git a/java-iam/.kokoro/release/publish_javadoc.sh b/java-iam/.kokoro/release/publish_javadoc.sh deleted file mode 100755 index 0196aca2c1..0000000000 --- a/java-iam/.kokoro/release/publish_javadoc.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -if [[ -z "${CREDENTIALS}" ]]; then - CREDENTIALS=${KOKORO_KEYSTORE_DIR}/73713_docuploader_service_account -fi - -if [[ -z "${STAGING_BUCKET}" ]]; then - echo "Need to set STAGING_BUCKET environment variable" - exit 1 -fi - -# work from the git root directory -pushd $(dirname "$0")/../../ - -# install docuploader package -python3 -m pip install --require-hashes -r .kokoro/requirements.txt - -# compile all packages -mvn clean install -B -q -DskipTests=true - -export NAME=proto-google-iam-v1 -export VERSION=$(grep ${NAME}: versions.txt | cut -d: -f3) - -# build the docs -mvn site -B -q - -pushd target/site/apidocs - -# create metadata -python3 -m docuploader create-metadata \ - --name ${NAME} \ - --version ${VERSION} \ - --language java - -# upload docs -python3 -m docuploader upload . \ - --credentials ${CREDENTIALS} \ - --staging-bucket ${STAGING_BUCKET} diff --git a/java-iam/.kokoro/release/publish_javadoc11.cfg b/java-iam/.kokoro/release/publish_javadoc11.cfg deleted file mode 100644 index c84570efd6..0000000000 --- a/java-iam/.kokoro/release/publish_javadoc11.cfg +++ /dev/null @@ -1,30 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -# cloud-rad production -env_vars: { - key: "STAGING_BUCKET_V2" - value: "docs-staging-v2" -} - -# Configure the docker image for kokoro-trampoline -env_vars: { - key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-kokoro-resources/java11" -} - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/release/publish_javadoc11.sh" -} - -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "docuploader_service_account" - } - } -} - -# Downloads docfx doclet resource. This will be in ${KOKORO_GFILE_DIR}/ -gfile_resources: "/bigstore/cloud-devrel-kokoro-resources/docfx" diff --git a/java-iam/.kokoro/release/publish_javadoc11.sh b/java-iam/.kokoro/release/publish_javadoc11.sh deleted file mode 100755 index 8040a363d8..0000000000 --- a/java-iam/.kokoro/release/publish_javadoc11.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash -# Copyright 2021 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -if [[ -z "${CREDENTIALS}" ]]; then - CREDENTIALS=${KOKORO_KEYSTORE_DIR}/73713_docuploader_service_account -fi - -if [[ -z "${STAGING_BUCKET_V2}" ]]; then - echo "Need to set STAGING_BUCKET_V2 environment variable" - exit 1 -fi - -# work from the git root directory -pushd $(dirname "$0")/../../ - -# install docuploader package -python3 -m pip install --require-hashes -r .kokoro/requirements.txt - -# compile all packages -mvn clean install -B -q -DskipTests=true - -export NAME=proto-google-iam-v1 -export VERSION=$(grep ${NAME}: versions.txt | cut -d: -f3) - -# cloud RAD generation -mvn clean javadoc:aggregate -B -q -P docFX -# include CHANGELOG -cp CHANGELOG.md target/docfx-yml/history.md - -pushd target/docfx-yml - -# create metadata -python3 -m docuploader create-metadata \ - --name ${NAME} \ - --version ${VERSION} \ - --xrefs devsite://java/gax \ - --xrefs devsite://java/google-cloud-core \ - --xrefs devsite://java/api-common \ - --xrefs devsite://java/proto-google-common-protos \ - --xrefs devsite://java/google-api-client \ - --xrefs devsite://java/google-http-client \ - --xrefs devsite://java/protobuf \ - --language java - -# upload yml to production bucket -python3 -m docuploader upload . \ - --credentials ${CREDENTIALS} \ - --staging-bucket ${STAGING_BUCKET_V2} \ - --destination-prefix docfx diff --git a/java-iam/.kokoro/release/snapshot.cfg b/java-iam/.kokoro/release/snapshot.cfg deleted file mode 100644 index 2a39f44fd9..0000000000 --- a/java-iam/.kokoro/release/snapshot.cfg +++ /dev/null @@ -1,6 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/release/snapshot.sh" -} \ No newline at end of file diff --git a/java-iam/.kokoro/release/snapshot.sh b/java-iam/.kokoro/release/snapshot.sh deleted file mode 100755 index 1f55b77024..0000000000 --- a/java-iam/.kokoro/release/snapshot.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -source $(dirname "$0")/common.sh -MAVEN_SETTINGS_FILE=$(realpath $(dirname "$0")/../../)/settings.xml -pushd $(dirname "$0")/../../ - -# ensure we're trying to push a snapshot (no-result returns non-zero exit code) -grep SNAPSHOT versions.txt - -setup_environment_secrets -create_settings_xml_file "settings.xml" - -mvn clean deploy -B \ - --settings ${MAVEN_SETTINGS_FILE} \ - -DperformRelease=true \ - -Dgpg.executable=gpg \ - -Dgpg.passphrase=${GPG_PASSPHRASE} \ - -Dgpg.homedir=${GPG_HOMEDIR} diff --git a/java-iam/.kokoro/release/stage.cfg b/java-iam/.kokoro/release/stage.cfg deleted file mode 100644 index 1ef9b0acd7..0000000000 --- a/java-iam/.kokoro/release/stage.cfg +++ /dev/null @@ -1,19 +0,0 @@ -# Format: //devtools/kokoro/config/proto/build.proto - -env_vars: { - key: "TRAMPOLINE_BUILD_FILE" - value: "github/java-iam/.kokoro/release/stage.sh" -} - -# Need to save the properties file -action { - define_artifacts { - regex: "github/java-iam/target/nexus-staging/staging/*.properties" - strip_prefix: "github/java-iam" - } -} - -env_vars: { - key: "SECRET_MANAGER_KEYS" - value: "releasetool-publish-reporter-app,releasetool-publish-reporter-googleapis-installation,releasetool-publish-reporter-pem" -} diff --git a/java-iam/.kokoro/release/stage.sh b/java-iam/.kokoro/release/stage.sh deleted file mode 100755 index 61e714d6ba..0000000000 --- a/java-iam/.kokoro/release/stage.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eo pipefail - -# Start the releasetool reporter -requirementsFile=$(realpath $(dirname "${BASH_SOURCE[0]}")/../requirements.txt) -python3 -m pip install --require-hashes -r $requirementsFile -python3 -m releasetool publish-reporter-script > /tmp/publisher-script; source /tmp/publisher-script - -source $(dirname "$0")/common.sh -source $(dirname "$0")/../common.sh -MAVEN_SETTINGS_FILE=$(realpath $(dirname "$0")/../../)/settings.xml -pushd $(dirname "$0")/../../ - -setup_environment_secrets -create_settings_xml_file "settings.xml" - -# attempt to stage 3 times with exponential backoff (starting with 10 seconds) -retry_with_backoff 3 10 \ - mvn clean deploy -B \ - --settings ${MAVEN_SETTINGS_FILE} \ - -DskipTests=true \ - -Dclirr.skip=true \ - -DperformRelease=true \ - -Dgpg.executable=gpg \ - -Dgpg.passphrase=${GPG_PASSPHRASE} \ - -Dgpg.homedir=${GPG_HOMEDIR} - -if [[ -n "${AUTORELEASE_PR}" ]] -then - mvn nexus-staging:release -B \ - -DperformRelease=true \ - --settings=settings.xml -fi diff --git a/java-iam/.kokoro/requirements.in b/java-iam/.kokoro/requirements.in deleted file mode 100644 index a5010f77d4..0000000000 --- a/java-iam/.kokoro/requirements.in +++ /dev/null @@ -1,34 +0,0 @@ -gcp-docuploader==0.6.3 -google-crc32c==1.3.0 -googleapis-common-protos==1.56.3 -gcp-releasetool==1.9.1 -cryptography==38.0.3 -cachetools==4.2.4 -cffi==1.15.1 -jeepney==0.7.1 -jinja2==3.0.3 -markupsafe==2.0.1 -keyring==23.4.1 -packaging==21.3 -protobuf==3.19.5 -pyjwt==2.4.0 -pyparsing==3.0.9 -pycparser==2.21 -pyperclip==1.8.2 -python-dateutil==2.8.2 -requests==2.27.1 -certifi==2022.12.7 -importlib-metadata==4.8.3 -zipp==3.6.0 -google_api_core==2.8.2 -google-cloud-storage==2.0.0 -google-resumable-media==2.3.3 -google-cloud-core==2.3.1 -typing-extensions==4.1.1 -urllib3==1.26.12 -zipp==3.6.0 -rsa==4.9 -six==1.16.0 -attrs==22.1.0 -google-auth==2.14.1 -idna==3.4 \ No newline at end of file diff --git a/java-iam/.kokoro/requirements.txt b/java-iam/.kokoro/requirements.txt deleted file mode 100644 index 15c404aa5a..0000000000 --- a/java-iam/.kokoro/requirements.txt +++ /dev/null @@ -1,456 +0,0 @@ -# -# This file is autogenerated by pip-compile with python 3.10 -# To update, run: -# -# pip-compile --generate-hashes requirements.in -# -attrs==22.1.0 \ - --hash=sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6 \ - --hash=sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c - # via - # -r requirements.in - # gcp-releasetool -cachetools==4.2.4 \ - --hash=sha256:89ea6f1b638d5a73a4f9226be57ac5e4f399d22770b92355f92dcb0f7f001693 \ - --hash=sha256:92971d3cb7d2a97efff7c7bb1657f21a8f5fb309a37530537c71b1774189f2d1 - # via - # -r requirements.in - # google-auth -certifi==2022.12.7 \ - --hash=sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3 \ - --hash=sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18 - # via - # -r requirements.in - # requests -cffi==1.15.1 \ - --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \ - --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \ - --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \ - --hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 \ - --hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 \ - --hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 \ - --hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a \ - --hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e \ - --hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc \ - --hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf \ - --hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 \ - --hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 \ - --hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 \ - --hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 \ - --hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c \ - --hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 \ - --hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 \ - --hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca \ - --hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 \ - --hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac \ - --hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd \ - --hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee \ - --hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a \ - --hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 \ - --hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 \ - --hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 \ - --hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 \ - --hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f \ - --hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e \ - --hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 \ - --hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b \ - --hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e \ - --hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e \ - --hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d \ - --hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c \ - --hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 \ - --hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 \ - --hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 \ - --hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 \ - --hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 \ - --hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c \ - --hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 \ - --hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 \ - --hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 \ - --hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d \ - --hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 \ - --hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 \ - --hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 \ - --hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c \ - --hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 \ - --hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 \ - --hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 \ - --hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d \ - --hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d \ - --hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 \ - --hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 \ - --hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 \ - --hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 \ - --hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e \ - --hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 \ - --hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 \ - --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \ - --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \ - --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0 - # via - # -r requirements.in - # cryptography -charset-normalizer==2.0.12 \ - --hash=sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597 \ - --hash=sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df - # via requests -click==8.0.4 \ - --hash=sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1 \ - --hash=sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb - # via - # gcp-docuploader - # gcp-releasetool -colorlog==6.7.0 \ - --hash=sha256:0d33ca236784a1ba3ff9c532d4964126d8a2c44f1f0cb1d2b0728196f512f662 \ - --hash=sha256:bd94bd21c1e13fac7bd3153f4bc3a7dc0eb0974b8bc2fdf1a989e474f6e582e5 - # via gcp-docuploader -cryptography==38.0.3 \ - --hash=sha256:068147f32fa662c81aebab95c74679b401b12b57494872886eb5c1139250ec5d \ - --hash=sha256:06fc3cc7b6f6cca87bd56ec80a580c88f1da5306f505876a71c8cfa7050257dd \ - --hash=sha256:25c1d1f19729fb09d42e06b4bf9895212292cb27bb50229f5aa64d039ab29146 \ - --hash=sha256:402852a0aea73833d982cabb6d0c3bb582c15483d29fb7085ef2c42bfa7e38d7 \ - --hash=sha256:4e269dcd9b102c5a3d72be3c45d8ce20377b8076a43cbed6f660a1afe365e436 \ - --hash=sha256:5419a127426084933076132d317911e3c6eb77568a1ce23c3ac1e12d111e61e0 \ - --hash=sha256:554bec92ee7d1e9d10ded2f7e92a5d70c1f74ba9524947c0ba0c850c7b011828 \ - --hash=sha256:5e89468fbd2fcd733b5899333bc54d0d06c80e04cd23d8c6f3e0542358c6060b \ - --hash=sha256:65535bc550b70bd6271984d9863a37741352b4aad6fb1b3344a54e6950249b55 \ - --hash=sha256:6ab9516b85bebe7aa83f309bacc5f44a61eeb90d0b4ec125d2d003ce41932d36 \ - --hash=sha256:6addc3b6d593cd980989261dc1cce38263c76954d758c3c94de51f1e010c9a50 \ - --hash=sha256:728f2694fa743a996d7784a6194da430f197d5c58e2f4e278612b359f455e4a2 \ - --hash=sha256:785e4056b5a8b28f05a533fab69febf5004458e20dad7e2e13a3120d8ecec75a \ - --hash=sha256:78cf5eefac2b52c10398a42765bfa981ce2372cbc0457e6bf9658f41ec3c41d8 \ - --hash=sha256:7f836217000342d448e1c9a342e9163149e45d5b5eca76a30e84503a5a96cab0 \ - --hash=sha256:8d41a46251bf0634e21fac50ffd643216ccecfaf3701a063257fe0b2be1b6548 \ - --hash=sha256:984fe150f350a3c91e84de405fe49e688aa6092b3525f407a18b9646f6612320 \ - --hash=sha256:9b24bcff7853ed18a63cfb0c2b008936a9554af24af2fb146e16d8e1aed75748 \ - --hash=sha256:b1b35d9d3a65542ed2e9d90115dfd16bbc027b3f07ee3304fc83580f26e43249 \ - --hash=sha256:b1b52c9e5f8aa2b802d48bd693190341fae201ea51c7a167d69fc48b60e8a959 \ - --hash=sha256:bbf203f1a814007ce24bd4d51362991d5cb90ba0c177a9c08825f2cc304d871f \ - --hash=sha256:be243c7e2bfcf6cc4cb350c0d5cdf15ca6383bbcb2a8ef51d3c9411a9d4386f0 \ - --hash=sha256:bfbe6ee19615b07a98b1d2287d6a6073f734735b49ee45b11324d85efc4d5cbd \ - --hash=sha256:c46837ea467ed1efea562bbeb543994c2d1f6e800785bd5a2c98bc096f5cb220 \ - --hash=sha256:dfb4f4dd568de1b6af9f4cda334adf7d72cf5bc052516e1b2608b683375dd95c \ - --hash=sha256:ed7b00096790213e09eb11c97cc6e2b757f15f3d2f85833cd2d3ec3fe37c1722 - # via - # -r requirements.in - # gcp-releasetool - # secretstorage -gcp-docuploader==0.6.3 \ - --hash=sha256:ba8c9d76b3bbac54b0311c503a373b00edc2dc02d6d54ea9507045adb8e870f7 \ - --hash=sha256:c0f5aaa82ce1854a386197e4e359b120ad6d4e57ae2c812fce42219a3288026b - # via -r requirements.in -gcp-releasetool==1.9.1 \ - --hash=sha256:952f4055d5d986b070ae2a71c4410b250000f9cc5a1e26398fcd55a5bbc5a15f \ - --hash=sha256:d0d3c814a97c1a237517e837d8cfa668ced8df4b882452578ecef4a4e79c583b - # via -r requirements.in -google-api-core==2.8.2 \ - --hash=sha256:06f7244c640322b508b125903bb5701bebabce8832f85aba9335ec00b3d02edc \ - --hash=sha256:93c6a91ccac79079ac6bbf8b74ee75db970cc899278b97d53bc012f35908cf50 - # via - # -r requirements.in - # google-cloud-core - # google-cloud-storage -google-auth==2.14.1 \ - --hash=sha256:f5d8701633bebc12e0deea4df8abd8aff31c28b355360597f7f2ee60f2e4d016 - # via - # -r requirements.in - # gcp-releasetool - # google-api-core - # google-cloud-core - # google-cloud-storage -google-cloud-core==2.3.1 \ - --hash=sha256:113ba4f492467d5bd442c8d724c1a25ad7384045c3178369038840ecdd19346c \ - --hash=sha256:34334359cb04187bdc80ddcf613e462dfd7a3aabbc3fe4d118517ab4b9303d53 - # via - # -r requirements.in - # google-cloud-storage -google-cloud-storage==2.0.0 \ - --hash=sha256:a57a15aead0f9dfbd4381f1bfdbe8bf89818a4bd75bab846cafcefb2db846c47 \ - --hash=sha256:ec4be60bb223a3a960f0d01697d849b86d91cad815a84915a32ed3635e93a5e7 - # via - # -r requirements.in - # gcp-docuploader -google-crc32c==1.3.0 \ - --hash=sha256:04e7c220798a72fd0f08242bc8d7a05986b2a08a0573396187fd32c1dcdd58b3 \ - --hash=sha256:05340b60bf05b574159e9bd940152a47d38af3fb43803ffe71f11d704b7696a6 \ - --hash=sha256:12674a4c3b56b706153a358eaa1018c4137a5a04635b92b4652440d3d7386206 \ - --hash=sha256:127f9cc3ac41b6a859bd9dc4321097b1a4f6aa7fdf71b4f9227b9e3ebffb4422 \ - --hash=sha256:13af315c3a0eec8bb8b8d80b8b128cb3fcd17d7e4edafc39647846345a3f003a \ - --hash=sha256:1926fd8de0acb9d15ee757175ce7242e235482a783cd4ec711cc999fc103c24e \ - --hash=sha256:226f2f9b8e128a6ca6a9af9b9e8384f7b53a801907425c9a292553a3a7218ce0 \ - --hash=sha256:276de6273eb074a35bc598f8efbc00c7869c5cf2e29c90748fccc8c898c244df \ - --hash=sha256:318f73f5484b5671f0c7f5f63741ab020a599504ed81d209b5c7129ee4667407 \ - --hash=sha256:3bbce1be3687bbfebe29abdb7631b83e6b25da3f4e1856a1611eb21854b689ea \ - --hash=sha256:42ae4781333e331a1743445931b08ebdad73e188fd554259e772556fc4937c48 \ - --hash=sha256:58be56ae0529c664cc04a9c76e68bb92b091e0194d6e3c50bea7e0f266f73713 \ - --hash=sha256:5da2c81575cc3ccf05d9830f9e8d3c70954819ca9a63828210498c0774fda1a3 \ - --hash=sha256:6311853aa2bba4064d0c28ca54e7b50c4d48e3de04f6770f6c60ebda1e975267 \ - --hash=sha256:650e2917660e696041ab3dcd7abac160b4121cd9a484c08406f24c5964099829 \ - --hash=sha256:6a4db36f9721fdf391646685ecffa404eb986cbe007a3289499020daf72e88a2 \ - --hash=sha256:779cbf1ce375b96111db98fca913c1f5ec11b1d870e529b1dc7354b2681a8c3a \ - --hash=sha256:7f6fe42536d9dcd3e2ffb9d3053f5d05221ae3bbcefbe472bdf2c71c793e3183 \ - --hash=sha256:891f712ce54e0d631370e1f4997b3f182f3368179198efc30d477c75d1f44942 \ - --hash=sha256:95c68a4b9b7828ba0428f8f7e3109c5d476ca44996ed9a5f8aac6269296e2d59 \ - --hash=sha256:96a8918a78d5d64e07c8ea4ed2bc44354e3f93f46a4866a40e8db934e4c0d74b \ - --hash=sha256:9c3cf890c3c0ecfe1510a452a165431b5831e24160c5fcf2071f0f85ca5a47cd \ - --hash=sha256:9f58099ad7affc0754ae42e6d87443299f15d739b0ce03c76f515153a5cda06c \ - --hash=sha256:a0b9e622c3b2b8d0ce32f77eba617ab0d6768b82836391e4f8f9e2074582bf02 \ - --hash=sha256:a7f9cbea4245ee36190f85fe1814e2d7b1e5f2186381b082f5d59f99b7f11328 \ - --hash=sha256:bab4aebd525218bab4ee615786c4581952eadc16b1ff031813a2fd51f0cc7b08 \ - --hash=sha256:c124b8c8779bf2d35d9b721e52d4adb41c9bfbde45e6a3f25f0820caa9aba73f \ - --hash=sha256:c9da0a39b53d2fab3e5467329ed50e951eb91386e9d0d5b12daf593973c3b168 \ - --hash=sha256:ca60076c388728d3b6ac3846842474f4250c91efbfe5afa872d3ffd69dd4b318 \ - --hash=sha256:cb6994fff247987c66a8a4e550ef374671c2b82e3c0d2115e689d21e511a652d \ - --hash=sha256:d1c1d6236feab51200272d79b3d3e0f12cf2cbb12b208c835b175a21efdb0a73 \ - --hash=sha256:dd7760a88a8d3d705ff562aa93f8445ead54f58fd482e4f9e2bafb7e177375d4 \ - --hash=sha256:dda4d8a3bb0b50f540f6ff4b6033f3a74e8bf0bd5320b70fab2c03e512a62812 \ - --hash=sha256:e0f1ff55dde0ebcfbef027edc21f71c205845585fffe30d4ec4979416613e9b3 \ - --hash=sha256:e7a539b9be7b9c00f11ef16b55486141bc2cdb0c54762f84e3c6fc091917436d \ - --hash=sha256:eb0b14523758e37802f27b7f8cd973f5f3d33be7613952c0df904b68c4842f0e \ - --hash=sha256:ed447680ff21c14aaceb6a9f99a5f639f583ccfe4ce1a5e1d48eb41c3d6b3217 \ - --hash=sha256:f52a4ad2568314ee713715b1e2d79ab55fab11e8b304fd1462ff5cccf4264b3e \ - --hash=sha256:fbd60c6aaa07c31d7754edbc2334aef50601b7f1ada67a96eb1eb57c7c72378f \ - --hash=sha256:fc28e0db232c62ca0c3600884933178f0825c99be4474cdd645e378a10588125 \ - --hash=sha256:fe31de3002e7b08eb20823b3735b97c86c5926dd0581c7710a680b418a8709d4 \ - --hash=sha256:fec221a051150eeddfdfcff162e6db92c65ecf46cb0f7bb1bf812a1520ec026b \ - --hash=sha256:ff71073ebf0e42258a42a0b34f2c09ec384977e7f6808999102eedd5b49920e3 - # via - # -r requirements.in - # google-resumable-media -google-resumable-media==2.3.3 \ - --hash=sha256:27c52620bd364d1c8116eaac4ea2afcbfb81ae9139fb3199652fcac1724bfb6c \ - --hash=sha256:5b52774ea7a829a8cdaa8bd2d4c3d4bc660c91b30857ab2668d0eb830f4ea8c5 - # via - # -r requirements.in - # google-cloud-storage -googleapis-common-protos==1.56.3 \ - --hash=sha256:6f1369b58ed6cf3a4b7054a44ebe8d03b29c309257583a2bbdc064cd1e4a1442 \ - --hash=sha256:87955d7b3a73e6e803f2572a33179de23989ebba725e05ea42f24838b792e461 - # via - # -r requirements.in - # google-api-core -idna==3.4 \ - --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ - --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 - # via - # -r requirements.in - # requests -importlib-metadata==4.8.3 \ - --hash=sha256:65a9576a5b2d58ca44d133c42a241905cc45e34d2c06fd5ba2bafa221e5d7b5e \ - --hash=sha256:766abffff765960fcc18003801f7044eb6755ffae4521c8e8ce8e83b9c9b0668 - # via - # -r requirements.in - # keyring -jeepney==0.7.1 \ - --hash=sha256:1b5a0ea5c0e7b166b2f5895b91a08c14de8915afda4407fb5022a195224958ac \ - --hash=sha256:fa9e232dfa0c498bd0b8a3a73b8d8a31978304dcef0515adc859d4e096f96f4f - # via - # -r requirements.in - # keyring - # secretstorage -jinja2==3.0.3 \ - --hash=sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8 \ - --hash=sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7 - # via - # -r requirements.in - # gcp-releasetool -keyring==23.4.1 \ - --hash=sha256:17e49fb0d6883c2b4445359434dba95aad84aabb29bbff044ad0ed7100232eca \ - --hash=sha256:89cbd74d4683ed164c8082fb38619341097741323b3786905c6dac04d6915a55 - # via - # -r requirements.in - # gcp-releasetool -markupsafe==2.0.1 \ - --hash=sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298 \ - --hash=sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64 \ - --hash=sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b \ - --hash=sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194 \ - --hash=sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567 \ - --hash=sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff \ - --hash=sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724 \ - --hash=sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74 \ - --hash=sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646 \ - --hash=sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35 \ - --hash=sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6 \ - --hash=sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a \ - --hash=sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6 \ - --hash=sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad \ - --hash=sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26 \ - --hash=sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38 \ - --hash=sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac \ - --hash=sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7 \ - --hash=sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6 \ - --hash=sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047 \ - --hash=sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75 \ - --hash=sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f \ - --hash=sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b \ - --hash=sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135 \ - --hash=sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8 \ - --hash=sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a \ - --hash=sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a \ - --hash=sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1 \ - --hash=sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9 \ - --hash=sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864 \ - --hash=sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914 \ - --hash=sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee \ - --hash=sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f \ - --hash=sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18 \ - --hash=sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8 \ - --hash=sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2 \ - --hash=sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d \ - --hash=sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b \ - --hash=sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b \ - --hash=sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86 \ - --hash=sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6 \ - --hash=sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f \ - --hash=sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb \ - --hash=sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833 \ - --hash=sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28 \ - --hash=sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e \ - --hash=sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415 \ - --hash=sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902 \ - --hash=sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f \ - --hash=sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d \ - --hash=sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9 \ - --hash=sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d \ - --hash=sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145 \ - --hash=sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066 \ - --hash=sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c \ - --hash=sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1 \ - --hash=sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a \ - --hash=sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207 \ - --hash=sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f \ - --hash=sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53 \ - --hash=sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd \ - --hash=sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134 \ - --hash=sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85 \ - --hash=sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9 \ - --hash=sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5 \ - --hash=sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94 \ - --hash=sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509 \ - --hash=sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51 \ - --hash=sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872 - # via - # -r requirements.in - # jinja2 -packaging==21.3 \ - --hash=sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb \ - --hash=sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522 - # via - # -r requirements.in - # gcp-releasetool -protobuf==3.19.5 \ - --hash=sha256:1867f93b06a183f87696871bb8d1e99ee71dbb69d468ce1f0cc8bf3d30f982f3 \ - --hash=sha256:3c4160b601220627f7e91154e572baf5e161a9c3f445a8242d536ee3d0b7b17c \ - --hash=sha256:4ee2af7051d3b10c8a4fe6fd1a2c69f201fea36aeee7086cf202a692e1b99ee1 \ - --hash=sha256:5266c36cc0af3bb3dbf44f199d225b33da66a9a5c3bdc2b14865ad10eddf0e37 \ - --hash=sha256:5470f892961af464ae6eaf0f3099e2c1190ae8c7f36f174b89491281341f79ca \ - --hash=sha256:66d14b5b90090353efe75c9fb1bf65ef7267383034688d255b500822e37d5c2f \ - --hash=sha256:67efb5d20618020aa9596e17bfc37ca068c28ec0c1507d9507f73c93d46c9855 \ - --hash=sha256:696e6cfab94cc15a14946f2bf72719dced087d437adbd994fff34f38986628bc \ - --hash=sha256:6a02172b9650f819d01fb8e224fc69b0706458fc1ab4f1c669281243c71c1a5e \ - --hash=sha256:6eca9ae238ba615d702387a2ddea635d535d769994a9968c09a4ca920c487ab9 \ - --hash=sha256:950abd6c00e7b51f87ae8b18a0ce4d69fea217f62f171426e77de5061f6d9850 \ - --hash=sha256:9e1d74032f56ff25f417cfe84c8147047732e5059137ca42efad20cbbd25f5e0 \ - --hash=sha256:9e42b1cf2ecd8a1bd161239e693f22035ba99905ae6d7efeac8a0546c7ec1a27 \ - --hash=sha256:9f957ef53e872d58a0afd3bf6d80d48535d28c99b40e75e6634cbc33ea42fd54 \ - --hash=sha256:a89aa0c042e61e11ade320b802d6db4ee5391d8d973e46d3a48172c1597789f8 \ - --hash=sha256:c0f80876a8ff0ae7064084ed094eb86497bd5a3812e6fc96a05318b92301674e \ - --hash=sha256:c44e3282cff74ad18c7e8a0375f407f69ee50c2116364b44492a196293e08b21 \ - --hash=sha256:d249519ba5ecf5dd6b18150c9b6bcde510b273714b696f3923ff8308fc11ae49 \ - --hash=sha256:d3973a2d58aefc7d1230725c2447ce7f86a71cbc094b86a77c6ee1505ac7cdb1 \ - --hash=sha256:dca2284378a5f2a86ffed35c6ac147d14c48b525eefcd1083e5a9ce28dfa8657 \ - --hash=sha256:e63b0b3c42e51c94add62b010366cd4979cb6d5f06158bcae8faac4c294f91e1 \ - --hash=sha256:f2b599a21c9a32e171ec29a2ac54e03297736c578698e11b099d031f79da114b \ - --hash=sha256:f2bde37667b18c2b5280df83bc799204394a5d2d774e4deaf9de0eb741df6833 \ - --hash=sha256:f4f909f4dde413dec435a44b0894956d55bb928ded7d6e3c726556ca4c796e84 \ - --hash=sha256:f976234e20ab2785f54224bcdafa027674e23663b132fa3ca0caa291a6cfbde7 \ - --hash=sha256:f9cebda093c2f6bfed88f1c17cdade09d4d96096421b344026feee236532d4de - # via - # -r requirements.in - # gcp-docuploader - # gcp-releasetool - # google-api-core - # google-cloud-storage - # googleapis-common-protos -pyasn1==0.4.8 \ - --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \ - --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba - # via - # pyasn1-modules - # rsa -pyasn1-modules==0.2.8 \ - --hash=sha256:905f84c712230b2c592c19470d3ca8d552de726050d1d1716282a1f6146be65e \ - --hash=sha256:a50b808ffeb97cb3601dd25981f6b016cbb3d31fbf57a8b8a87428e6158d0c74 - # via google-auth -pycparser==2.21 \ - --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ - --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 - # via - # -r requirements.in - # cffi -pyjwt==2.4.0 \ - --hash=sha256:72d1d253f32dbd4f5c88eaf1fdc62f3a19f676ccbadb9dbc5d07e951b2b26daf \ - --hash=sha256:d42908208c699b3b973cbeb01a969ba6a96c821eefb1c5bfe4c390c01d67abba - # via - # -r requirements.in - # gcp-releasetool -pyparsing==3.0.9 \ - --hash=sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb \ - --hash=sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc - # via - # -r requirements.in - # packaging -pyperclip==1.8.2 \ - --hash=sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57 - # via - # -r requirements.in - # gcp-releasetool -python-dateutil==2.8.2 \ - --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ - --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 - # via - # -r requirements.in - # gcp-releasetool -requests==2.27.1 \ - --hash=sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61 \ - --hash=sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d - # via - # -r requirements.in - # gcp-releasetool - # google-api-core - # google-cloud-storage -rsa==4.9 \ - --hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \ - --hash=sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21 - # via - # -r requirements.in - # google-auth -secretstorage==3.3.3 \ - --hash=sha256:2403533ef369eca6d2ba81718576c5e0f564d5cca1b58f73a8b23e7d4eeebd77 \ - --hash=sha256:f356e6628222568e3af06f2eba8df495efa13b3b63081dafd4f7d9a7b7bc9f99 - # via keyring -six==1.16.0 \ - --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ - --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 - # via - # -r requirements.in - # gcp-docuploader - # google-auth - # python-dateutil -typing-extensions==4.1.1 \ - --hash=sha256:1a9462dcc3347a79b1f1c0271fbe79e844580bb598bafa1ed208b94da3cdcd42 \ - --hash=sha256:21c85e0fe4b9a155d0799430b0ad741cdce7e359660ccbd8b530613e8df88ce2 - # via -r requirements.in -urllib3==1.26.12 \ - --hash=sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e \ - --hash=sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997 - # via - # -r requirements.in - # requests -zipp==3.6.0 \ - --hash=sha256:71c644c5369f4a6e07636f0aa966270449561fcea2e3d6747b8d23efaa9d7832 \ - --hash=sha256:9fe5ea21568a0a70e50f273397638d39b03353731e6cbbb3fd8502a33fec40bc - # via - # -r requirements.in - # importlib-metadata diff --git a/java-iam/.kokoro/trampoline.sh b/java-iam/.kokoro/trampoline.sh deleted file mode 100644 index 8b69b793c9..0000000000 --- a/java-iam/.kokoro/trampoline.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -set -eo pipefail -# Always run the cleanup script, regardless of the success of bouncing into -# the container. -function cleanup() { - chmod +x ${KOKORO_GFILE_DIR}/trampoline_cleanup.sh - ${KOKORO_GFILE_DIR}/trampoline_cleanup.sh - echo "cleanup"; -} -trap cleanup EXIT - -$(dirname $0)/populate-secrets.sh # Secret Manager secrets. -python3 "${KOKORO_GFILE_DIR}/trampoline_v1.py" From c70d183b42eee5c79ad6c8e681c8cb0add812abd Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Wed, 8 Feb 2023 13:00:21 -0500 Subject: [PATCH 27/82] chore: removing unused Gradle files in api-common-java, gax-java, java-common-protos, and java-iam (#1305) The build is Maven or Bazel. The Gradle files in the recently migrated repositories (api-common-java, gax-java, java-common-protos, and java-iam) are not used. Note that this pull request is not touching rules_java_gapic/resources/gradle which is still used to generate Gradle files for self-service client libraries. --- api-common-java/build.gradle | 449 ------------------ .../gradle/wrapper/gradle-wrapper.jar | Bin 59203 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 - api-common-java/gradlew | 234 --------- api-common-java/gradlew.bat | 89 ---- gax-java/build.gradle | 329 ------------- gax-java/gax-bom/build.gradle | 81 ---- gax-java/gax-grpc/build.gradle | 50 -- gax-java/gax-httpjson/build.gradle | 43 -- gax-java/gax/build.gradle | 47 -- gax-java/gradle/wrapper/gradle-wrapper.jar | Bin 61574 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - gax-java/gradlew | 244 ---------- gax-java/gradlew.bat | 92 ---- gax-java/settings.gradle | 4 - .../grpc-google-common-protos/build.gradle | 49 -- .../proto-google-common-protos/build.gradle | 50 -- java-iam/grpc-google-iam-v1/build.gradle | 49 -- java-iam/proto-google-iam-v1/build.gradle | 52 -- 19 files changed, 1873 deletions(-) delete mode 100644 api-common-java/build.gradle delete mode 100644 api-common-java/gradle/wrapper/gradle-wrapper.jar delete mode 100644 api-common-java/gradle/wrapper/gradle-wrapper.properties delete mode 100755 api-common-java/gradlew delete mode 100644 api-common-java/gradlew.bat delete mode 100644 gax-java/build.gradle delete mode 100644 gax-java/gax-bom/build.gradle delete mode 100644 gax-java/gax-grpc/build.gradle delete mode 100644 gax-java/gax-httpjson/build.gradle delete mode 100644 gax-java/gax/build.gradle delete mode 100644 gax-java/gradle/wrapper/gradle-wrapper.jar delete mode 100644 gax-java/gradle/wrapper/gradle-wrapper.properties delete mode 100755 gax-java/gradlew delete mode 100644 gax-java/gradlew.bat delete mode 100644 gax-java/settings.gradle delete mode 100644 java-common-protos/grpc-google-common-protos/build.gradle delete mode 100644 java-common-protos/proto-google-common-protos/build.gradle delete mode 100644 java-iam/grpc-google-iam-v1/build.gradle delete mode 100644 java-iam/proto-google-iam-v1/build.gradle diff --git a/api-common-java/build.gradle b/api-common-java/build.gradle deleted file mode 100644 index a7d8a5729f..0000000000 --- a/api-common-java/build.gradle +++ /dev/null @@ -1,449 +0,0 @@ -import groovy.io.FileType - -buildscript { - repositories { - mavenLocal() - maven { - url 'https://plugins.gradle.org/m2/' - } - mavenCentral() - } - dependencies { - classpath "gradle.plugin.com.github.sherter.google-java-format:google-java-format-gradle-plugin:0.9", - "io.github.gradle-nexus:publish-plugin:1.1.0" - } -} -apply plugin: 'java' -apply plugin: 'eclipse' -apply plugin: 'idea' -apply plugin: 'jacoco' -apply plugin: 'signing' -apply plugin: 'maven-publish' -apply plugin: 'com.github.sherter.google-java-format' -apply plugin: 'io.github.gradle-nexus.publish-plugin' - - -group = "com.google.api" -archivesBaseName = "api-common" - -project.version = "2.6.1-SNAPSHOT" // {x-version-update:api-common:current} - -sourceCompatibility = 1.8 -targetCompatibility = 1.8 - -jacoco { - toolVersion = "0.8.8" -} - -// Dependencies -// ------------ - -ext { - // Shortcuts for libraries we are using - libraries = [ - javax_annotations: 'javax.annotation:javax.annotation-api:1.3.2', - auto_value: 'com.google.auto.value:auto-value:1.10.1', - auto_value_annotations: 'com.google.auto.value:auto-value-annotations:1.10.1', - guava: 'com.google.guava:guava:31.1-jre', - jsr305: 'com.google.code.findbugs:jsr305:3.0.2', - error_prone_annotations: 'com.google.errorprone:error_prone_annotations:2.18.0', - - // Testing - junit: 'junit:junit:4.13.2', - truth: 'com.google.truth:truth:1.1.3', - ] -} - -repositories { - mavenLocal() - mavenCentral() -} - -dependencies { - - annotationProcessor libraries.auto_value - - implementation( libraries.guava, - libraries.jsr305, - libraries.javax_annotations, - libraries.auto_value_annotations) - - compileOnly libraries.error_prone_annotations - - testImplementation(libraries.junit, - libraries.truth) -} - -clean.doFirst { - delete 'tmp_gh-pages/' -} - -jacocoTestReport { - reports { - xml.enabled true - html.enabled true - } -} - -check.dependsOn jacocoTestReport - -// jar with automatic module name: -jar { - manifest { - attributes('Automatic-Module-Name': 'com.google.api.apicommon') - } -} - -// Source jar -// ---------- -project.gradle.taskGraph.whenReady { - println project.gradle.taskGraph.getAllTasks() -} -task sourcesJar(type: Jar, dependsOn: classes) { - archiveClassifier = 'sources' - from sourceSets.main.allSource -} - -// JavaDoc -// ------- - -task javadocJar(type: Jar) { - archiveClassifier = 'javadoc' - from javadoc -} - -javadoc.options { - encoding = 'UTF-8' - links 'https://docs.oracle.com/javase/7/docs/api/' -} - -// JavaDocV3 -// ------- - -task javadocJarV3(type: Jar) { - archiveClassifier = 'javadoc' - from javadoc -} - -javadoc.options { - encoding = 'UTF-8' - links 'https://docs.oracle.com/javase/7/docs/api/' - - if (JavaVersion.current().isJava8Compatible()) { - addStringOption('Xdoclint:all,-missing', '-quiet') - } - if (JavaVersion.current().isJava11Compatible()) { - addStringOption('-release', '7') - } -} - -// Test Logging -// ------------ - -test { - testLogging { - events "passed", "skipped", "failed", "standardOut", "standardError" - exceptionFormat = 'full' - } -} - - -// Eclipse Annotation Processing -// ----------------------------- - -ext { - eclipseAptFolder = '.apt_generated' - eclipseSettingsDir = file('.settings') -} - -configurations { - codeGeneration -} - -dependencies { - codeGeneration libraries.auto_value, libraries.jsr305 - implementation(libraries.jsr305, libraries.auto_value_annotations) -} - -compileJava.classpath += configurations.codeGeneration - -eclipse { - jdt.file.withProperties { - it['org.eclipse.jdt.core.compiler.processAnnotations'] = 'enabled' - } -} - -tasks.eclipseJdt { - doFirst { - def aptPrefs = - file("${eclipseSettingsDir}/org.eclipse.jdt.apt.core.prefs") - aptPrefs.parentFile.mkdirs() - - aptPrefs.text = """\ - eclipse.preferences.version=1 - org.eclipse.jdt.apt.aptEnabled=true - org.eclipse.jdt.apt.genSrcDir=${eclipseAptFolder} - org.eclipse.jdt.apt.reconcileEnabled=true - """.stripIndent() - - file('.factorypath').withWriter { - new groovy.xml.MarkupBuilder(it).'factorypath' { - project.configurations.codeGeneration.each { dep-> - factorypathentry( - kind:'EXTJAR', - id:dep.absolutePath, - enabled:true, - runInBatchMode:false) - } - } - } - } -} - -tasks.cleanEclipseJdt { - doFirst { - delete file("${eclipseSettingsDir}/org.eclipse.jdt.apt.core.prefs"), - file('.factorypath') - } -} - -// Publishing -// ---------- - -artifacts { - archives javadocJar, sourcesJar -} - -signing { - required { gradle.taskGraph.hasTask("uploadArchives") } - if (project.hasProperty('signing.gnupg.executable')) { - useGpgCmd() - } - sign configurations.archives -} - -if (project.hasProperty('ossrhUsername') && project.hasProperty('ossrhPassword')) { - nexusPublishing { - packageGroup = "com.google.api" - repositories { - sonatype { //or custom repository name - nexusUrl.set(uri('https://google.oss.sonatype.org/service/local/')) - snapshotRepositoryUrl.set(uri('https://google.oss.sonatype.org/content/repositories/snapshots/')) - username = ossrhUsername - password = ossrhPassword - } - } - } -} - -afterEvaluate { - publishing { - publications { - mavenJava(MavenPublication) { - version = project.version - - from components.java - - artifact javadocJar - artifact sourcesJar - - pom { - name = 'API Common' - packaging = 'jar' - artifactId = 'api-common' - description = 'Common utilities for Google APIs in Java' - url = 'https://github.com/googleapis/api-common-java' - - scm { - url = 'https://github.com/googleapis/api-common-java' - connection = 'scm:git:https://github.com/googleapis/api-common-java.git' - } - - licenses { - license { - name = 'BSD' - url = 'https://github.com/googleapis/api-common-java/blob/master/LICENSE' - } - } - - developers { - developer { - id = 'GoogleAPIs' - name = 'GoogleAPIs' - email = 'googleapis@googlegroups.com' - url = 'https://github.com/googleapis' - organization = 'Google, Inc.' - organizationUrl = 'https://www.google.com' - } - } - } - } - } - repositories { - maven { - url 'https://google.oss.sonatype.org/service/local/staging/deploy/maven2/' - credentials { - username = project.hasProperty('ossrhUsername') ? project.getProperty('ossrhUsername') : null - password = project.hasProperty('ossrhPassword') ? project.getProperty('ossrhPassword') : null - } - } - } - } - - signing { - if (!project.hasProperty('skip.signing')) { - if (project.hasProperty('signing.gnupg.executable')) { - useGpgCmd() - } - sign publishing.publications - } - } -} - -gradle.projectsEvaluated { - tasks.withType(JavaCompile) { - options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" - } -} - -// Formatting tasks -// ================ - -task verifyLicense { - doLast { - def licenseText = new File(rootProject.rootDir, 'license-header-javadoc.txt').text - def srcFiles = [] - sourceSets - .collectMany{it.allJava.getSrcDirs()} - .each{it.eachFileRecurse(FileType.FILES, {srcFiles << new Tuple(it, it.text)})} - srcFiles = srcFiles - .findAll{it.get(0).path.endsWith(".java")} - .collect{new Tuple(it.get(0), it.get(1).replaceAll("Copyright 20[0-9]{2}", "Copyright 20xx"))} - .findAll{!it.get(1).startsWith(licenseText)} - if (srcFiles.asList().size() > 0) { - srcFiles.each({println 'missing license: ' + it.get(0)}) - throw new IllegalStateException("Above files do not have licenses") - } - } -} -test.dependsOn verifyLicense - -googleJavaFormat { - toolVersion '1.0' -} -tasks.googleJavaFormat { - exclude '.apt_generated/**' - exclude 'bin/**' - exclude 'build/**' -} -tasks.verifyGoogleJavaFormat { - exclude '.apt_generated/**' - exclude 'bin/**' - exclude 'build/**' -} -test.dependsOn verifyGoogleJavaFormat - -// JavaDocV3 docFX -// -task javadocCombinedV3(type: Javadoc) { - source project.sourceSets.main.allJava - classpath = files(project.sourceSets.main.compileClasspath) - destinationDir = new File(projectDir, 'tmp_docs/docfx-yml') - - options.addStringOption('encoding', 'UTF-8') - options.addStringOption("doclet", "com.microsoft.doclet.DocFxDoclet") - options.addStringOption("projectname", "api-common") - options.docletpath = [file(System.getenv('KOKORO_GFILE_DIR') + "/java-docfx-doclet-1.5.0.jar")] - // Newer Gradle 6 passes -notimestamp by default, which the doclet above doesn't understand: - // https://github.com/gradle/gradle/issues/11898 - options.noTimestamp false -} - -clean { - delete 'tmp_gh-pages/' - delete 'tmp_docs/' -} - - -// Release -// ======= - -task checkOutGhPages { - doLast { - if (!new File('tmp_gh-pages').exists()) { - exec { - commandLine 'git', 'clone', '--branch', 'gh-pages', - '--single-branch', 'https://github.com/googleapis/api-common-java/', 'tmp_gh-pages' - } - } - } -} - -task copyFilesToGhPages { - dependsOn 'checkOutGhPages' - dependsOn 'javadoc' - doLast { - def newSiteDirPath = 'tmp_gh-pages/' + project.version + '/apidocs/' - new File(newSiteDirPath).mkdirs() - copy { - from 'build/docs/javadoc' - into newSiteDirPath - } - copy { - from 'README.md' - into 'tmp_gh-pages' - rename { filename -> filename.replace 'README', 'index' } - } - } -} - -task createApiDocsRedirect { - dependsOn 'copyFilesToGhPages' - doLast { - def template = new File('templates/apidocs_index.html.template').text - def outputContent = template.replace('{{siteVersion}}', project.version) - new File('tmp_gh-pages/apidocs/index.html').write(outputContent) - } -} - -task publishDocs { - dependsOn 'closeAndReleaseSonatypeStagingRepository' - doLast { - exec { - workingDir './tmp_gh-pages' - commandLine 'git', 'add', '.' - } - exec { - workingDir './tmp_gh-pages' - commandLine 'git', 'commit', '-m', 'Release docs for ' + project.version - } - exec { - workingDir './tmp_gh-pages' - commandLine 'git', 'push' - } - } -} - -// 1. Regenerates the gh-pages branch under tmp_gh-pages -// 2. Stages the artifact on Sonatype -task stageRelease { - dependsOn 'createApiDocsRedirect' - doLast { - exec { - commandLine './gradlew', 'uploadArchives' - } - } -} - -// 1. Closes and releases the artifact on Sonatype -// 2. Commits and pushes the new docs -// 3. Removes tmp_gh-pages -// Note: This task assumes that the 'stageRelease' task has been completed. -task finalizeRelease { - dependsOn 'publishDocs' - doLast { - exec { - commandLine 'rm', '-r', 'tmp_gh-pages' - } - } -} diff --git a/api-common-java/gradle/wrapper/gradle-wrapper.jar b/api-common-java/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59203 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

K7UpUK$>l@ zw`1S}(D?mUXu_C{wupRS-jiX~w=Uqqhf|Vb3Cm9L=T+w91Cu^ z*&Ty%sN?x*h~mJc4g~k{xD4ZmF%FXZNC;oVDwLZ_WvrnzY|{v8hc1nmx4^}Z;yriXsAf+Lp+OFLbR!&Ox?xABwl zu8w&|5pCxmu#$?Cv2_-Vghl2LZ6m7}VLEfR5o2Ou$x02uA-%QB2$c(c1rH3R9hesc zfpn#oqpbKuVsdfV#cv@5pV4^f_!WS+F>SV6N0JQ9E!T90EX((_{bSSFv9ld%I0&}9 zH&Jd4MEX1e0iqDtq~h?DBrxQX1iI0lIs<|kB$Yrh&cpeK0-^K%=FBsCBT46@h#yi!AyDq1V(#V}^;{{V*@T4WJ&U-NTq43w=|K>z8%pr_nC>%C(Wa_l78Ufib$r8Od)IIN=u>417 z`Hl{9A$mI5A(;+-Q&$F&h-@;NR>Z<2U;Y21>>Z;s@0V@SbkMQQj%_;~+qTuQ?c|AV zcWm3XZQHhP&R%QWarS%mJ!9R^&!_)*s(v+VR@I#QrAT}`17Y+l<`b-nvmDNW`De%y zrwTZ9EJrj1AFA>B`1jYDow}~*dfPs}IZMO3=a{Fy#IOILc8F0;JS4x(k-NSpbN@qM z`@aE_e}5{!$v3+qVs7u?sOV(y@1Os*Fgu`fCW9=G@F_#VQ%xf$hj0~wnnP0$hFI+@ zkQj~v#V>xn)u??YutKsX>pxKCl^p!C-o?+9;!Nug^ z{rP!|+KsP5%uF;ZCa5F;O^9TGac=M|=V z_H(PfkV1rz4jl?gJ(ArXMyWT4y(86d3`$iI4^l9`vLdZkzpznSd5Ikfrs8qcSy&>z zTIZgWZGXw0n9ibQxYWE@gI0(3#KA-dAdPcsL_|hg2@~C!VZDM}5;v_Nykfq!*@*Zf zE_wVgx82GMDryKO{U{D>vSzSc%B~|cjDQrt5BN=Ugpsf8H8f1lR4SGo#hCuXPL;QQ z#~b?C4MoepT3X`qdW2dNn& zo8)K}%Lpu>0tQei+{>*VGErz|qjbK#9 zvtd8rcHplw%YyQCKR{kyo6fgg!)6tHUYT(L>B7er5)41iG`j$qe*kSh$fY!PehLcD zWeKZHn<492B34*JUQh=CY1R~jT9Jt=k=jCU2=SL&&y5QI2uAG2?L8qd2U(^AW#{(x zThSy=C#>k+QMo^7caQcpU?Qn}j-`s?1vXuzG#j8(A+RUAY})F@=r&F(8nI&HspAy4 z4>(M>hI9c7?DCW8rw6|23?qQMSq?*Vx?v30U%luBo)B-k2mkL)Ljk5xUha3pK>EEj z@(;tH|M@xkuN?gsz;*bygizwYR!6=(Xgcg^>WlGtRYCozY<rFX2E>kaZo)O<^J7a`MX8Pf`gBd4vrtD|qKn&B)C&wp0O-x*@-|m*0egT=-t@%dD zgP2D+#WPptnc;_ugD6%zN}Z+X4=c61XNLb7L1gWd8;NHrBXwJ7s0ce#lWnnFUMTR& z1_R9Fin4!d17d4jpKcfh?MKRxxQk$@)*hradH2$3)nyXep5Z;B z?yX+-Bd=TqO2!11?MDtG0n(*T^!CIiF@ZQymqq1wPM_X$Iu9-P=^}v7npvvPBu!d$ z7K?@CsA8H38+zjA@{;{kG)#AHME>Ix<711_iQ@WWMObXyVO)a&^qE1GqpP47Q|_AG zP`(AD&r!V^MXQ^e+*n5~Lp9!B+#y3#f8J^5!iC@3Y@P`;FoUH{G*pj*q7MVV)29+j z>BC`a|1@U_v%%o9VH_HsSnM`jZ-&CDvbiqDg)tQEnV>b%Ptm)T|1?TrpIl)Y$LnG_ zzKi5j2Fx^K^PG1=*?GhK;$(UCF-tM~^=Z*+Wp{FSuy7iHt9#4n(sUuHK??@v+6*|10Csdnyg9hAsC5_OrSL;jVkLlf zHXIPukLqbhs~-*oa^gqgvtpgTk_7GypwH><53riYYL*M=Q@F-yEPLqQ&1Sc zZB%w}T~RO|#jFjMWcKMZccxm-SL)s_ig?OC?y_~gLFj{n8D$J_Kw%{r0oB8?@dWzn zB528d-wUBQzrrSSLq?fR!K%59Zv9J4yCQhhDGwhptpA5O5U?Hjqt>8nOD zi{)0CI|&Gu%zunGI*XFZh(ix)q${jT8wnnzbBMPYVJc4HX*9d^mz|21$=R$J$(y7V zo0dxdbX3N#=F$zjstTf*t8vL)2*{XH!+<2IJ1VVFa67|{?LP&P41h$2i2;?N~RA30LV`BsUcj zfO9#Pg1$t}7zpv#&)8`mis3~o+P(DxOMgz-V*(?wWaxi?R=NhtW}<#^Z?(BhSwyar zG|A#Q7wh4OfK<|DAcl9THc-W4*>J4nTevsD%dkj`U~wSUCh15?_N@uMdF^Kw+{agk zJ`im^wDqj`Ev)W3k3stasP`88-M0ZBs7;B6{-tSm3>I@_e-QfT?7|n0D~0RRqDb^G zyHb=is;IwuQ&ITzL4KsP@Z`b$d%B0Wuhioo1CWttW8yhsER1ZUZzA{F*K=wmi-sb#Ju+j z-l@In^IKnb{bQG}Ps>+Vu_W#grNKNGto+yjA)?>0?~X`4I3T@5G1)RqGUZuP^NJCq&^HykuYtMDD8qq+l8RcZNJsvN(10{ zQ1$XcGt}QH-U^WU!-wRR1d--{B$%vY{JLWIV%P4-KQuxxDeJaF#{eu&&r!3Qu{w}0f--8^H|KwE>)ORrcR+2Qf zb})DRcH>k0zWK8@{RX}NYvTF;E~phK{+F;MkIP$)T$93Ba2R2TvKc>`D??#mv9wg$ zd~|-`Qx5LwwsZ2hb*Rt4S9dsF%Cny5<1fscy~)d;0m2r$f=83<->c~!GNyb!U)PA; zq^!`@@)UaG)Ew(9V?5ZBq#c%dCWZrplmuM`o~TyHjAIMh0*#1{B>K4po-dx$Tk-Cq z=WZDkP5x2W&Os`N8KiYHRH#UY*n|nvd(U>yO=MFI-2BEp?x@=N<~CbLJBf6P)}vLS?xJXYJ2^<3KJUdrwKnJnTp{ zjIi|R=L7rn9b*D#Xxr4*R<3T5AuOS+#U8hNlfo&^9JO{VbH!v9^JbK=TCGR-5EWR@ zN8T-_I|&@A}(hKeL4_*eb!1G8p~&_Im8|wc>Cdir+gg90n1dw?QaXcx6Op_W1r=axRw>4;rM*UOpT#Eb9xU1IiWo@h?|5uP zka>-XW0Ikp@dIe;MN8B01a7+5V@h3WN{J=HJ*pe0uwQ3S&MyWFni47X32Q7SyCTNQ z+sR!_9IZa5!>f&V$`q!%H8ci!a|RMx5}5MA_kr+bhtQy{-^)(hCVa@I!^TV4RBi zAFa!Nsi3y37I5EK;0cqu|9MRj<^r&h1lF}u0KpKQD^5Y+LvFEwM zLU@@v4_Na#Axy6tn3P%sD^5P#<7F;sd$f4a7LBMk zGU^RZHBcxSA%kCx*eH&wgA?Qwazm8>9SCSz_!;MqY-QX<1@p$*T8lc?@`ikEqJ>#w zcG``^CoFMAhdEXT9qt47g0IZkaU)4R7wkGs^Ax}usqJ5HfDYAV$!=6?>J6+Ha1I<5 z|6=9soU4>E))tW$<#>F ziZ$6>KJf0bPfbx_)7-}tMINlc=}|H+$uX)mhC6-Hz+XZxsKd^b?RFB6et}O#+>Wmw9Ec9) z{q}XFWp{3@qmyK*Jvzpyqv57LIR;hPXKsrh{G?&dRjF%Zt5&m20Ll?OyfUYC3WRn{cgQ?^V~UAv+5 z&_m#&nIwffgX1*Z2#5^Kl4DbE#NrD&Hi4|7SPqZ}(>_+JMz=s|k77aEL}<=0Zfb)a z%F(*L3zCA<=xO)2U3B|pcTqDbBoFp>QyAEU(jMu8(jLA61-H!ucI804+B!$E^cQQa z)_ERrW3g!B9iLb3nn3dlkvD7KsY?sRvls3QC0qPi>o<)GHx%4Xb$5a3GBTJ(k@`e@ z$RUa^%S15^1oLEmA=sayrP5;9qtf!Z1*?e$ORVPsXpL{jL<6E)0sj&swP3}NPmR%FM?O>SQgN5XfHE< zo(4#Cv11(%Nnw_{_Ro}r6=gKd{k?NebJ~<~Kv0r(r0qe4n3LFx$5%x(BKvrz$m?LG zjLIc;hbj0FMdb9aH9Lpsof#yG$(0sG2%RL;d(n>;#jb!R_+dad+K;Ccw!|RY?uS(a zj~?=&M!4C(5LnlH6k%aYvz@7?xRa^2gml%vn&eKl$R_lJ+e|xsNfXzr#xuh(>`}9g zLHSyiFwK^-p!;p$yt7$F|3*IfO3Mlu9e>Dpx8O`37?fA`cj`C0B-m9uRhJjs^mRp# zWB;Aj6|G^1V6`jg7#7V9UFvnB4((nIwG?k%c7h`?0tS8J3Bn0t#pb#SA}N-|45$-j z$R>%7cc2ebAClXc(&0UtHX<>pd)akR3Kx_cK+n<}FhzmTx!8e9^u2e4%x{>T6pQ`6 zO182bh$-W5A3^wos0SV_TgPmF4WUP-+D25KjbC{y_6W_9I2_vNKwU(^qSdn&>^=*t z&uvp*@c8#2*paD!ZMCi3;K{Na;I4Q35zw$YrW5U@Kk~)&rw;G?d7Q&c9|x<Hg|CNMsxovmfth*|E*GHezPTWa^Hd^F4!B3sF;)? z(NaPyAhocu1jUe(!5Cy|dh|W2=!@fNmuNOzxi^tE_jAtzNJ0JR-avc_H|ve#KO}#S z#a(8secu|^Tx553d4r@3#6^MHbH)vmiBpn0X^29xEv!Vuh1n(Sr5I0V&`jA2;WS|Y zbf0e}X|)wA-Pf5gBZ>r4YX3Mav1kKY(ulAJ0Q*jB)YhviHK)w!TJsi3^dMa$L@^{` z_De`fF4;M87vM3Ph9SzCoCi$#Fsd38u!^0#*sPful^p5oI(xGU?yeYjn;Hq1!wzFk zG&2w}W3`AX4bxoVm03y>ts{KaDf!}b&7$(P4KAMP=vK5?1In^-YYNtx1f#}+2QK@h zeSeAI@E6Z8a?)>sZ`fbq9_snl6LCu6g>o)rO;ijp3|$vig+4t} zylEo7$SEW<_U+qgVcaVhk+4k+C9THI5V10qV*dOV6pPtAI$)QN{!JRBKh-D zk2^{j@bZ}yqW?<#VVuI_27*cI-V~sJiqQv&m07+10XF+#ZnIJdr8t`9s_EE;T2V;B z4UnQUH9EdX%zwh-5&wflY#ve!IWt0UE-My3?L#^Bh%kcgP1q{&26eXLn zTkjJ*w+(|_>Pq0v8{%nX$QZbf)tbJaLY$03;MO=Ic-uqYUmUCuXD>J>o6BCRF=xa% z3R4SK9#t1!K4I_d>tZgE>&+kZ?Q}1qo4&h%U$GfY058s%*=!kac{0Z+4Hwm!)pFLR zJ+5*OpgWUrm0FPI2ib4NPJ+Sk07j(`diti^i#kh&f}i>P4~|d?RFb#!JN)~D@)beox}bw?4VCf^y*`2{4`-@%SFTry2h z>9VBc9#JxEs1+0i2^LR@B1J`B9Ac=#FW=(?2;5;#U$0E0UNag_!jY$&2diQk_n)bT zl5Me_SUvqUjwCqmVcyb`igygB_4YUB*m$h5oeKv3uIF0sk}~es!{D>4r%PC*F~FN3owq5e0|YeUTSG#Vq%&Gk7uwW z0lDo#_wvflqHeRm*}l?}o;EILszBt|EW*zNPmq#?4A+&i0xx^?9obLyY4xx=Y9&^G;xYXYPxG)DOpPg!i_Ccl#3L}6xAAZzNhPK1XaC_~ z!A|mlo?Be*8Nn=a+FhgpOj@G7yYs(Qk(8&|h@_>w8Y^r&5nCqe0V60rRz?b5%J;GYeBqSAjo|K692GxD4` zRZyM2FdI+-jK2}WAZTZ()w_)V{n5tEb@>+JYluDozCb$fA4H)$bzg(Ux{*hXurjO^ zwAxc+UXu=&JV*E59}h3kzQPG4M)X8E*}#_&}w*KEgtX)cU{vm9b$atHa;s>| z+L6&cn8xUL*OSjx4YGjf6{Eq+Q3{!ZyhrL&^6Vz@jGbI%cAM9GkmFlamTbcQGvOlL zmJ?(FI)c86=JEs|*;?h~o)88>12nXlpMR4@yh%qdwFNpct;vMlc=;{FSo*apJ;p}! zAX~t;3tb~VuP|ZW;z$=IHf->F@Ml)&-&Bnb{iQyE#;GZ@C$PzEf6~q}4D>9jic@mTO5x76ulDz@+XAcm35!VSu zT*Gs>;f0b2TNpjU_BjHZ&S6Sqk6V1370+!eppV2H+FY!q*n=GHQ!9Rn6MjY!Jc77A zG7Y!lFp8?TIHN!LXO?gCnsYM-gQxsm=Ek**VmZu7vnuufD7K~GIxfxbsQ@qv2T zPa`tvHB$fFCyZl>3oYg?_wW)C>^_iDOc^B7klnTOoytQH18WkOk)L2BSD0r%xgRSW zQS9elF^?O=_@|58zKLK;(f77l-Zzu}4{fXed2saq!5k#UZAoDBqYQS{sn@j@Vtp|$ zG%gnZ$U|9@u#w1@11Sjl8ze^Co=)7yS(}=;68a3~g;NDe_X^}yJj;~s8xq9ahQ5_r zxAlTMnep*)w1e(TG%tWsjo3RR;yVGPEO4V{Zp?=a_0R#=V^ioQu4YL=BO4r0$$XTX zZfnw#_$V}sDAIDrezGQ+h?q24St0QNug_?{s-pI(^jg`#JRxM1YBV;a@@JQvH8*>> zIJvku74E0NlXkYe_624>znU0J@L<-c=G#F3k4A_)*;ky!C(^uZfj%WB3-*{*B$?9+ zDm$WFp=0(xnt6`vDQV3Jl5f&R(Mp};;q8d3I%Kn>Kx=^;uSVCw0L=gw53%Bp==8Sw zxtx=cs!^-_+i{2OK`Q;913+AXc_&Z5$@z3<)So0CU3;JAv=H?@Zpi~riQ{z-zLtVL z!oF<}@IgJp)Iyz1zVJ42!SPHSkjYNS4%ulVVIXdRuiZ@5Mx8LJS}J#qD^Zi_xQ@>DKDr-_e#>5h3dtje*NcwH_h;i{Sx7}dkdpuW z(yUCjckQsagv*QGMSi9u1`Z|V^}Wjf7B@q%j2DQXyd0nOyqg%m{CK_lAoKlJ7#8M} z%IvR?Vh$6aDWK2W!=i?*<77q&B8O&3?zP(Cs@kapc)&p7En?J;t-TX9abGT#H?TW? ztO5(lPKRuC7fs}zwcUKbRh=7E8wzTsa#Z{a`WR}?UZ%!HohN}d&xJ=JQhpO1PI#>X zHkb>pW04pU%Bj_mf~U}1F1=wxdBZu1790>3Dm44bQ#F=T4V3&HlOLsGH)+AK$cHk6 zia$=$kog?)07HCL*PI6}DRhpM^*%I*kHM<#1Se+AQ!!xyhcy6j7`iDX7Z-2i73_n# zas*?7LkxS-XSqv;YBa zW_n*32D(HTYQ0$feV_Fru1ZxW0g&iwqixPX3=9t4o)o|kOo79V$?$uh?#8Q8e>4e)V6;_(x&ViUVxma+i25qea;d-oK7ouuDsB^ab{ zu1qjQ%`n56VtxBE#0qAzb7lph`Eb-}TYpXB!H-}3Ykqyp`otprp7{VEuW*^IR2n$Fb99*nAtqT&oOFIf z@w*6>YvOGw@Ja?Pp1=whZqydzx@9X4n^2!n83C5{C?G@|E?&$?p*g68)kNvUTJ)I6 z1Q|(#UuP6pj78GUxq11m-GSszc+)X{C2eo-?8ud9sB=3(D47v?`JAa{V(IF zPZQ_0AY*9M97>Jf<o%#O_%Wq}8>YM=q0|tGY+hlXcpE=Z4Od z`NT7Hu2hnvRoqOw@g1f=bv`+nba{GwA$Ak0INlqI1k<9!x_!sL()h?hEWoWrdU3w` zZ%%)VR+Bc@_v!C#koM1p-3v_^L6)_Ktj4HE>aUh%2XZE@JFMOn)J~c`_7VWNb9c-N z2b|SZMR4Z@E7j&q&9(6H3yjEu6HV7{2!1t0lgizD;mZ9$r(r7W5G$ky@w(T_dFnOD z*p#+z$@pKE+>o@%eT(2-p_C}wbQ5s(%Sn_{$HDN@MB+Ev?t@3dPy`%TZ!z}AThZSu zN<1i$siJhXFdjV zP*y|V<`V8t=h#XTRUR~5`c`Z9^-`*BZf?WAehGdg)E2Je)hqFa!k{V(u+(hTf^Yq& zoruUh2(^3pe)2{bvt4&4Y9CY3js)PUHtd4rVG57}uFJL)D(JfSIo^{P=7liFXG zq5yqgof0V8paQcP!gy+;^pp-DA5pj=gbMN0eW=-eY+N8~y+G>t+x}oa!5r>tW$xhI zPQSv=pi;~653Gvf6~*JcQ%t1xOrH2l3Zy@8AoJ+wz@daW@m7?%LXkr!bw9GY@ns3e zSfuWF_gkWnesv?s3I`@}NgE2xwgs&rj?kH-FEy82=O8`+szN ziHch`vvS`zNfap14!&#i9H@wF7}yIPm=UB%(o(}F{wsZ(wA0nJ2aD^@B41>>o-_U6 zUqD~vdo48S8~FTb^+%#zcbQiiYoDKYcj&$#^;Smmb+Ljp(L=1Kt_J!;0s%1|JK}Wi z;={~oL!foo5n8=}rs6MmUW~R&;SIJO3TL4Ky?kh+b2rT9B1Jl4>#Uh-Bec z`Hsp<==#UEW6pGPhNk8H!!DUQR~#F9jEMI6T*OWfN^Ze&X(4nV$wa8QUJ>oTkruH# zm~O<`J7Wxseo@FqaZMl#Y(mrFW9AHM9Kb|XBMqaZ2a)DvJgYipkDD_VUF_PKd~dT7 z#02}bBfPn9a!X!O#83=lbJSK#E}K&yx-HI#T6ua)6o0{|={*HFusCkHzs|Fn&|C3H zBck1cmfcWVUN&i>X$YU^Sn6k2H;r3zuXbJFz)r5~3$d$tUj(l1?o={MM){kjgqXRO zc5R*#{;V7AQh|G|)jLM@wGAK&rm2~@{Pewv#06pHbKn#wL0P6F1!^qw9g&cW3Z=9} zj)POhOlwsh@eF=>z?#sIs*C-Nl(yU!#DaiaxhEs#iJqQ8w%(?+6lU02MYSeDkr!B- zPjMv+on6OLXgGnAtl(ao>|X2Y8*Hb}GRW5}-IzXnoo-d0!m4Vy$GS!XOLy>3_+UGs z2D|YcQx@M#M|}TDOetGi{9lGo9m-=0-^+nKE^*?$^uHkxZh}I{#UTQd;X!L+W@jm( zDg@N4+lUqI92o_rNk{3P>1gxAL=&O;x)ZT=q1mk0kLlE$WeWuY_$0`0jY-Kkt zP*|m3AF}Ubd=`<>(Xg0har*_@x2YH}bn0Wk*OZz3*e5;Zc;2uBdnl8?&XjupbkOeNZsNh6pvsq_ydmJI+*z**{I{0K)-;p1~k8cpJXL$^t!-`E}=*4G^-E8>H!LjTPxSx zcF+cS`ommfKMhNSbas^@YbTpH1*RFrBuATUR zt{oFWSk^$xU&kbFQ;MCX22RAN5F6eq9UfR$ut`Jw--p2YX)A*J69m^!oYfj2y7NYcH6&r+0~_sH^c^nzeN1AU4Ga7=FlR{S|Mm~MpzY0$Z+p2W(a={b-pR9EO1Rs zB%KY|@wLcAA@)KXi!d2_BxrkhDn`DT1=Dec}V!okd{$+wK z4E{n8R*xKyci1(CnNdhf$Dp2(Jpof0-0%-38X=Dd9PQgT+w%Lshx9+loPS~MOm%ZT zt%2B2iL_KU_ita%N>xjB!#71_3=3c}o zgeW~^U_ZTJQ2!PqXulQd=3b=XOQhwATK$y(9$#1jOQ4}4?~l#&nek)H(04f(Sr=s| zWv7Lu1=%WGk4FSw^;;!8&YPM)pQDCY9DhU`hMty1@sq1=Tj7bFsOOBZOFlpR`W>-J$-(kezWJj;`?x-v>ev{*8V z8p|KXJPV$HyQr1A(9LVrM47u-XpcrIyO`yWvx1pVYc&?154aneRpLqgx)EMvRaa#|9?Wwqs2+W8n5~79G z(}iCiLk;?enn}ew`HzhG+tu+Ru@T+K5juvZN)wY;x6HjvqD!&!)$$;1VAh~7fg0K| zEha#aN=Yv|3^~YFH}cc38ovVb%L|g@9W6fo(JtT6$fa?zf@Ct88e}m?i)b*Jgc{fl zExfdvw-BYDmH6>(4QMt#p0;FUIQqkhD}aH?a7)_%JtA~soqj{ppP_82yi9kaxuK>~ ze_)Zt>1?q=ZH*kF{1iq9sr*tVuy=u>Zev}!gEZx@O6-fjyu9X00gpIl-fS_pzjpqJ z1yqBmf9NF!jaF<+YxgH6oXBdK)sH(>VZ)1siyA$P<#KDt;8NT*l_0{xit~5j1P)FN zI8hhYKhQ)i z37^aP13B~u65?sg+_@2Kr^iWHN=U;EDSZ@2W2!5ALhGNWXnFBY%7W?1 z=HI9JzQ-pLKZDYTv<0-lt|6c-RwhxZ)mU2Os{bsX_i^@*fKUj8*aDO5pks=qn3Dv6 zwggpKLuyRCTVPwmw1r}B#AS}?X7b837UlXwp~E2|PJw2SGVueL7){Y&z!jL!XN=0i zU^Eig`S2`{+gU$68aRdWx?BZ{sU_f=8sn~>s~M?GU~`fH5kCc; z8ICp+INM3(3{#k32RZdv6b9MQYdZXNuk7ed8;G?S2nT+NZBG=Tar^KFl2SvhW$bGW#kdWL-I)s_IqVnCDDM9fm8g;P;8 z7t4yZn3^*NQfx7SwmkzP$=fwdC}bafQSEF@pd&P8@H#`swGy_rz;Z?Ty5mkS%>m#% zp_!m9e<()sfKiY(nF<1zBz&&`ZlJf6QLvLhl`_``%RW&{+O>Xhp;lwSsyRqGf=RWd zpftiR`={2(siiPAS|p}@q=NhVc0ELprt%=fMXO3B)4ryC2LT(o=sLM7hJC!}T1@)E zA3^J$3&1*M6Xq>03FX`R&w*NkrZE?FwU+Muut;>qNhj@bX17ZJxnOlPSZ=Zeiz~T_ zOu#yc3t6ONHB;?|r4w+pI)~KGN;HOGC)txxiUN8#mexj+W(cz%9a4sx|IRG=}ia zuEBuba3AHsV2feqw-3MvuL`I+2|`Ud4~7ZkN=JZ;L20|Oxna5vx1qbIh#k2O4$RQF zo`tL()zxaqibg^GbB+BS5#U{@K;WWQj~GcB1zb}zJkPwH|5hZ9iH2308!>_;%msji zJHSL~s)YHBR=Koa1mLEOHos*`gp=s8KA-C zu0aE+W!#iJ*0xqKm3A`fUGy#O+X+5W36myS>Uh2!R*s$aCU^`K&KKLCCDkejX2p=5 z%o7-fl03x`gaSNyr?3_JLv?2RLS3F*8ub>Jd@^Cc17)v8vYEK4aqo?OS@W9mt%ITJ z9=S2%R8M){CugT@k~~0x`}Vl!svYqX=E)c_oU6o}#Hb^%G1l3BudxA{F*tbjG;W_>=xV73pKY53v%>I)@D36I_@&p$h|Aw zonQS`07z_F#@T-%@-Tb|)7;;anoD_WH>9ewFy(ZcEOM$#Y)8>qi7rCnsH9GO-_7zF zu*C87{Df1P4TEOsnzZ@H%&lvV(3V@;Q!%+OYRp`g05PjY^gL$^$-t0Y>H*CDDs?FZly*oZ&dxvsxaUWF!{em4{A>n@vpXg$dwvt@_rgmHF z-MER`ABa8R-t_H*kv>}CzOpz;!>p^^9ztHMsHL|SRnS<-y5Z*r(_}c4=fXF`l^-i}>e7v!qs_jv zqvWhX^F=2sDNWA9c@P0?lUlr6ecrTKM%pNQ^?*Lq?p-0~?_j50xV%^(+H>sMul#Tw zeciF*1=?a7cI(}352%>LO96pD+?9!fNyl^9v3^v&Y4L)mNGK0FN43&Xf8jUlxW1Bw zyiu2;qW-aGNhs=zbuoxnxiwZ3{PFZM#Kw)9H@(hgX23h(`Wm~m4&TvoZoYp{plb^> z_#?vXcxd>r7K+1HKJvhed>gtK`TAbJUazUWQY6T~t2af%#<+Veyr%7-#*A#@&*;@g58{i|E%6yC_InGXCOd{L0;$)z#?n7M`re zh!kO{6=>7I?*}czyF7_frt#)s1CFJ_XE&VrDA?Dp3XbvF{qsEJgb&OLSNz_5g?HpK z9)8rsr4JN!Af3G9!#Qn(6zaUDqLN(g2g8*M)Djap?WMK9NKlkC)E2|-g|#-rp%!Gz zAHd%`iq|81efi93m3yTBw3g0j#;Yb2X{mhRAI?&KDmbGqou(2xiRNb^sV}%%Wu0?< z?($L>(#BO*)^)rSgyNRni$i`R4v;GhlCZ8$@e^ROX(p=2_v6Y!%^As zu022)fHdv_-~Yu_H6WVPLpHQx!W%^6j)cBhS`O3QBW#x(eX54d&I22op(N59b*&$v zFiSRY6rOc^(dgSV1>a7-5C;(5S5MvKcM2Jm-LD9TGqDpP097%52V+0>Xqq!! zq4e3vj53SE6i8J`XcQB|MZPP8j;PAOnpGnllH6#Ku~vS42xP*Nz@~y%db7Xi8s09P z1)e%8ys6&M8D=Dt6&t`iKG_4X=!kgRQoh%Z`dc&mlOUqXk-k`jKv9@(a^2-Upw>?< zt5*^DV~6Zedbec4NVl($2T{&b)zA@b#dUyd>`2JC0=xa_fIm8{5um zr-!ApXZhC8@=vC2WyxO|!@0Km)h8ep*`^he92$@YwP>VcdoS5OC^s38e#7RPsg4j+ zbVGG}WRSET&ZfrcR(x~k8n1rTP%CnfUNKUonD$P?FtNFF#cn!wEIab-;jU=B1dHK@ z(;(yAQJ`O$sMn>h;pf^8{JISW%d+@v6@CnXh9n5TXGC}?FI9i-D0OMaIg&mAg=0Kn zNJ7oz5*ReJukD55fUsMuaP+H4tDN&V9zfqF@ zr=#ecUk9wu{0;!+gl;3Bw=Vn^)z$ahVhhw)io!na&9}LmWurLb0zubxK=UEnU*{5P z+SP}&*(iBKSO4{alBHaY^)5Q=mZ+2OwIooJ7*Q5XJ+2|q`9#f?6myq!&oz?klihLq z4C)$XP!BNS0G_Z1&TM>?Jk{S~{F3n83ioli=IO6f%wkvCl(RFFw~j0tb{GvXTx>*sB0McY0s&SNvj4+^h`9nJ_wM>F!Uc>X}9PifQekn0sKI2SAJP!a4h z5cyGTuCj3ZBM^&{dRelIlT^9zcfaAuL5Y~bl!ppSf`wZbK$z#6U~rdclk``e+!qhe z6Qspo*%<)eu6?C;Bp<^VuW6JI|Ncvyn+LlSl;Mp22Bl7ARQ0Xc24%29(ZrdsIPw&-=yHQ7_Vle|5h>AST0 zUGX2Zk34vp?U~IHT|;$U86T+UUHl_NE4m|}>E~6q``7hccCaT^#y+?wD##Q%HwPd8 zV3x4L4|qqu`B$4(LXqDJngNy-{&@aFBvVsywt@X^}iH7P%>bR?ciC$I^U-4Foa`YKI^qDyGK7k%E%c_P=yzAi`YnxGA%DeNd++j3*h^ z=rn>oBd0|~lZ<6YvmkKY*ZJlJ;Im0tqgWu&E92eqt;+NYdxx`eS(4Hw_Jb5|yVvBg z*tbdY^!AN;luEyN4VRhS@-_DC{({ziH{&Z}iGElSV~qvT>L-8G%+yEL zX#MFOhj{InyKG=mvW-<1B@c-}x$vA(nU?>S>0*eN#!SLzQ)Ex7fvQ)S4D<8|I#N$3 zT5Ei`Z?cxBODHX8(Xp73v`IsAYC@9b;t}z0wxVuQSY1J^GRwDPN@qbM-ZF48T$GZ< z8WU+;Pqo?{ghI-KZ-i*ydXu`Ep0Xw^McH_KE9J0S7G;x8Fe`DVG?j3Pv=0YzJ}yZR z%2=oqHiUjvuk0~Ca>Kol4CFi0_xQT~;_F?=u+!kIDl-9g`#ZNZ9HCy17Ga1v^Jv9# z{T4Kb1-AzUxq*MutfOWWZgD*HnFfyYg0&e9f(5tZ>krPF6{VikNeHoc{linPPt#Si z&*g>(c54V8rT_AX!J&bNm-!umPvOR}vDai#`CX___J#=zeB*{4<&2WpaDncZsOkp* zsg<%@@rbrMkR_ux9?LsQxzoBa1s%$BBn6vk#{&&zUwcfzeCBJUwFYSF$08qDsB;gWQN*g!p8pxjofWbqNSZOEKOaTx@+* zwdt5*Q47@EOZ~EZL9s?1o?A%9TJT=Ob_13yyugvPg*e&ZU(r6^k4=2+D-@n=Hv5vu zSXG|hM(>h9^zn=eQ=$6`JO&70&2|%V5Lsx>)(%#;pcOfu>*nk_3HB_BNaH$`jM<^S zcSftDU1?nL;jy)+sfonQN}(}gUW?d_ikr*3=^{G)=tjBtEPe>TO|0ddVB zTklrSHiW+!#26frPXQQ(YN8DG$PZo?(po(QUCCf_OJC`pw*uey00%gmH!`WJkrKXj2!#6?`T25mTu9OJp2L8z3! z=arrL$ZqxuE{%yV)14Kd>k}j7pxZ6#$Dz8$@WV5p8kTqN<-7W)Q7Gt2{KoOPK_tZ| zf2WG~O5@{qPI+W<4f_;reuFVdO^5`ADC1!JQE|N`s3cq@(0WB!n0uh@*c{=LAd;~} zyGK@hbF-Oo+!nN)@i*O(`@FA#u?o=~e{`4O#5}z&=UkU*50fOrzi11D^&FOqe>wii z?*k+2|EcUs;Gx{!@KBT~>PAwLrIDT7Th=Utu?~?np@t^gFs?zgX=D${RwOY^WGh-+ z+#4$066ISh8eYW#FXWp~S`<*%O^ZuItL1Tyqt8#tZ zY120E;^VG`!lZn&3sPd$RkdHpU#|w+bYV)pJC|SH9g%|5IkxVTQcBA4CL0}$&}ef@ zW^Vtj%M;;_1xxP9x#ex17&4N*{ksO*_4O}xYu(p*JkL#yr}@7b)t5X?%CY<+s5_MJ zuiqt+N_;A(_)%lumoyRFixWa-M7qK_9s6<1X?JDa9fP!+_6u~~M$5L=ipB=7(j#f< zZ34J%=bs549%~_mA(|={uZNs_0?o7;-LBP(ZRnkd{-^|2|=4vUTmtByHL8 zEph`(LSEzQj68a+`d$V<45J7cyv^#|^|%fD#si1Nx!4NW*`l*{->HEWNh6-|g>-=r zXmQ|-i}Ku$ndUeHQ^&ieT!Lf}vf6GaqW9$DJ2NWrqwPY%%4nip$@vK$nRp*_C-v<| zuKz~ZyN&<%!NS26&x?jhy+@awJipMQ-8(X4#Ae5??U<1QMt1l9R=w9fAnEF}NYu$2 z>6}Vkc zIb*A?G*z8^IvibmBKn_u^5&T_1oey0gZS2~obf(#xk=erZGTEdQnt3DMGM+0oPwss zj5zXD;(oWhB_T@~Ig#9@v)AKtXu3>Inmgf@A|-lD-1U>cNyl3h?ADD9)GG4}zUGPk zZzaXe!~Kf?<~@$G?Uql3t8jy9{2!doq4=J}j9ktTxss{p6!9UdjyDERlA*xZ!=Q)KDs5O)phz>Vq3BNGoM(H|=1*Q4$^2fTZw z(%nq1P|5Rt81}SYJpEEzMPl5VJsV5&4e)ZWKDyoZ>1EwpkHx-AQVQc8%JMz;{H~p{=FXV>jIxvm4X*qv52e?Y-f%DJ zxEA165GikEASQ^fH6K#d!Tpu2HP{sFs%E=e$gYd$aj$+xue6N+Wc(rAz~wUsk2`(b z8Kvmyz%bKQxpP}~baG-rwYcYCvkHOi zlkR<=>ZBTU*8RF_d#Bl@zZsRIhx<%~Z@Z=ik z>adw3!DK(8R|q$vy{FTxw%#xliD~6qXmY^7_9kthVPTF~Xy1CfBqbU~?1QmxmU=+k z(ggxvEuA;0e&+ci-zQR{-f7aO{O(Pz_OsEjLh_K>MbvoZ4nxtk5u{g@nPv)cgW_R} z9}EA4K4@z0?7ue}Z(o~R(X&FjejUI2g~08PH1E4w>9o{)S(?1>Z0XMvTb|;&EuyOE zGvWNpYX)Nv<8|a^;1>bh#&znEcl-r!T#pn= z4$?Yudha6F%4b>*8@=BdtXXY4N+`U4Dmx$}>HeVJk-QdTG@t!tVT#0(LeV0gvqyyw z2sEp^9eY0N`u10Tm4n8No&A=)IeEC|gnmEXoNSzu!1<4R<%-9kY_8~5Ej?zRegMn78wuMs#;i&eUA0Zk_RXQ3b&TT} z;SCI=7-FUB@*&;8|n>(_g^HGf3@QODE3LpmX~ELnymQm{Sx9xrKS zK29p~?v@R$0=v6Dr5aW>-!{+h@?Q58|Kz8{{W`%J+lDAdb&M5VHrX_mDY;1-JLnf)ezmPau$)1;=`-FU=-r-83tX=C`S#}GZufju zQ>sXNT0Ny=k@nc%cFnvA_i4SC)?_ORXHq8B4D%el1uPX`c~uG#S1M7C+*MMqLw78E zhY2dI8@+N^qrMI1+;TUda(vGqGSRyU{Fnm`aqrr7bz42c5xsOO-~oZpkzorD1g}Y<6rk&3>PsSGy}W?MtqFky@A(X# zIuNZK0cK?^=;PUAu>j0#HtjbHCV*6?jzA&OoE$*Jlga*}LF`SF?WLhv1O|zqC<>*> zYB;#lsYKx0&kH@BFpW8n*yDcc6?;_zaJs<-jPSkCsSX-!aV=P5kUgF@Nu<{a%#K*F z134Q{9|YX7X(v$62_cY3^G%t~rD>Q0z@)1|zs)vjJ6Jq9;7#Ki`w+eS**En?7;n&7 zu==V3T&eFboN3ZiMx3D8qYc;VjFUk_H-WWCau(VFXSQf~viH0L$gwD$UfFHqNcgN`x}M+YQ6RnN<+@t>JUp#)9YOkqst-Ga?{FsDpEeX0(5v{0J~SEbWiL zXC2}M4?UH@u&|;%0y`eb33ldo4~z-x8zY!oVmV=c+f$m?RfDC35mdQ2E>Pze7KWP- z>!Bh<&57I+O_^s}9Tg^k)h7{xx@0a0IA~GAOt2yy!X%Q$1rt~LbTB6@Du!_0%HV>N zlf)QI1&gvERKwso23mJ!Ou6ZS#zCS5W`gxE5T>C#E|{i<1D35C222I33?Njaz`On7 zi<+VWFP6D{e-{yiN#M|Jgk<44u1TiMI78S5W`Sdb5f+{zu34s{CfWN7a3Cf^@L%!& zN$?|!!9j2c)j$~+R6n#891w-z8(!oBpL2K=+%a$r2|~8-(vQj5_XT`<0Ksf;oP+tz z9CObS!0m)Tgg`K#xBM8B(|Z)Wb&DYL{WTYv`;A=q6~Nnx2+!lTIXtj8J7dZE!P_{z z#f8w6F}^!?^KE#+ZDv+xd5O&3EmomZzsv?>E-~ygGum45fk!SBN&|eo1rKw^?aZJ4 E2O(~oYXATM diff --git a/api-common-java/gradle/wrapper/gradle-wrapper.properties b/api-common-java/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index d355f4c4f3..0000000000 --- a/api-common-java/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.9.3-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/api-common-java/gradlew b/api-common-java/gradlew deleted file mode 100755 index 1b6c787337..0000000000 --- a/api-common-java/gradlew +++ /dev/null @@ -1,234 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# 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. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" -APP_BASE_NAME=${0##*/} - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/api-common-java/gradlew.bat b/api-common-java/gradlew.bat deleted file mode 100644 index ac1b06f938..0000000000 --- a/api-common-java/gradlew.bat +++ /dev/null @@ -1,89 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/gax-java/build.gradle b/gax-java/build.gradle deleted file mode 100644 index 558f9e1f81..0000000000 --- a/gax-java/build.gradle +++ /dev/null @@ -1,329 +0,0 @@ -import groovy.io.FileType - -plugins { - id 'java' - id 'io.github.gradle-nexus.publish-plugin' version '1.1.0' - - id 'com.diffplug.eclipse.apt' version '3.40.0' apply false - id 'com.dorongold.task-tree' version '2.1.1' apply false - id 'com.github.johnrengelman.shadow' version '7.1.2' apply false - id 'com.github.sherter.google-java-format' version '0.9' apply false - - id 'org.sonarqube' version '3.5.0.2730' -} - -// TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync) -project.version = "2.23.1-SNAPSHOT" // {x-version-update:gax:current} - -allprojects { - group = 'com.google.api' -} - -// Project names not using the default publication configuration -def nonJavaProjects = ['gax-bom'] - -ext { - libraryVendor = 'Google' - - // Load Dependencies shared between Bazel and Gradle build scripts - libraries = new Properties() - file('dependencies.properties').withReader { libraries.load(it) } - // Gradle-specific build script dependencies - libraries.putAll( - 'maven.io_grpc_grpc_bom': "io.grpc:grpc-bom:${libraries['version.io_grpc']}", - 'maven.io_grpc_grpc_core': "io.grpc:grpc-core:${libraries['version.io_grpc']}", - 'maven.io_grpc_grpc_context': "io.grpc:grpc-context:${libraries['version.io_grpc']}", - 'maven.io_grpc_grpc_stub': "io.grpc:grpc-stub:${libraries['version.io_grpc']}", - 'maven.io_grpc_grpc_api': "io.grpc:grpc-api:${libraries['version.io_grpc']}", - 'maven.io_grpc_grpc_auth': "io.grpc:grpc-auth:${libraries['version.io_grpc']}", - 'maven.io_grpc_grpc_protobuf': "io.grpc:grpc-protobuf:${libraries['version.io_grpc']}", - 'maven.io_grpc_grpc_netty_shaded': "io.grpc:grpc-netty-shaded:${libraries['version.io_grpc']}", - 'maven.io_grpc_grpc_alts': "io.grpc:grpc-alts:${libraries['version.io_grpc']}", - 'maven.io_grpc_grpc_googleapis': "io.grpc:grpc-googleapis:${libraries['version.io_grpc']}", - 'maven.com_google_protobuf': "com.google.protobuf:protobuf-java:${libraries['version.com_google_protobuf']}", - 'maven.com_google_protobuf_java_util': "com.google.protobuf:protobuf-java-util:${libraries['version.com_google_protobuf']}") -} - -nexusPublishing { - packageGroup = 'com.google.api' - repositories { - sonatype { - nexusUrl = uri('https://google.oss.sonatype.org/service/local/') - snapshotRepositoryUrl = uri('https://google.oss.sonatype.org/content/repositories/snapshots/') - username = findProperty('ossrhUsername') - password = findProperty('ossrhPassword') - } - } -} - -def javaProjects = subprojects.findAll { !nonJavaProjects.contains(it.name) } -configure(javaProjects) { - apply plugin: 'java-library' - apply plugin: 'eclipse' - apply plugin: 'idea' - apply plugin: 'jacoco' - - apply plugin: 'com.diffplug.eclipse.apt' - apply plugin: 'com.dorongold.task-tree' - apply plugin: 'com.github.johnrengelman.shadow' - apply plugin: 'com.github.sherter.google-java-format' - - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - - // Formatting tasks - // ================ - googleJavaFormat { - toolVersion '1.7' - exclude '.apt_generated*/**' - exclude 'bin/**' - exclude 'build/**' - exclude 'bazel*/**' - } - test.dependsOn verifyGoogleJavaFormat - - task verifyLicense { - doLast { - def licenseText = new File('license-header-javadoc.txt').text - def srcFiles = [] - sourceSets - .collectMany{it.allJava.getSrcDirs()} - .grep{it.exists()} - .each{it.eachFileRecurse(FileType.FILES, {srcFiles << new Tuple(it, it.text)})} - srcFiles = srcFiles - .findAll{it.get(0).path.endsWith('.java')} - .collect{new Tuple(it.get(0), it.get(1).replaceAll('Copyright 20[0-9]{2}', 'Copyright 20xx'))} - .findAll{!it.get(1).startsWith(licenseText)} - if (srcFiles.asList().size() > 0) { - srcFiles.each({println 'missing license: ' + it.get(0)}) - throw new IllegalStateException('Above files do not have licenses') - } - } - } - test.dependsOn verifyLicense - - tasks.withType(JavaCompile) { - options.compilerArgs << '-Xlint:unchecked' << '-Xlint:deprecation' - // This flag is only available in JDK 9+. This flag ensures the generated - // bytecode is compatible with Java 8. (targetCompatibility = 1.8 is not - // sufficient) - options.compilerArgs.addAll(['--release', '8']) - } - - // Dependencies - // ------------ - - repositories { - mavenLocal() - mavenCentral() - } - - configurations { - shadowNoGuava - implementation.exclude group: 'com.google.guava', module: 'guava-jdk5' - } - - jacoco.toolVersion = '0.8.5' - jacocoTestReport { - reports { - xml.required = true - html.required = true - } - afterEvaluate { - getClassDirectories().setFrom files(classDirectories.files.collect { - fileTree(dir: it, exclude: ['**/AutoValue_*']) - }) - } - } - check.dependsOn jacocoTestReport - - - // Source jar - // ---------- - - task sourcesJar(type: Jar, dependsOn: classes) { - archiveClassifier = 'sources' - - from sourceSets.main.allSource, sourceSets.test.allSource - exclude('**/*Test.java') - } - - javadoc.options { - encoding = 'UTF-8' - links 'https://docs.oracle.com/javase/8/docs/api/' - - if (JavaVersion.current().isJava8Compatible()) { - addStringOption('Xdoclint:all,-missing', '-quiet') - } - if (JavaVersion.current().isJava11Compatible()) { - addStringOption('-release', '8') - } - } - - // JavaDocV1 html - // ------- - task javadocJar(type: Jar) { - archiveClassifier = 'javadoc' - from javadoc - } - - // JavaDocV3 - docFX - // ------- - task javadocJarV3(type: Jar) { - archiveClassifier = 'javadoc' - from javadoc - } - - // Test jar - // -------- - - task testlibJar(type: Jar, dependsOn: test) { - archiveClassifier = 'testlib' - from sourceSets.test.output - - include('com/google/api/gax/rpc/testing/**') - include('com/google/api/gax/grpc/testing/**') - include('com/google/api/gax/httpjson/testing/**') - } - - // ShadowJar - // --------- - - shadowJar { - archiveClassifier = 'guavashaded' - relocate 'com.google.common', 'com.google.api.gax.repackaged.com.google.common' - relocate 'io.grpc.stub', 'com.google.api.gax.repackaged.io.grpc.stub' - relocate 'io.grpc.protobuf', 'com.google.api.gax.repackaged.io.grpc.protobuf' - configurations = [project.configurations.shadowNoGuava] - exclude('io/grpc/*') - exclude('io/grpc/internal/**') - exclude('io/grpc/inprocess/**') - exclude('io/grpc/util/**') - } - - // Test Logging - // ------------ - - test { - testLogging { - events 'passed', 'skipped', 'failed', 'standardOut', 'standardError' - exceptionFormat = 'full' - } - } - - // Eclipse annotation processing auto-setup - eclipse.synchronizationTasks eclipseJdtApt, eclipseJdt, eclipseFactorypath -} - -def normalReleasableProjects = subprojects.findAll { - !nonJavaProjects.contains(it.name) -} -configure(normalReleasableProjects) { - apply plugin: 'maven-publish' - apply plugin: 'signing' - - afterEvaluate { - publishing { - publications { - mavenJava(MavenPublication) { - version = project.version - - from components.java - - artifact javadocJar - artifact sourcesJar - artifact testlibJar - - pom { - name = 'GAX (Google Api eXtensions) for Java' - packaging = 'jar' - artifactId = project.name - description = 'Google Api eXtensions for Java' - url = 'https://github.com/googleapis/gax-java' - - scm { - url = 'https://github.com/googleapis/gax-java' - connection = 'scm:git:https://github.com/googleapis/gax-java.git' - } - - licenses { - license { - name = 'BSD' - url = 'https://github.com/googleapis/gax-java/blob/master/LICENSE' - } - } - - developers { - developer { - id = 'GoogleAPIs' - name = 'GoogleAPIs' - email = 'googleapis@googlegroups.com' - url = 'https://github.com/googleapis/gax-java' - organization = 'Google LLC' - organizationUrl = 'https://www.google.com' - } - } - } - } - } - repositories { - maven { - url 'https://google.oss.sonatype.org/service/local/staging/deploy/maven2/' - credentials { - username = findProperty('ossrhUsername') - password = findProperty('ossrhPassword') - } - } - } - } - } - - signing { - required { gradle.taskGraph.hasTask ":${name}:publishToSonatype" } - if (project.hasProperty('signing.gnupg.executable')) { - useGpgCmd() - } - sign publishing.publications - } -} - -javadoc.options { - encoding = 'UTF-8' - links 'https://docs.oracle.com/javase/7/docs/api/' -} - -// JavaDocV1 html -// ------- -task javadocCombined(type: Javadoc) { - source subprojects.collect {project -> project.sourceSets.main.allJava } - classpath = files(subprojects.collect {project -> project.sourceSets.main.compileClasspath}) - destinationDir = file('tmp_docs') -} - -// JavaDocV3 docFX -// ------- -task javadocCombinedV3(type: Javadoc) { - source subprojects.collect {project -> project.sourceSets.main.allJava } - classpath = files(subprojects.collect {project -> project.sourceSets.main.compileClasspath}) - destinationDir = file('tmp_docs/docfx-yml') - - options.addStringOption('encoding', 'UTF-8') - options.addStringOption('doclet', 'com.microsoft.doclet.DocFxDoclet') - options.addStringOption('projectname', 'gax') - options.docletpath = [file(System.getenv('KOKORO_GFILE_DIR') + '/java-docfx-doclet-1.5.0.jar')] - // Newer Gradle 6 passes -notimestamp by default, which the doclet above doesn't understand: - // https://github.com/gradle/gradle/issues/11898 - options.noTimestamp false -} - -clean { - delete 'tmp_docs/' -} - -sonarqube { - properties { - property 'sonar.projectKey', 'googleapis_gax-java' - property 'sonar.organization', 'googleapis' - property 'sonar.host.url', 'https://sonarcloud.io' - } -} diff --git a/gax-java/gax-bom/build.gradle b/gax-java/gax-bom/build.gradle deleted file mode 100644 index 59b97484e3..0000000000 --- a/gax-java/gax-bom/build.gradle +++ /dev/null @@ -1,81 +0,0 @@ -plugins { - id 'maven-publish' - id 'signing' -} - -archivesBaseName = 'gax-bom' - -project.version = "2.23.1-SNAPSHOT" // {x-version-update:gax:current} - -def mavenJavaDir = "$buildDir/publications/mavenJava" -def mavenJavaBomOutputFile = file(mavenJavaDir + '/pom-default.xml') -def mavenJavaBomAscOutputFile = file(mavenJavaDir + '/pom-default.xml.asc') - -// Copy our pom.xml to the location where a generated POM would go -task copyPom() { - doLast { - new File(mavenJavaDir).mkdirs() - copy { - from 'pom.xml' - into mavenJavaDir - rename 'pom.xml', 'pom-default.xml' - } - } -} - -// We want to use our own pom.xml instead of the generated one, so we disable -// the pom.xml generation and have the publish tasks depend on `copyPom` instead. -tasks.whenTaskAdded { task -> - if (task.name == 'generatePomFileForMavenJavaPublication') { - task.enabled = false - } else if (task.name == 'publishMavenJavaPublicationToMavenLocal') { - task.dependsOn copyPom - } else if (task.name == 'publishMavenJavaPublicationToMavenRepository') { - task.dependsOn copyPom - } else if (task.name == 'publishMavenJavaPublicationToSonatypeRepository') { - task.dependsOn copyPom - } -} - -// We can't use the `publishing` section from the main build.gradle because -// we don't want all the Java artifacts, and we want to use our own pom.xml -// instead of the generated one. -publishing { - publications { - mavenJava(MavenPublication) { - version = project.version - artifact mavenJavaBomOutputFile - } - } - repositories { - maven { - url 'https://google.oss.sonatype.org/service/local/staging/deploy/maven2/' - credentials { - username = findProperty('ossrhUsername') - password = findProperty('ossrhPassword') - } - } - } -} - -signing { - required { gradle.taskGraph.hasTask ":${name}:publishToSonatype" } - if (project.hasProperty('signing.gnupg.executable')) { - useGpgCmd() - } - sign publishing.publications -} - -// Unlike other regular subprojects, pom.asc (signature file) generated by -// signing is not automatically picked up. It may be because gax-bom uses a -// pre-written pom.xml instead of using an auto-generated one. -// https://discuss.gradle.org/t/how-to-publish-artifacts-signatures-asc-files-using-maven-publish-plugin/7422 -task addPomAscFileToPublication { - onlyIf { mavenJavaBomAscOutputFile.exists() } - doLast { - publishing.publications.mavenJava(MavenPublication) { - artifact(mavenJavaBomAscOutputFile) { extension 'pom.asc' } - } - } -} -signMavenJavaPublication.finalizedBy addPomAscFileToPublication diff --git a/gax-java/gax-grpc/build.gradle b/gax-java/gax-grpc/build.gradle deleted file mode 100644 index a08cc0343e..0000000000 --- a/gax-java/gax-grpc/build.gradle +++ /dev/null @@ -1,50 +0,0 @@ -archivesBaseName = 'gax-grpc' - -// TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync) -project.version = "2.23.1-SNAPSHOT" // {x-version-update:gax-grpc:current} - -dependencies { - api(project(':gax'), - libraries['maven.com_google_api_api_common'], - libraries['maven.com_google_api_grpc_proto_google_common_protos'], - libraries['maven.com_google_auth_google_auth_library_credentials'], - libraries['maven.com_google_guava_guava'], - libraries['maven.io_grpc_grpc_api'], - libraries['maven.org_threeten_threetenbp']) - - implementation(libraries['maven.com_google_auth_google_auth_library_oauth2_http'], - libraries['maven.com_google_code_findbugs_jsr305'], - libraries['maven.io_grpc_grpc_alts'], - libraries['maven.io_grpc_grpc_auth'], - libraries['maven.io_grpc_grpc_netty_shaded'], - libraries['maven.io_grpc_grpc_protobuf'], - libraries['maven.io_grpc_grpc_stub']) - - runtimeOnly libraries['maven.io_grpc_grpc_googleapis'] - - compileOnly(libraries['maven.com_google_auto_value_auto_value'], - libraries['maven.org_graalvm_sdk']) - - testImplementation( project(':gax').sourceSets.test.output, - libraries['maven.junit_junit'], - libraries['maven.org_mockito_mockito_core'], - libraries['maven.com_google_truth_truth'], - libraries['maven.com_google_api_grpc_grpc_google_common_protos']) - - annotationProcessor libraries['maven.com_google_auto_value_auto_value'] - - shadowNoGuava libraries['maven.com_google_guava_guava'], - libraries['maven.io_grpc_grpc_stub'], - libraries['maven.io_grpc_grpc_protobuf'] -} - -jar { - manifest { - attributes 'Specification-Title': project.name, - 'Specification-Version': project.version, - 'Specification-Vendor': libraryVendor, - 'Implementation-Title': project.name, - 'Implementation-Version': project.version, - 'Implementation-Vendor': libraryVendor - } -} diff --git a/gax-java/gax-httpjson/build.gradle b/gax-java/gax-httpjson/build.gradle deleted file mode 100644 index c477406929..0000000000 --- a/gax-java/gax-httpjson/build.gradle +++ /dev/null @@ -1,43 +0,0 @@ -archivesBaseName = 'gax-httpjson' - -// TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync) -project.version = "0.108.1-SNAPSHOT" // {x-version-update:gax-httpjson:current} - -dependencies { - api(project(':gax'), - libraries['maven.com_google_api_api_common'], - libraries['maven.com_google_api_grpc_proto_google_common_protos'], - libraries['maven.com_google_auth_google_auth_library_credentials'], - libraries['maven.com_google_code_gson_gson'], - libraries['maven.com_google_guava_guava'], - libraries['maven.com_google_http_client_google_http_client'], - libraries['maven.com_google_protobuf'], - libraries['maven.org_threeten_threetenbp']) - - implementation(libraries['maven.com_google_auth_google_auth_library_oauth2_http'], - libraries['maven.com_google_code_findbugs_jsr305'], - libraries['maven.com_google_http_client_google_http_client_gson'], - libraries['maven.com_google_protobuf_java_util']) - - compileOnly libraries['maven.com_google_auto_value_auto_value'] - - testImplementation(project(':gax').sourceSets.test.output, - libraries['maven.junit_junit'], - libraries['maven.org_mockito_mockito_core'], - libraries['maven.com_google_truth_truth']) - - annotationProcessor libraries['maven.com_google_auto_value_auto_value'] - - shadowNoGuava libraries['maven.com_google_guava_guava'] -} - -jar { - manifest { - attributes 'Specification-Title': project.name, - 'Specification-Version': project.version, - 'Specification-Vendor': libraryVendor, - 'Implementation-Title': project.name, - 'Implementation-Version': project.version, - 'Implementation-Vendor': libraryVendor - } -} diff --git a/gax-java/gax/build.gradle b/gax-java/gax/build.gradle deleted file mode 100644 index 11ec880d6a..0000000000 --- a/gax-java/gax/build.gradle +++ /dev/null @@ -1,47 +0,0 @@ -archivesBaseName = "gax" - -// TODO: Populate this from dependencies.properties version property (for proper Gradle-Bazel sync) -project.version = "2.23.1-SNAPSHOT" // {x-version-update:gax:current} - -dependencies { - api(libraries['maven.com_google_api_api_common'], - libraries['maven.com_google_api_grpc_proto_google_common_protos'], - libraries['maven.com_google_auth_google_auth_library_credentials'], - libraries['maven.org_threeten_threetenbp']) - - implementation(libraries['maven.com_google_auth_google_auth_library_oauth2_http'], - libraries['maven.com_google_code_findbugs_jsr305'], - libraries['maven.com_google_guava_guava'], - libraries['maven.io_opencensus_opencensus_api']) - - compileOnly(libraries['maven.com_google_auto_value_auto_value'], - libraries['maven.org_graalvm_sdk']) - - testImplementation(libraries['maven.junit_junit'], - libraries['maven.org_mockito_mockito_core'], - libraries['maven.com_google_truth_truth'], - libraries['maven.com_google_auto_value_auto_value'], - libraries['maven.org_graalvm_sdk']) - - annotationProcessor libraries['maven.com_google_auto_value_auto_value'] - testAnnotationProcessor libraries['maven.com_google_auto_value_auto_value'] - - shadowNoGuava libraries['maven.com_google_guava_guava'] -} - -processResources { - filesMatching('dependencies.properties') { - expand('project': project) - } -} - -jar { - manifest { - attributes 'Specification-Title': project.name, - 'Specification-Version': project.version, - 'Specification-Vendor': libraryVendor, - 'Implementation-Title': project.name, - 'Implementation-Version': project.version, - 'Implementation-Vendor': libraryVendor - } -} diff --git a/gax-java/gradle/wrapper/gradle-wrapper.jar b/gax-java/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 943f0cbfa754578e88a3dae77fce6e3dea56edbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61574 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 ScNgau(U?ep-K_E5zy1%ZQTdPn diff --git a/gax-java/gradle/wrapper/gradle-wrapper.properties b/gax-java/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index f398c33c4b..0000000000 --- a/gax-java/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip -networkTimeout=10000 -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/gax-java/gradlew b/gax-java/gradlew deleted file mode 100755 index 65dcd68d65..0000000000 --- a/gax-java/gradlew +++ /dev/null @@ -1,244 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# 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. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/gax-java/gradlew.bat b/gax-java/gradlew.bat deleted file mode 100644 index 6689b85bee..0000000000 --- a/gax-java/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/gax-java/settings.gradle b/gax-java/settings.gradle deleted file mode 100644 index 52f23d4bfd..0000000000 --- a/gax-java/settings.gradle +++ /dev/null @@ -1,4 +0,0 @@ -include "gax" -include "gax-bom" -include "gax-grpc" -include "gax-httpjson" diff --git a/java-common-protos/grpc-google-common-protos/build.gradle b/java-common-protos/grpc-google-common-protos/build.gradle deleted file mode 100644 index 7031601914..0000000000 --- a/java-common-protos/grpc-google-common-protos/build.gradle +++ /dev/null @@ -1,49 +0,0 @@ -buildscript { - repositories { - mavenCentral() - } -} - -apply plugin: 'java' - -description = 'GRPC library for grpc-google-common-protos' -group = 'com.google.api.grpc' -version = '1.17.0' -sourceCompatibility = 1.7 -targetCompatibility = 1.7 - -repositories { - mavenCentral() - mavenLocal() -} - -dependencies { - compile 'io.grpc:grpc-stub:1.52.1' - compile 'io.grpc:grpc-protobuf:1.52.1' - compile project(':proto-google-common-protos') -} - -sourceSets { - main { - java { - srcDir 'src/main/java' - } - } -} - -task javadocJar(type: Jar) { - classifier = 'javadoc' - from javadoc -} - -task sourcesJar(type: Jar) { - classifier = 'sources' - from sourceSets.main.allSource -} - -artifacts { - archives javadocJar, sourcesJar -} - -compileJava.options.encoding = 'UTF-8' -javadoc.options.encoding = 'UTF-8' diff --git a/java-common-protos/proto-google-common-protos/build.gradle b/java-common-protos/proto-google-common-protos/build.gradle deleted file mode 100644 index 5a72944b54..0000000000 --- a/java-common-protos/proto-google-common-protos/build.gradle +++ /dev/null @@ -1,50 +0,0 @@ -buildscript { - repositories { - mavenCentral() - } -} - -apply plugin: 'java' - -description = 'PROTO library for proto-google-common-protos' -group = 'com.google.api.grpc' -version = '1.17.0' -sourceCompatibility = 1.7 -targetCompatibility = 1.7 - -repositories { - mavenCentral() - mavenLocal() -} - -dependencies { - compile 'com.google.protobuf:protobuf-java:3.21.12' -} - -sourceSets { - main { - resources { - srcDir 'src/main/proto' - } - java { - srcDir 'src/main/java' - } - } -} - -task javadocJar(type: Jar) { - classifier = 'javadoc' - from javadoc -} - -task sourcesJar(type: Jar) { - classifier = 'sources' - from sourceSets.main.allSource -} - -artifacts { - archives javadocJar, sourcesJar -} - -compileJava.options.encoding = 'UTF-8' -javadoc.options.encoding = 'UTF-8' diff --git a/java-iam/grpc-google-iam-v1/build.gradle b/java-iam/grpc-google-iam-v1/build.gradle deleted file mode 100644 index c49f8891a6..0000000000 --- a/java-iam/grpc-google-iam-v1/build.gradle +++ /dev/null @@ -1,49 +0,0 @@ -buildscript { - repositories { - mavenCentral() - } -} - -apply plugin: 'java' - -description = 'GRPC library for grpc-google-iam-v1' -group = 'com.google.api.grpc' -version = "0.13.0" -sourceCompatibility = 1.7 -targetCompatibility = 1.7 - -repositories { - mavenCentral() - mavenLocal() -} - -dependencies { - compile 'io.grpc:grpc-stub:1.52.1' - compile 'io.grpc:grpc-protobuf:1.52.1' - compile project(':proto-google-iam-v1') -} - -sourceSets { - main { - java { - srcDir 'src/main/java' - } - } -} - -task javadocJar(type: Jar) { - classifier = 'javadoc' - from javadoc -} - -task sourcesJar(type: Jar) { - classifier = 'sources' - from sourceSets.main.allSource -} - -artifacts { - archives javadocJar, sourcesJar -} - -compileJava.options.encoding = 'UTF-8' -javadoc.options.encoding = 'UTF-8' \ No newline at end of file diff --git a/java-iam/proto-google-iam-v1/build.gradle b/java-iam/proto-google-iam-v1/build.gradle deleted file mode 100644 index 611796f64f..0000000000 --- a/java-iam/proto-google-iam-v1/build.gradle +++ /dev/null @@ -1,52 +0,0 @@ -buildscript { - repositories { - mavenCentral() - } -} - -apply plugin: 'java' - -description = 'PROTO library for proto-google-iam-v1' -group = 'com.google.api.grpc' -version = "0.13.0" -sourceCompatibility = 1.7 -targetCompatibility = 1.7 - -repositories { - mavenCentral() - mavenLocal() -} - -dependencies { - compile 'com.google.protobuf:protobuf-java:3.21.12' - compile 'com.google.api:api-common:2.4.0' - compile project(':proto-google-common-protos') -} - -sourceSets { - main { - resources { - srcDir 'src/main/proto' - } - java { - srcDir 'src/main/java' - } - } -} - -task javadocJar(type: Jar) { - classifier = 'javadoc' - from javadoc -} - -task sourcesJar(type: Jar) { - classifier = 'sources' - from sourceSets.main.allSource -} - -artifacts { - archives javadocJar, sourcesJar -} - -compileJava.options.encoding = 'UTF-8' -javadoc.options.encoding = 'UTF-8' \ No newline at end of file From db34e1d1cf952c61863ee71ebde3abb2671401c0 Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Wed, 8 Feb 2023 13:28:42 -0500 Subject: [PATCH 28/82] chore: updated gax-java contribution doc (#1334) Removing unnecessary files --- api-common-java/CODE_OF_CONDUCT.md | 94 ------ api-common-java/CONTRIBUTING.md | 29 -- api-common-java/README.md | 15 - api-common-java/RELEASING.md | 79 ----- api-common-java/SECURITY.md | 7 - api-common-java/renovate.json | 74 ----- api-common-java/synth.metadata | 18 -- gax-java/CODE_OF_CONDUCT.md | 43 --- gax-java/CONTRIBUTING.md | 10 +- gax-java/RELEASING.md | 72 ----- gax-java/SECURITY.md | 7 - java-common-protos/CODE_OF_CONDUCT.md | 94 ------ java-common-protos/CONTRIBUTING.md | 92 ------ java-common-protos/renovate.json | 75 ----- java-common-protos/synth.metadata | 415 -------------------------- java-iam/CODE_OF_CONDUCT.md | 94 ------ java-iam/CONTRIBUTING.md | 92 ------ java-iam/README.md | 10 - java-iam/renovate.json | 75 ----- java-iam/synth.metadata | 125 -------- 20 files changed, 9 insertions(+), 1511 deletions(-) delete mode 100644 api-common-java/CODE_OF_CONDUCT.md delete mode 100644 api-common-java/CONTRIBUTING.md delete mode 100644 api-common-java/RELEASING.md delete mode 100644 api-common-java/SECURITY.md delete mode 100644 api-common-java/renovate.json delete mode 100644 api-common-java/synth.metadata delete mode 100644 gax-java/CODE_OF_CONDUCT.md delete mode 100644 gax-java/RELEASING.md delete mode 100644 gax-java/SECURITY.md delete mode 100644 java-common-protos/CODE_OF_CONDUCT.md delete mode 100644 java-common-protos/CONTRIBUTING.md delete mode 100644 java-common-protos/renovate.json delete mode 100644 java-common-protos/synth.metadata delete mode 100644 java-iam/CODE_OF_CONDUCT.md delete mode 100644 java-iam/CONTRIBUTING.md delete mode 100644 java-iam/renovate.json delete mode 100644 java-iam/synth.metadata diff --git a/api-common-java/CODE_OF_CONDUCT.md b/api-common-java/CODE_OF_CONDUCT.md deleted file mode 100644 index 2add2547a8..0000000000 --- a/api-common-java/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,94 +0,0 @@ - -# Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of -experience, education, socio-economic status, nationality, personal appearance, -race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, or to ban temporarily or permanently any -contributor for other behaviors that they deem inappropriate, threatening, -offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -This Code of Conduct also applies outside the project spaces when the Project -Steward has a reasonable belief that an individual's behavior may have a -negative impact on the project or its community. - -## Conflict Resolution - -We do not believe that all conflict is bad; healthy debate and disagreement -often yield positive results. However, it is never okay to be disrespectful or -to engage in behavior that violates the project’s code of conduct. - -If you see someone violating the code of conduct, you are encouraged to address -the behavior directly with those involved. Many issues can be resolved quickly -and easily, and this gives people more control over the outcome of their -dispute. If you are unable to resolve the matter for any reason, or if the -behavior is threatening or harassing, report it. We are dedicated to providing -an environment where participants feel welcome and safe. - -Reports should be directed to *googleapis-stewards@google.com*, the -Project Steward(s) for *Google Cloud Client Libraries*. It is the Project Steward’s duty to -receive and address reported violations of the code of conduct. They will then -work with a committee consisting of representatives from the Open Source -Programs Office and the Google Open Source Strategy team. If for any reason you -are uncomfortable reaching out to the Project Steward, please email -opensource@google.com. - -We will investigate every complaint, but you may not receive a direct response. -We will use our discretion in determining when and how to follow up on reported -incidents, which may range from not taking action to permanent expulsion from -the project and project-sponsored spaces. We will notify the accused of the -report and provide them an opportunity to discuss it before any action is taken. -The identity of the reporter will be omitted from the details of the report -supplied to the accused. In potentially harmful situations, such as ongoing -harassment or threats to anyone's safety, we may take action without notice. - -## Attribution - -This Code of Conduct is adapted from the Contributor Covenant, version 1.4, -available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html \ No newline at end of file diff --git a/api-common-java/CONTRIBUTING.md b/api-common-java/CONTRIBUTING.md deleted file mode 100644 index c6877c550e..0000000000 --- a/api-common-java/CONTRIBUTING.md +++ /dev/null @@ -1,29 +0,0 @@ -# How to Contribute - -Want to contribute? Great! First, read this page (including the small print at the end). - -### Before you contribute -Before we can use your code, you must sign the -[Google Individual Contributor License Agreement] -(https://cla.developers.google.com/about/google-individual) -(CLA), which you can do online. The CLA is necessary mainly because you own the -copyright to your changes, even after your contribution becomes part of our -codebase, so we need your permission to use and distribute your code. We also -need to be sure of various other things—for instance that you'll tell us if you -know that your code infringes on other people's patents. You don't have to sign -the CLA until after you've submitted your code for review and a member has -approved it, but you must do it before we can put your code into our codebase. -Before you start working on a larger contribution, you should get in touch with -us first through the issue tracker with your idea so that we can help out and -possibly guide you. Coordinating up front makes it much easier to avoid -frustration later on. - -### Code reviews -All submissions, including submissions by project members, require review. We -use Github pull requests for this purpose. - -### The small print -Contributions made by corporations are covered by a different agreement than -the one above, the -[Software Grant and Corporate Contributor License Agreement] -(https://cla.developers.google.com/about/google-corporate). diff --git a/api-common-java/README.md b/api-common-java/README.md index 765a6d28cd..50419b0119 100644 --- a/api-common-java/README.md +++ b/api-common-java/README.md @@ -13,14 +13,6 @@ APIs. It currently contains the following packages: formatted as Google API resource names. - resourcenames: Resource Name library used by generated resource name types -> For new and existing Developers/ Contributors: -> -> In December 2022, api-common-java's build tool has been migrated from gradle to maven. -> Gradle related files are no longer being maintained and will be removed. -> -> The artifact coordinates in Maven Central (`{{ group_id }}:{{ artifact_id }}`) remain the same. - - Java Versions ------------- @@ -31,13 +23,6 @@ The build produces Java bytecode targeted for Java 8. The project uses Maven to build. -Contributing ------------- - -Contributions to this library are always welcome and highly encouraged. - -See the [CONTRIBUTING] documentation for more information on how to get started. - Versioning ---------- diff --git a/api-common-java/RELEASING.md b/api-common-java/RELEASING.md deleted file mode 100644 index 9f8e308bba..0000000000 --- a/api-common-java/RELEASING.md +++ /dev/null @@ -1,79 +0,0 @@ -One-time setup -============== - -Set up Sonatype Account ------------------------ -* Sign up for a Sonatype JIRA account [here](https://issues.sonatype.org) -* Click *Sign Up* in the login box, follow instructions - -Get access to repository ------------------------- -* Go to [community support](https://issues.sonatype.org/browse/OSSRH) -* Ask for publish rights by creating an issue similar to [this one](https://issues.sonatype.org/browse/OSSRH-32031) - * You must be logged in to create a new issue - * Use the *Create* button at the top tab - -* Generate the key `gpg --gen-key` - * Keep the defaults, but specify a passphrase - -* Determine your `gpg` version: `gpg -- version` - -* Find the ID of your public key - * If you're using GPG version 1.y.z, `gpg --list-secret-keys` - * Look for the line with format `sec 2048R/ABCDEFGH 2015-11-17` - * The `ABCDEFGH` is the ID for your public key - * If you're using GPG version 2.y.z `gpg --list-secret-keys --keyid-format LONG` - * Look for line with format `sec rsa2048/ABCDEFGHIJKLMNOP` - * The `ABCDEFGHIJKLMNOP` is the ID. It is 16-byte long, but Gradle - only support 8-byte keys. Use the *last* 8 bytes of the key when - following the rest of this document. - * `gpg --export-secret-keys $HOME/.gnupg/secring.gpg` - -* Upload your public key to a public server: `gpg --send-keys --keyserver hkp://pgp.mit.edu ` - -Add deploy credential settings ------------------------- -* Create a settings file at `$HOME/.gradle/gradle.properties` with your key information and your sonatype username/password - -``` -signing.keyId= -signing.password= -signing.secretKeyRingFile=/usr/local/google/home//.gnupg/secring.gpg - -ossrhUsername= -ossrhPassword= -``` - -To prepare a release -==================== - -Update version and deploy to Sonatype -------------------------------------- -1. Update `version.txt` to the release version you want -2. Run `./gradlew stageRelease` to: - * Regenerate `gh-pages` branch containing Javadocs - * Stage artifacts on Sonatype: to the staging repository if "-SNAPSHOT" is *not* included in the version; otherwise to the snapshot repository only -3. Submit a pull request, get it reviewed, and submit - -Publish the release -------------------- -1. Run `./gradlew finalizeRelease` - * Note: this will release **ALL** versions that have been staged to Sonatype: - if you have staged versions you do not intend to release, remove these first - from the [Nexus Repository Manager](https://oss.sonatype.org/) by logging in - (upper right) and browsing staging repositories (left panel) -2. It will take some time (~10 min to ~8 hours) for the package to transition -3. Publish a new release on Github: - * Go to the [releases page](https://github.com/googleapis/api-common-java/releases) and click "Draft a new release" - in order to start a new draft. - * Make sure the "Tag Version" is `vX.Y.Z` and the "Release Title" is `X.Y.Z`, where `X.Y.Z` is the release - version as listed in the `version.txt` files. - * Add the commits since the last release into the release draft. Try to group them into sections with related - changes. Anything that is a breaking change needs to be marked with `*breaking change*`. Such changes are - only allowed for alpha/beta modules and `@BetaApi` features. - * Ensure that the format is consistent with previous releases. After adding any missing updates and - reformatting as necessary, publish the draft. - -Bump development version ------------------------- -1. Update `version.txt` to the following "-SNAPSHOT" version diff --git a/api-common-java/SECURITY.md b/api-common-java/SECURITY.md deleted file mode 100644 index 8b58ae9c01..0000000000 --- a/api-common-java/SECURITY.md +++ /dev/null @@ -1,7 +0,0 @@ -# Security Policy - -To report a security issue, please use [g.co/vulnz](https://g.co/vulnz). - -The Google Security Team will respond within 5 working days of your report on g.co/vulnz. - -We use g.co/vulnz for our intake, and do coordination and disclosure here using GitHub Security Advisory to privately discuss and fix the issue. diff --git a/api-common-java/renovate.json b/api-common-java/renovate.json deleted file mode 100644 index 0e82ced57a..0000000000 --- a/api-common-java/renovate.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "extends": [ - ":separateMajorReleases", - ":combinePatchMinorReleases", - ":ignoreUnstable", - ":prImmediately", - ":updateNotScheduled", - ":automergeDisabled", - ":ignoreModulesAndTests", - ":maintainLockFilesDisabled", - ":autodetectPinVersions" - ], - "ignorePaths": [".kokoro/requirements.txt"], - "packageRules": [ - { - "packagePatterns": [ - "^com.google.guava:" - ], - "versionScheme": "docker" - }, - { - "packagePatterns": [ - "*" - ], - "semanticCommitType": "deps", - "semanticCommitScope": null - }, - { - "packagePatterns": [ - "^org.apache.maven", - "^org.jacoco:", - "^org.codehaus.mojo:", - "^org.sonatype.plugins:", - "^com.coveo:", - "^com.google.cloud:google-cloud-shared-config" - ], - "semanticCommitType": "build", - "semanticCommitScope": "deps" - }, - { - "packagePatterns": [ - "^com.google.api:api-common", - "^com.google.cloud:libraries-bom", - "^com.google.cloud.samples:shared-configuration" - ], - "semanticCommitType": "chore", - "semanticCommitScope": "deps" - }, - { - "packagePatterns": [ - "^junit:junit", - "^com.google.truth:truth", - "^org.mockito:mockito-core", - "^org.objenesis:objenesis" - ], - "semanticCommitType": "test", - "semanticCommitScope": "deps" - }, - { - "packagePatterns": [ - "^com.google.cloud:google-cloud-" - ], - "ignoreUnstable": false - }, - { - "packagePatterns": [ - "^com.fasterxml.jackson.core" - ], - "groupName": "jackson dependencies" - } - ], - "semanticCommits": true, - "masterIssue": true -} diff --git a/api-common-java/synth.metadata b/api-common-java/synth.metadata deleted file mode 100644 index b8bf18aed1..0000000000 --- a/api-common-java/synth.metadata +++ /dev/null @@ -1,18 +0,0 @@ -{ - "sources": [ - { - "git": { - "name": ".", - "remote": "git@github.com:googleapis/api-common-java.git", - "sha": "7014db17904a165c78fbda1284d433b38e839876" - } - }, - { - "git": { - "name": "synthtool", - "remote": "https://github.com/googleapis/synthtool.git", - "sha": "5a6f30b8bb7672cf237c4f75d5aa96bfba170e7f" - } - } - ] -} \ No newline at end of file diff --git a/gax-java/CODE_OF_CONDUCT.md b/gax-java/CODE_OF_CONDUCT.md deleted file mode 100644 index 46b2a08ea6..0000000000 --- a/gax-java/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,43 +0,0 @@ -# Contributor Code of Conduct - -As contributors and maintainers of this project, -and in the interest of fostering an open and welcoming community, -we pledge to respect all people who contribute through reporting issues, -posting feature requests, updating documentation, -submitting pull requests or patches, and other activities. - -We are committed to making participation in this project -a harassment-free experience for everyone, -regardless of level of experience, gender, gender identity and expression, -sexual orientation, disability, personal appearance, -body size, race, ethnicity, age, religion, or nationality. - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery -* Personal attacks -* Trolling or insulting/derogatory comments -* Public or private harassment -* Publishing other's private information, -such as physical or electronic -addresses, without explicit permission -* Other unethical or unprofessional conduct. - -Project maintainers have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct. -By adopting this Code of Conduct, -project maintainers commit themselves to fairly and consistently -applying these principles to every aspect of managing this project. -Project maintainers who do not follow or enforce the Code of Conduct -may be permanently removed from the project team. - -This code of conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. - -Instances of abusive, harassing, or otherwise unacceptable behavior -may be reported by opening an issue -or contacting one or more of the project maintainers. - -This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0, -available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/) diff --git a/gax-java/CONTRIBUTING.md b/gax-java/CONTRIBUTING.md index f39ea3e174..e698c822b7 100644 --- a/gax-java/CONTRIBUTING.md +++ b/gax-java/CONTRIBUTING.md @@ -24,7 +24,15 @@ use Github pull requests for this purpose. To build GAX: ```sh -mvn clean install +# Go to the repository root +cd gapic-generator-java + +# Install dependency modules to local Maven repository. Note that +# gapic-generator-java module is not a dependency of gax-java +mvn -B -ntp install -DskipTests --projects '!gapic-generator-java,!gax-java' + +# Build and install gax-java +mvn clean install -f gax-java ``` ### The small print diff --git a/gax-java/RELEASING.md b/gax-java/RELEASING.md deleted file mode 100644 index 37e4b20444..0000000000 --- a/gax-java/RELEASING.md +++ /dev/null @@ -1,72 +0,0 @@ -One-time setup -============== - -Set up Sonatype Account ------------------------ -* Sign up for a Sonatype JIRA account [here](https://issues.sonatype.org) -* Click *Sign Up* in the login box, follow instructions - -Get access to repository ------------------------- -* Go to [community support](https://issues.sonatype.org/browse/OSSRH) -* Ask for publish rights by creating an issue similar to [this one](https://issues.sonatype.org/browse/OSSRH-32031) - * You must be logged in to create a new issue - * Use the *Create* button at the top tab - -* Generate the key `gpg --gen-key` - * Keep the defaults, but specify a passphrase - -* Determine your `gpg` version: `gpg --version` - -* Find the ID of your public key - * If you're using GPG version 1.y.z, `gpg --list-secret-keys` - * Look for the line with format `sec 2048R/ABCDEFGH 2015-11-17` - * The `ABCDEFGH` is the ID for your public key - * If you're using GPG version 2.y.z `gpg --list-secret-keys --keyid-format LONG` - * Look for line with format `sec rsa2048/ABCDEFGHIJKLMNOP` - * The `ABCDEFGHIJKLMNOP` is the ID. It is 16-byte long, but Gradle - only support 8-byte keys. Use the *last* 8 bytes of the key when - following the rest of this document. - * `gpg --export-secret-keys > $HOME/.gnupg/secring.gpg` - -* Upload your public key to a public server: `gpg --send-keys --keyserver hkp://pgp.mit.edu ` - -Add deploy credential settings ------------------------- -* Create a settings file at `$HOME/.gradle/gradle.properties` with your key information and your sonatype username/password - -``` -signing.keyId= -signing.password= -signing.secretKeyRingFile=/usr/local/google/home//.gnupg/secring.gpg - -ossrhUsername= -ossrhPassword= -``` - -Install releasetool -------------------- -See [releasetool](https://github.com/googleapis/releasetool) for installation instructions. You will -need python 3.6+ to run this tool. - -To prepare a release -==================== - -Update version and deploy to Sonatype -------------------------------------- -1. Run `releasetool start`. Select "minor" or "patch" for the release type. This will bump the - artifact versions, ask you to edit release notes, and create the release pull request. When - prompted, choose to autorelease. - * Note: be sure to make these notes nice as they will be used for the release notes as well. -2. Request a review on the PR. -3. Submit the PR. -4. Automation will run in the background to handle the release. -5. It will take some time (~10 min to ~8 hours) for the package to transition -6. Automation will publish a new release on Github using releasetool and publish javadocs to - https://googleapis.dev/java/gax/latest. - -Bump development version ------------------------- -1. Run `releasetool start` again, but specify "snapshot" when prompted for the type of release. - This will bump the artifact versions and create a new snapshot pull request. -2. Review and submit the PR. diff --git a/gax-java/SECURITY.md b/gax-java/SECURITY.md deleted file mode 100644 index 8b58ae9c01..0000000000 --- a/gax-java/SECURITY.md +++ /dev/null @@ -1,7 +0,0 @@ -# Security Policy - -To report a security issue, please use [g.co/vulnz](https://g.co/vulnz). - -The Google Security Team will respond within 5 working days of your report on g.co/vulnz. - -We use g.co/vulnz for our intake, and do coordination and disclosure here using GitHub Security Advisory to privately discuss and fix the issue. diff --git a/java-common-protos/CODE_OF_CONDUCT.md b/java-common-protos/CODE_OF_CONDUCT.md deleted file mode 100644 index 2add2547a8..0000000000 --- a/java-common-protos/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,94 +0,0 @@ - -# Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of -experience, education, socio-economic status, nationality, personal appearance, -race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, or to ban temporarily or permanently any -contributor for other behaviors that they deem inappropriate, threatening, -offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -This Code of Conduct also applies outside the project spaces when the Project -Steward has a reasonable belief that an individual's behavior may have a -negative impact on the project or its community. - -## Conflict Resolution - -We do not believe that all conflict is bad; healthy debate and disagreement -often yield positive results. However, it is never okay to be disrespectful or -to engage in behavior that violates the project’s code of conduct. - -If you see someone violating the code of conduct, you are encouraged to address -the behavior directly with those involved. Many issues can be resolved quickly -and easily, and this gives people more control over the outcome of their -dispute. If you are unable to resolve the matter for any reason, or if the -behavior is threatening or harassing, report it. We are dedicated to providing -an environment where participants feel welcome and safe. - -Reports should be directed to *googleapis-stewards@google.com*, the -Project Steward(s) for *Google Cloud Client Libraries*. It is the Project Steward’s duty to -receive and address reported violations of the code of conduct. They will then -work with a committee consisting of representatives from the Open Source -Programs Office and the Google Open Source Strategy team. If for any reason you -are uncomfortable reaching out to the Project Steward, please email -opensource@google.com. - -We will investigate every complaint, but you may not receive a direct response. -We will use our discretion in determining when and how to follow up on reported -incidents, which may range from not taking action to permanent expulsion from -the project and project-sponsored spaces. We will notify the accused of the -report and provide them an opportunity to discuss it before any action is taken. -The identity of the reporter will be omitted from the details of the report -supplied to the accused. In potentially harmful situations, such as ongoing -harassment or threats to anyone's safety, we may take action without notice. - -## Attribution - -This Code of Conduct is adapted from the Contributor Covenant, version 1.4, -available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html \ No newline at end of file diff --git a/java-common-protos/CONTRIBUTING.md b/java-common-protos/CONTRIBUTING.md deleted file mode 100644 index b65dd279c9..0000000000 --- a/java-common-protos/CONTRIBUTING.md +++ /dev/null @@ -1,92 +0,0 @@ -# How to Contribute - -We'd love to accept your patches and contributions to this project. There are -just a few small guidelines you need to follow. - -## Contributor License Agreement - -Contributions to this project must be accompanied by a Contributor License -Agreement. You (or your employer) retain the copyright to your contribution; -this simply gives us permission to use and redistribute your contributions as -part of the project. Head over to to see -your current agreements on file or to sign a new one. - -You generally only need to submit a CLA once, so if you've already submitted one -(even if it was for a different project), you probably don't need to do it -again. - -## Code reviews - -All submissions, including submissions by project members, require review. We -use GitHub pull requests for this purpose. Consult -[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more -information on using pull requests. - -## Community Guidelines - -This project follows -[Google's Open Source Community Guidelines](https://opensource.google.com/conduct/). - -## Building the project - -To build, package, and run all unit tests run the command - -``` -mvn clean verify -``` - -### Running Integration tests - -To include integration tests when building the project, you need access to -a GCP Project with a valid service account. - -For instructions on how to generate a service account and corresponding -credentials JSON see: [Creating a Service Account][1]. - -Then run the following to build, package, run all unit tests and run all -integration tests. - -```bash -export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service/account.json -mvn -Penable-integration-tests clean verify -``` - -## Code Samples - -All code samples must be in compliance with the [java sample formatting guide][3]. -Code Samples must be bundled in separate Maven modules. - -The samples must be separate from the primary project for a few reasons: -1. Primary projects have a minimum Java version of Java 8 whereas samples can have - Java version of Java 11. Due to this we need the ability to - selectively exclude samples from a build run. -2. Many code samples depend on external GCP services and need - credentials to access the service. -3. Code samples are not released as Maven artifacts and must be excluded from - release builds. - -### Building - -```bash -mvn clean verify -``` - -Some samples require access to GCP services and require a service account: - -```bash -export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service/account.json -mvn clean verify -``` - -### Code Formatting - -Code in this repo is formatted with -[google-java-format](https://github.com/google/google-java-format). -To run formatting on your project, you can run: -``` -mvn com.coveo:fmt-maven-plugin:format -``` - -[1]: https://cloud.google.com/docs/authentication/getting-started#creating_a_service_account -[2]: https://maven.apache.org/settings.html#Active_Profiles -[3]: https://github.com/GoogleCloudPlatform/java-docs-samples/blob/main/SAMPLE_FORMAT.md \ No newline at end of file diff --git a/java-common-protos/renovate.json b/java-common-protos/renovate.json deleted file mode 100644 index 642980d5c3..0000000000 --- a/java-common-protos/renovate.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "extends": [ - ":separateMajorReleases", - ":combinePatchMinorReleases", - ":ignoreUnstable", - ":prImmediately", - ":updateNotScheduled", - ":automergeDisabled", - ":ignoreModulesAndTests", - ":maintainLockFilesDisabled", - ":autodetectPinVersions" - ], - "ignorePaths": [".kokoro/requirements.txt"], - "packageRules": [ - { - "packagePatterns": [ - "^com.google.guava:" - ], - "versionScheme": "docker" - }, - { - "packagePatterns": [ - "*" - ], - "semanticCommitType": "deps", - "semanticCommitScope": null - }, - { - "packagePatterns": [ - "^org.apache.maven", - "^org.jacoco:", - "^org.codehaus.mojo:", - "^org.sonatype.plugins:", - "^com.coveo:", - "^com.google.cloud:google-cloud-shared-config" - ], - "semanticCommitType": "build", - "semanticCommitScope": "deps" - }, - { - "packagePatterns": [ - "^com.google.api.grpc:proto-google-common-protos", - "^com.google.cloud:libraries-bom", - "^com.google.cloud.samples:shared-configuration" - ], - "semanticCommitType": "chore", - "semanticCommitScope": "deps" - }, - { - "packagePatterns": [ - "^junit:junit", - "^com.google.truth:truth", - "^org.mockito:mockito-core", - "^org.objenesis:objenesis", - "^com.google.cloud:google-cloud-conformance-tests" - ], - "semanticCommitType": "test", - "semanticCommitScope": "deps" - }, - { - "packagePatterns": [ - "^com.google.cloud:google-cloud-" - ], - "ignoreUnstable": false - }, - { - "packagePatterns": [ - "^com.fasterxml.jackson.core" - ], - "groupName": "jackson dependencies" - } - ], - "semanticCommits": true, - "dependencyDashboard": true -} diff --git a/java-common-protos/synth.metadata b/java-common-protos/synth.metadata deleted file mode 100644 index 1a268ee46a..0000000000 --- a/java-common-protos/synth.metadata +++ /dev/null @@ -1,415 +0,0 @@ -{ - "sources": [ - { - "git": { - "name": ".", - "remote": "https://github.com/googleapis/java-common-protos.git", - "sha": "607b1666178627065579d8471f41213d59d7e5d1" - } - }, - { - "git": { - "name": "googleapis", - "remote": "https://github.com/googleapis/googleapis.git", - "sha": "2921f9fb3bfbd16f6b2da0104373e2b47a80a65e", - "internalRef": "408420890" - } - }, - { - "git": { - "name": "synthtool", - "remote": "https://github.com/googleapis/synthtool.git", - "sha": "7a7c48f96e90d1cdc3ab0cc8293279fdcb10fd36" - } - } - ], - "generatedFiles": [ - ".github/CODEOWNERS", - ".github/ISSUE_TEMPLATE/bug_report.md", - ".github/ISSUE_TEMPLATE/feature_request.md", - ".github/ISSUE_TEMPLATE/support_request.md", - ".github/PULL_REQUEST_TEMPLATE.md", - ".github/blunderbuss.yml", - ".github/generated-files-bot.yml", - ".github/release-please.yml", - ".github/release-trigger.yml", - ".github/snippet-bot.yml", - ".github/sync-repo-settings.yaml", - ".github/trusted-contribution.yml", - ".github/workflows/approve-readme.yaml", - ".github/workflows/auto-release.yaml", - ".github/workflows/ci.yaml", - ".kokoro/build.bat", - ".kokoro/build.sh", - ".kokoro/coerce_logs.sh", - ".kokoro/common.cfg", - ".kokoro/common.sh", - ".kokoro/continuous/common.cfg", - ".kokoro/continuous/java8.cfg", - ".kokoro/nightly/common.cfg", - ".kokoro/nightly/integration.cfg", - ".kokoro/nightly/java11.cfg", - ".kokoro/nightly/java7.cfg", - ".kokoro/nightly/java8-osx.cfg", - ".kokoro/nightly/java8-win.cfg", - ".kokoro/nightly/java8.cfg", - ".kokoro/nightly/samples.cfg", - ".kokoro/populate-secrets.sh", - ".kokoro/presubmit/clirr.cfg", - ".kokoro/presubmit/common.cfg", - ".kokoro/presubmit/dependencies.cfg", - ".kokoro/presubmit/graalvm-native.cfg", - ".kokoro/presubmit/integration.cfg", - ".kokoro/presubmit/java11.cfg", - ".kokoro/presubmit/java7.cfg", - ".kokoro/presubmit/java8-osx.cfg", - ".kokoro/presubmit/java8-win.cfg", - ".kokoro/presubmit/java8.cfg", - ".kokoro/presubmit/linkage-monitor.cfg", - ".kokoro/presubmit/lint.cfg", - ".kokoro/presubmit/samples.cfg", - ".kokoro/readme.sh", - ".kokoro/release/bump_snapshot.cfg", - ".kokoro/release/common.cfg", - ".kokoro/release/common.sh", - ".kokoro/release/drop.cfg", - ".kokoro/release/drop.sh", - ".kokoro/release/promote.cfg", - ".kokoro/release/promote.sh", - ".kokoro/release/publish_javadoc.cfg", - ".kokoro/release/publish_javadoc.sh", - ".kokoro/release/publish_javadoc11.cfg", - ".kokoro/release/publish_javadoc11.sh", - ".kokoro/release/snapshot.cfg", - ".kokoro/release/snapshot.sh", - ".kokoro/release/stage.cfg", - ".kokoro/release/stage.sh", - ".kokoro/trampoline.sh", - "CODE_OF_CONDUCT.md", - "CONTRIBUTING.md", - "LICENSE", - "SECURITY.md", - "codecov.yaml", - "grpc-google-common-protos/src/main/java/com/google/longrunning/OperationsGrpc.java", - "java.header", - "license-checks.xml", - "proto-google-common-protos/src/main/java/com/google/api/Advice.java", - "proto-google-common-protos/src/main/java/com/google/api/AdviceOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/AnnotationsProto.java", - "proto-google-common-protos/src/main/java/com/google/api/AuthProto.java", - "proto-google-common-protos/src/main/java/com/google/api/AuthProvider.java", - "proto-google-common-protos/src/main/java/com/google/api/AuthProviderOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/AuthRequirement.java", - "proto-google-common-protos/src/main/java/com/google/api/AuthRequirementOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/Authentication.java", - "proto-google-common-protos/src/main/java/com/google/api/AuthenticationOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/AuthenticationRule.java", - "proto-google-common-protos/src/main/java/com/google/api/AuthenticationRuleOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/Backend.java", - "proto-google-common-protos/src/main/java/com/google/api/BackendOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/BackendProto.java", - "proto-google-common-protos/src/main/java/com/google/api/BackendRule.java", - "proto-google-common-protos/src/main/java/com/google/api/BackendRuleOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/Billing.java", - "proto-google-common-protos/src/main/java/com/google/api/BillingOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/BillingProto.java", - "proto-google-common-protos/src/main/java/com/google/api/ChangeType.java", - "proto-google-common-protos/src/main/java/com/google/api/ClientProto.java", - "proto-google-common-protos/src/main/java/com/google/api/ConfigChange.java", - "proto-google-common-protos/src/main/java/com/google/api/ConfigChangeOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/ConfigChangeProto.java", - "proto-google-common-protos/src/main/java/com/google/api/ConsumerProto.java", - "proto-google-common-protos/src/main/java/com/google/api/Context.java", - "proto-google-common-protos/src/main/java/com/google/api/ContextOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/ContextProto.java", - "proto-google-common-protos/src/main/java/com/google/api/ContextRule.java", - "proto-google-common-protos/src/main/java/com/google/api/ContextRuleOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/Control.java", - "proto-google-common-protos/src/main/java/com/google/api/ControlOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/ControlProto.java", - "proto-google-common-protos/src/main/java/com/google/api/CustomHttpPattern.java", - "proto-google-common-protos/src/main/java/com/google/api/CustomHttpPatternOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/Distribution.java", - "proto-google-common-protos/src/main/java/com/google/api/DistributionOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/DistributionProto.java", - "proto-google-common-protos/src/main/java/com/google/api/Documentation.java", - "proto-google-common-protos/src/main/java/com/google/api/DocumentationOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/DocumentationProto.java", - "proto-google-common-protos/src/main/java/com/google/api/DocumentationRule.java", - "proto-google-common-protos/src/main/java/com/google/api/DocumentationRuleOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/Endpoint.java", - "proto-google-common-protos/src/main/java/com/google/api/EndpointOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/EndpointProto.java", - "proto-google-common-protos/src/main/java/com/google/api/ErrorReason.java", - "proto-google-common-protos/src/main/java/com/google/api/ErrorReasonProto.java", - "proto-google-common-protos/src/main/java/com/google/api/FieldBehavior.java", - "proto-google-common-protos/src/main/java/com/google/api/FieldBehaviorProto.java", - "proto-google-common-protos/src/main/java/com/google/api/Http.java", - "proto-google-common-protos/src/main/java/com/google/api/HttpBody.java", - "proto-google-common-protos/src/main/java/com/google/api/HttpBodyOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/HttpBodyProto.java", - "proto-google-common-protos/src/main/java/com/google/api/HttpOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/HttpProto.java", - "proto-google-common-protos/src/main/java/com/google/api/HttpRule.java", - "proto-google-common-protos/src/main/java/com/google/api/HttpRuleOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/JwtLocation.java", - "proto-google-common-protos/src/main/java/com/google/api/JwtLocationOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/LabelDescriptor.java", - "proto-google-common-protos/src/main/java/com/google/api/LabelDescriptorOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/LabelProto.java", - "proto-google-common-protos/src/main/java/com/google/api/LaunchStage.java", - "proto-google-common-protos/src/main/java/com/google/api/LaunchStageProto.java", - "proto-google-common-protos/src/main/java/com/google/api/LogDescriptor.java", - "proto-google-common-protos/src/main/java/com/google/api/LogDescriptorOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/LogProto.java", - "proto-google-common-protos/src/main/java/com/google/api/Logging.java", - "proto-google-common-protos/src/main/java/com/google/api/LoggingOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/LoggingProto.java", - "proto-google-common-protos/src/main/java/com/google/api/Metric.java", - "proto-google-common-protos/src/main/java/com/google/api/MetricDescriptor.java", - "proto-google-common-protos/src/main/java/com/google/api/MetricDescriptorOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/MetricOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/MetricProto.java", - "proto-google-common-protos/src/main/java/com/google/api/MetricRule.java", - "proto-google-common-protos/src/main/java/com/google/api/MetricRuleOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/MonitoredResource.java", - "proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceDescriptor.java", - "proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceDescriptorOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceMetadata.java", - "proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceMetadataOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/MonitoredResourceProto.java", - "proto-google-common-protos/src/main/java/com/google/api/Monitoring.java", - "proto-google-common-protos/src/main/java/com/google/api/MonitoringOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/MonitoringProto.java", - "proto-google-common-protos/src/main/java/com/google/api/OAuthRequirements.java", - "proto-google-common-protos/src/main/java/com/google/api/OAuthRequirementsOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/Page.java", - "proto-google-common-protos/src/main/java/com/google/api/PageOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/ProjectProperties.java", - "proto-google-common-protos/src/main/java/com/google/api/ProjectPropertiesOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/Property.java", - "proto-google-common-protos/src/main/java/com/google/api/PropertyOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/Quota.java", - "proto-google-common-protos/src/main/java/com/google/api/QuotaLimit.java", - "proto-google-common-protos/src/main/java/com/google/api/QuotaLimitOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/QuotaOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/QuotaProto.java", - "proto-google-common-protos/src/main/java/com/google/api/ResourceDescriptor.java", - "proto-google-common-protos/src/main/java/com/google/api/ResourceDescriptorOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/ResourceProto.java", - "proto-google-common-protos/src/main/java/com/google/api/ResourceReference.java", - "proto-google-common-protos/src/main/java/com/google/api/ResourceReferenceOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/RoutingParameter.java", - "proto-google-common-protos/src/main/java/com/google/api/RoutingParameterOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/RoutingProto.java", - "proto-google-common-protos/src/main/java/com/google/api/RoutingRule.java", - "proto-google-common-protos/src/main/java/com/google/api/RoutingRuleOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/Service.java", - "proto-google-common-protos/src/main/java/com/google/api/ServiceOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/ServiceProto.java", - "proto-google-common-protos/src/main/java/com/google/api/SourceInfo.java", - "proto-google-common-protos/src/main/java/com/google/api/SourceInfoOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/SourceInfoProto.java", - "proto-google-common-protos/src/main/java/com/google/api/SystemParameter.java", - "proto-google-common-protos/src/main/java/com/google/api/SystemParameterOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/SystemParameterProto.java", - "proto-google-common-protos/src/main/java/com/google/api/SystemParameterRule.java", - "proto-google-common-protos/src/main/java/com/google/api/SystemParameterRuleOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/SystemParameters.java", - "proto-google-common-protos/src/main/java/com/google/api/SystemParametersOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/Usage.java", - "proto-google-common-protos/src/main/java/com/google/api/UsageOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/UsageProto.java", - "proto-google-common-protos/src/main/java/com/google/api/UsageRule.java", - "proto-google-common-protos/src/main/java/com/google/api/UsageRuleOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/Visibility.java", - "proto-google-common-protos/src/main/java/com/google/api/VisibilityOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/api/VisibilityProto.java", - "proto-google-common-protos/src/main/java/com/google/api/VisibilityRule.java", - "proto-google-common-protos/src/main/java/com/google/api/VisibilityRuleOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/cloud/ExtendedOperationsProto.java", - "proto-google-common-protos/src/main/java/com/google/cloud/OperationResponseMapping.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/AuditLog.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/AuditLogOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/AuditLogProto.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthenticationInfo.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthenticationInfoOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthorizationInfo.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/AuthorizationInfoOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/BigQueryAuditMetadata.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/BigQueryAuditMetadataOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/BigQueryAuditMetadataProto.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/RequestMetadata.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/RequestMetadataOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/ResourceLocation.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/ResourceLocationOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/ServiceAccountDelegationInfo.java", - "proto-google-common-protos/src/main/java/com/google/cloud/audit/ServiceAccountDelegationInfoOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/geo/type/Viewport.java", - "proto-google-common-protos/src/main/java/com/google/geo/type/ViewportOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/geo/type/ViewportProto.java", - "proto-google-common-protos/src/main/java/com/google/logging/type/HttpRequest.java", - "proto-google-common-protos/src/main/java/com/google/logging/type/HttpRequestOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/logging/type/HttpRequestProto.java", - "proto-google-common-protos/src/main/java/com/google/logging/type/LogSeverity.java", - "proto-google-common-protos/src/main/java/com/google/logging/type/LogSeverityProto.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/CancelOperationRequest.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/CancelOperationRequestOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/DeleteOperationRequest.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/DeleteOperationRequestOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/GetOperationRequest.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/GetOperationRequestOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsRequest.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsRequestOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsResponse.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/ListOperationsResponseOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/Operation.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/OperationInfo.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/OperationInfoOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/OperationOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/OperationsProto.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/WaitOperationRequest.java", - "proto-google-common-protos/src/main/java/com/google/longrunning/WaitOperationRequestOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/rpc/BadRequest.java", - "proto-google-common-protos/src/main/java/com/google/rpc/BadRequestOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/rpc/Code.java", - "proto-google-common-protos/src/main/java/com/google/rpc/CodeProto.java", - "proto-google-common-protos/src/main/java/com/google/rpc/DebugInfo.java", - "proto-google-common-protos/src/main/java/com/google/rpc/DebugInfoOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/rpc/ErrorDetailsProto.java", - "proto-google-common-protos/src/main/java/com/google/rpc/ErrorInfo.java", - "proto-google-common-protos/src/main/java/com/google/rpc/ErrorInfoOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/rpc/Help.java", - "proto-google-common-protos/src/main/java/com/google/rpc/HelpOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/rpc/LocalizedMessage.java", - "proto-google-common-protos/src/main/java/com/google/rpc/LocalizedMessageOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/rpc/PreconditionFailure.java", - "proto-google-common-protos/src/main/java/com/google/rpc/PreconditionFailureOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/rpc/QuotaFailure.java", - "proto-google-common-protos/src/main/java/com/google/rpc/QuotaFailureOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/rpc/RequestInfo.java", - "proto-google-common-protos/src/main/java/com/google/rpc/RequestInfoOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/rpc/ResourceInfo.java", - "proto-google-common-protos/src/main/java/com/google/rpc/ResourceInfoOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/rpc/RetryInfo.java", - "proto-google-common-protos/src/main/java/com/google/rpc/RetryInfoOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/rpc/Status.java", - "proto-google-common-protos/src/main/java/com/google/rpc/StatusOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/rpc/StatusProto.java", - "proto-google-common-protos/src/main/java/com/google/rpc/context/AttributeContext.java", - "proto-google-common-protos/src/main/java/com/google/rpc/context/AttributeContextOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/rpc/context/AttributeContextProto.java", - "proto-google-common-protos/src/main/java/com/google/type/CalendarPeriod.java", - "proto-google-common-protos/src/main/java/com/google/type/CalendarPeriodProto.java", - "proto-google-common-protos/src/main/java/com/google/type/Color.java", - "proto-google-common-protos/src/main/java/com/google/type/ColorOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/type/ColorProto.java", - "proto-google-common-protos/src/main/java/com/google/type/Date.java", - "proto-google-common-protos/src/main/java/com/google/type/DateOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/type/DateProto.java", - "proto-google-common-protos/src/main/java/com/google/type/DateTime.java", - "proto-google-common-protos/src/main/java/com/google/type/DateTimeOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/type/DateTimeProto.java", - "proto-google-common-protos/src/main/java/com/google/type/DayOfWeek.java", - "proto-google-common-protos/src/main/java/com/google/type/DayOfWeekProto.java", - "proto-google-common-protos/src/main/java/com/google/type/Decimal.java", - "proto-google-common-protos/src/main/java/com/google/type/DecimalOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/type/DecimalProto.java", - "proto-google-common-protos/src/main/java/com/google/type/Expr.java", - "proto-google-common-protos/src/main/java/com/google/type/ExprOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/type/ExprProto.java", - "proto-google-common-protos/src/main/java/com/google/type/Fraction.java", - "proto-google-common-protos/src/main/java/com/google/type/FractionOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/type/FractionProto.java", - "proto-google-common-protos/src/main/java/com/google/type/Interval.java", - "proto-google-common-protos/src/main/java/com/google/type/IntervalOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/type/IntervalProto.java", - "proto-google-common-protos/src/main/java/com/google/type/LatLng.java", - "proto-google-common-protos/src/main/java/com/google/type/LatLngOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/type/LatLngProto.java", - "proto-google-common-protos/src/main/java/com/google/type/LocalizedText.java", - "proto-google-common-protos/src/main/java/com/google/type/LocalizedTextOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/type/LocalizedTextProto.java", - "proto-google-common-protos/src/main/java/com/google/type/Money.java", - "proto-google-common-protos/src/main/java/com/google/type/MoneyOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/type/MoneyProto.java", - "proto-google-common-protos/src/main/java/com/google/type/Month.java", - "proto-google-common-protos/src/main/java/com/google/type/MonthProto.java", - "proto-google-common-protos/src/main/java/com/google/type/PhoneNumber.java", - "proto-google-common-protos/src/main/java/com/google/type/PhoneNumberOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/type/PhoneNumberProto.java", - "proto-google-common-protos/src/main/java/com/google/type/PostalAddress.java", - "proto-google-common-protos/src/main/java/com/google/type/PostalAddressOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/type/PostalAddressProto.java", - "proto-google-common-protos/src/main/java/com/google/type/Quaternion.java", - "proto-google-common-protos/src/main/java/com/google/type/QuaternionOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/type/QuaternionProto.java", - "proto-google-common-protos/src/main/java/com/google/type/TimeOfDay.java", - "proto-google-common-protos/src/main/java/com/google/type/TimeOfDayOrBuilder.java", - "proto-google-common-protos/src/main/java/com/google/type/TimeOfDayProto.java", - "proto-google-common-protos/src/main/java/com/google/type/TimeZone.java", - "proto-google-common-protos/src/main/java/com/google/type/TimeZoneOrBuilder.java", - "proto-google-common-protos/src/main/proto/google/api/annotations.proto", - "proto-google-common-protos/src/main/proto/google/api/auth.proto", - "proto-google-common-protos/src/main/proto/google/api/backend.proto", - "proto-google-common-protos/src/main/proto/google/api/billing.proto", - "proto-google-common-protos/src/main/proto/google/api/client.proto", - "proto-google-common-protos/src/main/proto/google/api/config_change.proto", - "proto-google-common-protos/src/main/proto/google/api/consumer.proto", - "proto-google-common-protos/src/main/proto/google/api/context.proto", - "proto-google-common-protos/src/main/proto/google/api/control.proto", - "proto-google-common-protos/src/main/proto/google/api/distribution.proto", - "proto-google-common-protos/src/main/proto/google/api/documentation.proto", - "proto-google-common-protos/src/main/proto/google/api/endpoint.proto", - "proto-google-common-protos/src/main/proto/google/api/error_reason.proto", - "proto-google-common-protos/src/main/proto/google/api/field_behavior.proto", - "proto-google-common-protos/src/main/proto/google/api/http.proto", - "proto-google-common-protos/src/main/proto/google/api/httpbody.proto", - "proto-google-common-protos/src/main/proto/google/api/label.proto", - "proto-google-common-protos/src/main/proto/google/api/launch_stage.proto", - "proto-google-common-protos/src/main/proto/google/api/log.proto", - "proto-google-common-protos/src/main/proto/google/api/logging.proto", - "proto-google-common-protos/src/main/proto/google/api/metric.proto", - "proto-google-common-protos/src/main/proto/google/api/monitored_resource.proto", - "proto-google-common-protos/src/main/proto/google/api/monitoring.proto", - "proto-google-common-protos/src/main/proto/google/api/quota.proto", - "proto-google-common-protos/src/main/proto/google/api/resource.proto", - "proto-google-common-protos/src/main/proto/google/api/routing.proto", - "proto-google-common-protos/src/main/proto/google/api/service.proto", - "proto-google-common-protos/src/main/proto/google/api/source_info.proto", - "proto-google-common-protos/src/main/proto/google/api/system_parameter.proto", - "proto-google-common-protos/src/main/proto/google/api/usage.proto", - "proto-google-common-protos/src/main/proto/google/api/visibility.proto", - "proto-google-common-protos/src/main/proto/google/cloud/audit/audit_log.proto", - "proto-google-common-protos/src/main/proto/google/cloud/audit/bigquery_audit_metadata.proto", - "proto-google-common-protos/src/main/proto/google/cloud/common_resources.proto", - "proto-google-common-protos/src/main/proto/google/cloud/extended_operations.proto", - "proto-google-common-protos/src/main/proto/google/geo/type/viewport.proto", - "proto-google-common-protos/src/main/proto/google/logging/type/http_request.proto", - "proto-google-common-protos/src/main/proto/google/logging/type/log_severity.proto", - "proto-google-common-protos/src/main/proto/google/longrunning/operations.proto", - "proto-google-common-protos/src/main/proto/google/rpc/code.proto", - "proto-google-common-protos/src/main/proto/google/rpc/context/attribute_context.proto", - "proto-google-common-protos/src/main/proto/google/rpc/error_details.proto", - "proto-google-common-protos/src/main/proto/google/rpc/status.proto", - "proto-google-common-protos/src/main/proto/google/type/calendar_period.proto", - "proto-google-common-protos/src/main/proto/google/type/color.proto", - "proto-google-common-protos/src/main/proto/google/type/date.proto", - "proto-google-common-protos/src/main/proto/google/type/datetime.proto", - "proto-google-common-protos/src/main/proto/google/type/dayofweek.proto", - "proto-google-common-protos/src/main/proto/google/type/decimal.proto", - "proto-google-common-protos/src/main/proto/google/type/expr.proto", - "proto-google-common-protos/src/main/proto/google/type/fraction.proto", - "proto-google-common-protos/src/main/proto/google/type/interval.proto", - "proto-google-common-protos/src/main/proto/google/type/latlng.proto", - "proto-google-common-protos/src/main/proto/google/type/localized_text.proto", - "proto-google-common-protos/src/main/proto/google/type/money.proto", - "proto-google-common-protos/src/main/proto/google/type/month.proto", - "proto-google-common-protos/src/main/proto/google/type/phone_number.proto", - "proto-google-common-protos/src/main/proto/google/type/postal_address.proto", - "proto-google-common-protos/src/main/proto/google/type/quaternion.proto", - "proto-google-common-protos/src/main/proto/google/type/timeofday.proto", - "renovate.json" - ] -} \ No newline at end of file diff --git a/java-iam/CODE_OF_CONDUCT.md b/java-iam/CODE_OF_CONDUCT.md deleted file mode 100644 index 2add2547a8..0000000000 --- a/java-iam/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,94 +0,0 @@ - -# Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of -experience, education, socio-economic status, nationality, personal appearance, -race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, or to ban temporarily or permanently any -contributor for other behaviors that they deem inappropriate, threatening, -offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -This Code of Conduct also applies outside the project spaces when the Project -Steward has a reasonable belief that an individual's behavior may have a -negative impact on the project or its community. - -## Conflict Resolution - -We do not believe that all conflict is bad; healthy debate and disagreement -often yield positive results. However, it is never okay to be disrespectful or -to engage in behavior that violates the project’s code of conduct. - -If you see someone violating the code of conduct, you are encouraged to address -the behavior directly with those involved. Many issues can be resolved quickly -and easily, and this gives people more control over the outcome of their -dispute. If you are unable to resolve the matter for any reason, or if the -behavior is threatening or harassing, report it. We are dedicated to providing -an environment where participants feel welcome and safe. - -Reports should be directed to *googleapis-stewards@google.com*, the -Project Steward(s) for *Google Cloud Client Libraries*. It is the Project Steward’s duty to -receive and address reported violations of the code of conduct. They will then -work with a committee consisting of representatives from the Open Source -Programs Office and the Google Open Source Strategy team. If for any reason you -are uncomfortable reaching out to the Project Steward, please email -opensource@google.com. - -We will investigate every complaint, but you may not receive a direct response. -We will use our discretion in determining when and how to follow up on reported -incidents, which may range from not taking action to permanent expulsion from -the project and project-sponsored spaces. We will notify the accused of the -report and provide them an opportunity to discuss it before any action is taken. -The identity of the reporter will be omitted from the details of the report -supplied to the accused. In potentially harmful situations, such as ongoing -harassment or threats to anyone's safety, we may take action without notice. - -## Attribution - -This Code of Conduct is adapted from the Contributor Covenant, version 1.4, -available at -https://www.contributor-covenant.org/version/1/4/code-of-conduct.html \ No newline at end of file diff --git a/java-iam/CONTRIBUTING.md b/java-iam/CONTRIBUTING.md deleted file mode 100644 index b65dd279c9..0000000000 --- a/java-iam/CONTRIBUTING.md +++ /dev/null @@ -1,92 +0,0 @@ -# How to Contribute - -We'd love to accept your patches and contributions to this project. There are -just a few small guidelines you need to follow. - -## Contributor License Agreement - -Contributions to this project must be accompanied by a Contributor License -Agreement. You (or your employer) retain the copyright to your contribution; -this simply gives us permission to use and redistribute your contributions as -part of the project. Head over to to see -your current agreements on file or to sign a new one. - -You generally only need to submit a CLA once, so if you've already submitted one -(even if it was for a different project), you probably don't need to do it -again. - -## Code reviews - -All submissions, including submissions by project members, require review. We -use GitHub pull requests for this purpose. Consult -[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more -information on using pull requests. - -## Community Guidelines - -This project follows -[Google's Open Source Community Guidelines](https://opensource.google.com/conduct/). - -## Building the project - -To build, package, and run all unit tests run the command - -``` -mvn clean verify -``` - -### Running Integration tests - -To include integration tests when building the project, you need access to -a GCP Project with a valid service account. - -For instructions on how to generate a service account and corresponding -credentials JSON see: [Creating a Service Account][1]. - -Then run the following to build, package, run all unit tests and run all -integration tests. - -```bash -export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service/account.json -mvn -Penable-integration-tests clean verify -``` - -## Code Samples - -All code samples must be in compliance with the [java sample formatting guide][3]. -Code Samples must be bundled in separate Maven modules. - -The samples must be separate from the primary project for a few reasons: -1. Primary projects have a minimum Java version of Java 8 whereas samples can have - Java version of Java 11. Due to this we need the ability to - selectively exclude samples from a build run. -2. Many code samples depend on external GCP services and need - credentials to access the service. -3. Code samples are not released as Maven artifacts and must be excluded from - release builds. - -### Building - -```bash -mvn clean verify -``` - -Some samples require access to GCP services and require a service account: - -```bash -export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service/account.json -mvn clean verify -``` - -### Code Formatting - -Code in this repo is formatted with -[google-java-format](https://github.com/google/google-java-format). -To run formatting on your project, you can run: -``` -mvn com.coveo:fmt-maven-plugin:format -``` - -[1]: https://cloud.google.com/docs/authentication/getting-started#creating_a_service_account -[2]: https://maven.apache.org/settings.html#Active_Profiles -[3]: https://github.com/GoogleCloudPlatform/java-docs-samples/blob/main/SAMPLE_FORMAT.md \ No newline at end of file diff --git a/java-iam/README.md b/java-iam/README.md index 61f37598b7..79d75ba20a 100644 --- a/java-iam/README.md +++ b/java-iam/README.md @@ -18,16 +18,6 @@ This library follows [Semantic Versioning](http://semver.org/). It is currently in major version zero (`0.y.z`), which means that anything may change at any time and the public API should not be considered stable. -## Contributing - -Contributions to this library are always welcome and highly encouraged. - -See [CONTRIBUTING][contributing] for more information how to get started. - -Please note that this project is released with a Contributor Code of Conduct. By participating in -this project you agree to abide by its terms. See [Code of Conduct][code-of-conduct] for more -information. - ## License Apache 2.0 - See [LICENSE][license] for more information. diff --git a/java-iam/renovate.json b/java-iam/renovate.json deleted file mode 100644 index c52f7a39b7..0000000000 --- a/java-iam/renovate.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "extends": [ - ":separateMajorReleases", - ":combinePatchMinorReleases", - ":ignoreUnstable", - ":prImmediately", - ":updateNotScheduled", - ":automergeDisabled", - ":ignoreModulesAndTests", - ":maintainLockFilesDisabled", - ":autodetectPinVersions" - ], - "ignorePaths": [".kokoro/requirements.txt"], - "packageRules": [ - { - "packagePatterns": [ - "^com.google.guava:" - ], - "versionScheme": "docker" - }, - { - "packagePatterns": [ - "*" - ], - "semanticCommitType": "deps", - "semanticCommitScope": null - }, - { - "packagePatterns": [ - "^org.apache.maven", - "^org.jacoco:", - "^org.codehaus.mojo:", - "^org.sonatype.plugins:", - "^com.coveo:", - "^com.google.cloud:google-cloud-shared-config" - ], - "semanticCommitType": "build", - "semanticCommitScope": "deps" - }, - { - "packagePatterns": [ - "^com.google.api.grpc:proto-google-iam-v1", - "^com.google.cloud:libraries-bom", - "^com.google.cloud.samples:shared-configuration" - ], - "semanticCommitType": "chore", - "semanticCommitScope": "deps" - }, - { - "packagePatterns": [ - "^junit:junit", - "^com.google.truth:truth", - "^org.mockito:mockito-core", - "^org.objenesis:objenesis", - "^com.google.cloud:google-cloud-conformance-tests" - ], - "semanticCommitType": "test", - "semanticCommitScope": "deps" - }, - { - "packagePatterns": [ - "^com.google.cloud:google-cloud-" - ], - "ignoreUnstable": false - }, - { - "packagePatterns": [ - "^com.fasterxml.jackson.core" - ], - "groupName": "jackson dependencies" - } - ], - "semanticCommits": true, - "dependencyDashboard": true -} diff --git a/java-iam/synth.metadata b/java-iam/synth.metadata deleted file mode 100644 index 884257a9aa..0000000000 --- a/java-iam/synth.metadata +++ /dev/null @@ -1,125 +0,0 @@ -{ - "sources": [ - { - "git": { - "name": ".", - "remote": "https://github.com/googleapis/java-iam.git", - "sha": "0bde6b4db52bf09a4f1f0fbbb7519b82a4e7eb39" - } - }, - { - "git": { - "name": "googleapis", - "remote": "https://github.com/googleapis/googleapis.git", - "sha": "2921f9fb3bfbd16f6b2da0104373e2b47a80a65e", - "internalRef": "408420890" - } - }, - { - "git": { - "name": "synthtool", - "remote": "https://github.com/googleapis/synthtool.git", - "sha": "7a7c48f96e90d1cdc3ab0cc8293279fdcb10fd36" - } - } - ], - "generatedFiles": [ - ".github/CODEOWNERS", - ".github/ISSUE_TEMPLATE/bug_report.md", - ".github/ISSUE_TEMPLATE/feature_request.md", - ".github/ISSUE_TEMPLATE/support_request.md", - ".github/PULL_REQUEST_TEMPLATE.md", - ".github/blunderbuss.yml", - ".github/generated-files-bot.yml", - ".github/release-please.yml", - ".github/release-trigger.yml", - ".github/snippet-bot.yml", - ".github/sync-repo-settings.yaml", - ".github/trusted-contribution.yml", - ".github/workflows/approve-readme.yaml", - ".github/workflows/auto-release.yaml", - ".github/workflows/ci.yaml", - ".kokoro/build.bat", - ".kokoro/build.sh", - ".kokoro/coerce_logs.sh", - ".kokoro/common.cfg", - ".kokoro/common.sh", - ".kokoro/continuous/common.cfg", - ".kokoro/continuous/java8.cfg", - ".kokoro/dependencies.sh", - ".kokoro/nightly/common.cfg", - ".kokoro/nightly/integration.cfg", - ".kokoro/nightly/java11.cfg", - ".kokoro/nightly/java7.cfg", - ".kokoro/nightly/java8-osx.cfg", - ".kokoro/nightly/java8-win.cfg", - ".kokoro/nightly/java8.cfg", - ".kokoro/nightly/samples.cfg", - ".kokoro/populate-secrets.sh", - ".kokoro/presubmit/clirr.cfg", - ".kokoro/presubmit/common.cfg", - ".kokoro/presubmit/dependencies.cfg", - ".kokoro/presubmit/graalvm-native.cfg", - ".kokoro/presubmit/integration.cfg", - ".kokoro/presubmit/java11.cfg", - ".kokoro/presubmit/java7.cfg", - ".kokoro/presubmit/java8-osx.cfg", - ".kokoro/presubmit/java8-win.cfg", - ".kokoro/presubmit/java8.cfg", - ".kokoro/presubmit/linkage-monitor.cfg", - ".kokoro/presubmit/lint.cfg", - ".kokoro/presubmit/samples.cfg", - ".kokoro/readme.sh", - ".kokoro/release/bump_snapshot.cfg", - ".kokoro/release/common.cfg", - ".kokoro/release/common.sh", - ".kokoro/release/drop.cfg", - ".kokoro/release/drop.sh", - ".kokoro/release/promote.cfg", - ".kokoro/release/promote.sh", - ".kokoro/release/publish_javadoc.cfg", - ".kokoro/release/publish_javadoc.sh", - ".kokoro/release/publish_javadoc11.cfg", - ".kokoro/release/publish_javadoc11.sh", - ".kokoro/release/snapshot.cfg", - ".kokoro/release/snapshot.sh", - ".kokoro/release/stage.cfg", - ".kokoro/release/stage.sh", - ".kokoro/trampoline.sh", - "CODE_OF_CONDUCT.md", - "CONTRIBUTING.md", - "LICENSE", - "SECURITY.md", - "codecov.yaml", - "grpc-google-iam-v1/src/main/java/com/google/iam/v1/IAMPolicyGrpc.java", - "java.header", - "license-checks.xml", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/AuditConfigDelta.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/AuditConfigDeltaOrBuilder.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/Binding.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/BindingDelta.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/BindingDeltaOrBuilder.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/BindingOrBuilder.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/GetIamPolicyRequest.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/GetIamPolicyRequestOrBuilder.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/GetPolicyOptions.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/GetPolicyOptionsOrBuilder.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/IamPolicyProto.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/OptionsProto.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/Policy.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/PolicyDelta.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/PolicyDeltaOrBuilder.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/PolicyOrBuilder.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/PolicyProto.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/SetIamPolicyRequest.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/SetIamPolicyRequestOrBuilder.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/TestIamPermissionsRequest.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/TestIamPermissionsRequestOrBuilder.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/TestIamPermissionsResponse.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/TestIamPermissionsResponseOrBuilder.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/logging/AuditData.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/logging/AuditDataOrBuilder.java", - "proto-google-iam-v1/src/main/java/com/google/iam/v1/logging/AuditDataProto.java", - "renovate.json" - ] -} \ No newline at end of file From 5fce328051b366c40513cfad7479d252f7a6d187 Mon Sep 17 00:00:00 2001 From: Anthonios Partheniou Date: Wed, 8 Feb 2023 19:45:37 -0500 Subject: [PATCH 29/82] fix: use pkg_tar from rules_pkg (#1303) --- WORKSPACE | 13 +++++++++++++ rules_java_gapic/BUILD.bazel | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/WORKSPACE b/WORKSPACE index 7aeb183359..2e8237b02f 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -120,3 +120,16 @@ http_archive( "https://github.com/googleapis/gapic-showcase/archive/%s.zip" % _showcase_commit, ], ) + +http_archive( + name = "rules_pkg", + sha256 = "8a298e832762eda1830597d64fe7db58178aa84cd5926d76d5b744d6558941c2", + urls = [ + "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.7.0/rules_pkg-0.7.0.tar.gz", + "https://github.com/bazelbuild/rules_pkg/releases/download/0.7.0/rules_pkg-0.7.0.tar.gz", + ], +) + +load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies") + +rules_pkg_dependencies() diff --git a/rules_java_gapic/BUILD.bazel b/rules_java_gapic/BUILD.bazel index 34a5a2948d..9ec683154f 100644 --- a/rules_java_gapic/BUILD.bazel +++ b/rules_java_gapic/BUILD.bazel @@ -1,4 +1,4 @@ -load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar") +load("@rules_pkg//pkg:pkg.bzl", "pkg_tar") package(default_visibility = ["//visibility:public"]) From 5af299de045f7a2b80c93292082efd124761c927 Mon Sep 17 00:00:00 2001 From: Blake Li Date: Fri, 10 Feb 2023 14:18:14 -0500 Subject: [PATCH 30/82] chore: Fix pre-commit. (#1294) --- .githooks/pre-commit | 4 ++-- DEVELOPMENT.md | 9 --------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/.githooks/pre-commit b/.githooks/pre-commit index 164e989f38..241070d6de 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -118,7 +118,7 @@ fi if [ $NUM_JAVA_FILES_CHANGED -gt 0 ] || [ $NUM_UNIT_GOLDEN_FILES_CHANGED -gt 0 ] then echo_status "Checking unit tests..." - mvn test + mvn install --batch-mode --no-transfer-progress -Dcheckstyle.skip -Dfmt.skip TEST_STATUS=$? if [ $TEST_STATUS != 0 ] then @@ -133,7 +133,7 @@ if [ $NUM_JAVA_FILES_CHANGED -gt 0 ] \ || [ $NUM_INTEGRATION_BAZEL_FILES_CHANGED -gt 0 ] then echo_status "Checking integration tests..." - bazel --batch test --disk_cache="$BAZEL_CACHE_DIR" //test/integration/... + bazelisk --batch test --disk_cache="$BAZEL_CACHE_DIR" //test/integration/... TEST_STATUS=$? if [ $TEST_STATUS != 0 ] then diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 229919c367..2b8a9a17b8 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -11,15 +11,6 @@ ```sh cp .githooks/pre-commit .git/hooks/pre-commit ``` - - ### Note: You may see this error with the pre-commits due to the monorepo migration: - ``` - [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project gapic-generator-java: Compilation failure: Compilation failure: - [ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java:[19,43] package com.google.api.gax.httpjson.testing does not exist - [ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java:[24,38] package com.google.api.gax.rpc.testing does not exist - [ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/ServiceClientTestClassComposer.java:[18,39] package com.google.api.gax.grpc.testing does not exist - ``` - Remove the pre-commit hooks. Tracking the issue in https://github.com/googleapis/gapic-generator-java/issues/1253 3. Install [`bazelisk`](https://github.com/bazelbuild/bazelisk) in your `PATH`. From 5f3e7321e294caf94883ea5aa46a7f23a65e9847 Mon Sep 17 00:00:00 2001 From: Joe Wang <106995533+JoeWang1127@users.noreply.github.com> Date: Mon, 13 Feb 2023 18:12:56 +0000 Subject: [PATCH 31/82] chore: update CONTRIBUTING.md (#1346) --- gax-java/CONTRIBUTING.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gax-java/CONTRIBUTING.md b/gax-java/CONTRIBUTING.md index e698c822b7..110ed02ec0 100644 --- a/gax-java/CONTRIBUTING.md +++ b/gax-java/CONTRIBUTING.md @@ -38,5 +38,4 @@ mvn clean install -f gax-java ### The small print Contributions made by corporations are covered by a different agreement than the one above, the -[Software Grant and Corporate Contributor License Agreement] -(https://cla.developers.google.com/about/google-corporate). +[Software Grant and Corporate Contributor License Agreement](https://cla.developers.google.com/about/google-corporate). From 78c6d89ac6ce2746bfcb0b030940cbc0962ca7cc Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 13 Feb 2023 22:56:13 +0000 Subject: [PATCH 32/82] fix(deps): update dependency io.grpc:grpc-bom to v1.53.0 (#1345) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [io.grpc:grpc-bom](https://togithub.com/grpc/grpc-java) | `1.52.1` -> `1.53.0` | [![age](https://badges.renovateapi.com/packages/maven/io.grpc:grpc-bom/1.53.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/maven/io.grpc:grpc-bom/1.53.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/maven/io.grpc:grpc-bom/1.53.0/compatibility-slim/1.52.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/maven/io.grpc:grpc-bom/1.53.0/confidence-slim/1.52.1)](https://docs.renovatebot.com/merge-confidence/) | --- ### ⚠ Dependency Lookup Warnings ⚠ Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information. --- ### Release Notes

grpc/grpc-java ### [`v1.53.0`](https://togithub.com/grpc/grpc-java/releases/tag/v1.53.0) [Compare Source](https://togithub.com/grpc/grpc-java/compare/v1.52.1...v1.53.0) ##### New Features - googleapis: Allow user set c2p bootstrap config ([#​9856](https://togithub.com/grpc/grpc-java/issues/9856)) - xds: Add contain and stringMatcher in `RouteConfiguration` ([#​9845](https://togithub.com/grpc/grpc-java/issues/9845)) - core: Add `grpc-previous-rpc-attempts` to the initial response metadata ([#​9686](https://togithub.com/grpc/grpc-java/issues/9686)) - servlet: Implement gRPC server as a Servlet ([#​8596](https://togithub.com/grpc/grpc-java/issues/8596)) - authz: Implement static authorization server interceptor ([#​8934](https://togithub.com/grpc/grpc-java/issues/8934)) ##### Examples - servlet: Add servlet example ([#​8596](https://togithub.com/grpc/grpc-java/issues/8596)) ##### Bug Fixes - xds: Update xds error handling logic. Specifically: - When the ads stream is closed only send errors to subscribers that haven't yet gotten results - Timers to detect missing resources don’t start until the adsStream is ready ([#​9745](https://togithub.com/grpc/grpc-java/issues/9745)) - Call subscriber onError callback when xds client fails to connect to server ([#​9827](https://togithub.com/grpc/grpc-java/issues/9827)) - core: Delay retriable stream master listener close until all sub streams are closed. This fixes the call executor lifecycle and prevents potential `RejectedExecutionException`. ([#​9754](https://togithub.com/grpc/grpc-java/issues/9754)) - core: Free unused `MessageProducer` in `RetriableStream` ([#​9853](https://togithub.com/grpc/grpc-java/issues/9853)), fixing a Netty buffer memory leak for cancelled RPCs - api: Fail with `NullPointerException` when a Metadata.Marshaller returns null bytes ([#​9781](https://togithub.com/grpc/grpc-java/issues/9781)). This would previously cause a `NullPointerException` later during the RPC. Now the return value of the Marshaller is checked immediately, to help find the broken Marshaller ##### Behavior Changes - xds: Disallow duplicate addresses in the RingHashLB. ([#​9776](https://togithub.com/grpc/grpc-java/issues/9776)) - xds: EDS weight sums are allowed up to max unsigned int (was max signed int) ([#​9765](https://togithub.com/grpc/grpc-java/issues/9765)) - xds: Drop xds v2 support ([#​9760](https://togithub.com/grpc/grpc-java/issues/9760)) ##### Dependencies - JUnit upgraded to 4.13.2 - bazel: Dropped support for Bazel 4. We track the two most recent major versions of Bazel, Bazel 5 and 6. Bazel 4 may still work, but we are no longer testing it - bazel: Include Tomcat annotations dependency for `@Generated` as used by autovalue ([#​9762](https://togithub.com/grpc/grpc-java/issues/9762)). Necessary for building xds and rls on Java 9+ - bazel: Export deps from Maven Central-specific stand-in targets ([#​9780](https://togithub.com/grpc/grpc-java/issues/9780)). Some Maven Central artifacts are a combination of multiple Bazel targets, like grpc-core is composed of //core:inprocess, //core:internal, //core:util, //api. There is a “//core:core_maven” target used by maven_install that uses the other targets. Previously the target used `runtime_deps` to discourage their use by Bazel users, but that could cause compilation failures from lack of hjars. These targets now use `exports` ##### Acknowledgement [@​cpovirk](https://togithub.com/cpovirk) [@​niloc132](https://togithub.com/niloc132) [@​stephenh](https://togithub.com/stephenh) [@​olderwei](https://togithub.com/olderwei) [@​pandaapo](https://togithub.com/pandaapo) [@​panxuefeng](https://togithub.com/panxuefeng)
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- gapic-generator-java-pom-parent/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gapic-generator-java-pom-parent/pom.xml b/gapic-generator-java-pom-parent/pom.xml index be29707a94..25f66a497c 100644 --- a/gapic-generator-java-pom-parent/pom.xml +++ b/gapic-generator-java-pom-parent/pom.xml @@ -26,7 +26,7 @@ 1.3.2 - 1.52.1 + 1.53.0 1.15.0 2.10.1 31.1-jre From 472a3ba5b6704f76c62e3656864a0716d2f9addb Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Mon, 13 Feb 2023 23:16:12 +0000 Subject: [PATCH 33/82] chore(deps): update dependency org.apache.maven.plugins:maven-deploy-plugin to v3.1.0 (#1340) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [org.apache.maven.plugins:maven-deploy-plugin](https://maven.apache.org/plugins/) | `3.0.0` -> `3.1.0` | [![age](https://badges.renovateapi.com/packages/maven/org.apache.maven.plugins:maven-deploy-plugin/3.1.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/maven/org.apache.maven.plugins:maven-deploy-plugin/3.1.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/maven/org.apache.maven.plugins:maven-deploy-plugin/3.1.0/compatibility-slim/3.0.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/maven/org.apache.maven.plugins:maven-deploy-plugin/3.1.0/confidence-slim/3.0.0)](https://docs.renovatebot.com/merge-confidence/) | --- ### ⚠ Dependency Lookup Warnings ⚠ Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information. --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 332a20e88c..300f0d658b 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,7 @@ org.apache.maven.plugins maven-deploy-plugin - 3.0.0 + 3.1.0 true From ebe84cc0add479b420e2c63a24d7e24b224b8fda Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 14 Feb 2023 14:24:13 +0000 Subject: [PATCH 34/82] chore(deps): update dependency org.apache.maven.plugins:maven-surefire-plugin to v3.0.0-m9 (#1350) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [org.apache.maven.plugins:maven-surefire-plugin](https://maven.apache.org/surefire/) | `3.0.0-M8` -> `3.0.0-M9` | [![age](https://badges.renovateapi.com/packages/maven/org.apache.maven.plugins:maven-surefire-plugin/3.0.0-M9/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/maven/org.apache.maven.plugins:maven-surefire-plugin/3.0.0-M9/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/maven/org.apache.maven.plugins:maven-surefire-plugin/3.0.0-M9/compatibility-slim/3.0.0-M8)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/maven/org.apache.maven.plugins:maven-surefire-plugin/3.0.0-M9/confidence-slim/3.0.0-M8)](https://docs.renovatebot.com/merge-confidence/) | --- ### ⚠ Dependency Lookup Warnings ⚠ Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information. --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/gapic-generator-java). --- gapic-generator-java/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gapic-generator-java/pom.xml b/gapic-generator-java/pom.xml index ea4738b2dd..aad9f2b659 100644 --- a/gapic-generator-java/pom.xml +++ b/gapic-generator-java/pom.xml @@ -301,7 +301,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M8 + 3.0.0-M9 From 6f8cbe031e8c3cbb72848228d7eb59ea59778ff2 Mon Sep 17 00:00:00 2001 From: Emily Wang Date: Tue, 14 Feb 2023 18:16:12 +0000 Subject: [PATCH 35/82] chore: add rules_pkg to renovate bot ignoreDeps (#1349) Following up on https://togithub.com/googleapis/gapic-generator-java/pull/1338, suppressing renovate PRs for the `rules_pkg` dependency since it will need to align with version used in googleapis. --- renovate.json | 1 + 1 file changed, 1 insertion(+) diff --git a/renovate.json b/renovate.json index 79c04a2d4f..cac74c4fb2 100644 --- a/renovate.json +++ b/renovate.json @@ -3,4 +3,5 @@ "config:base" ], "ignorePaths": [".kokoro/requirements.txt"] + "ignoreDeps": ["rules_pkg"] } From 1ae7726e3e9b84a714ca38e196f31f3ef7b12c15 Mon Sep 17 00:00:00 2001 From: Emily Wang Date: Tue, 14 Feb 2023 19:36:14 +0000 Subject: [PATCH 36/82] chore: fix renovate bot ignoreDeps (#1353) Fixes #1352, from missed separator in #1349's changes. --- renovate.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renovate.json b/renovate.json index cac74c4fb2..6fd84f1a85 100644 --- a/renovate.json +++ b/renovate.json @@ -2,6 +2,6 @@ "extends": [ "config:base" ], - "ignorePaths": [".kokoro/requirements.txt"] + "ignorePaths": [".kokoro/requirements.txt"], "ignoreDeps": ["rules_pkg"] } From e8d86dfb273d05ec7f00d9633fa8f821f06133be Mon Sep 17 00:00:00 2001 From: Diego Alonso Marquez Palacios Date: Tue, 14 Feb 2023 15:04:00 -0500 Subject: [PATCH 37/82] fix(batcher): exceptions in unaryCaller bubble up (#1166) Co-authored-by: Blake Li --- .../google/api/gax/batching/BatcherImpl.java | 9 ++- .../api/gax/batching/BatcherImplTest.java | 77 +++++++++++++++++++ 2 files changed, 84 insertions(+), 2 deletions(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/batching/BatcherImpl.java b/gax-java/gax/src/main/java/com/google/api/gax/batching/BatcherImpl.java index 2118ae24b5..e46f61babd 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/batching/BatcherImpl.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/batching/BatcherImpl.java @@ -276,8 +276,13 @@ public void sendOutstanding() { callContextWithOption = callContext.withOption(THROTTLED_TIME_KEY, accumulatedBatch.totalThrottledTimeMs); } - final ApiFuture batchResponse = - unaryCallable.futureCall(accumulatedBatch.builder.build(), callContextWithOption); + ApiFuture batchResponse; + try { + batchResponse = + unaryCallable.futureCall(accumulatedBatch.builder.build(), callContextWithOption); + } catch (Exception ex) { + batchResponse = ApiFutures.immediateFailedFuture(ex); + } numOfOutstandingBatches.incrementAndGet(); ApiFutures.addCallback( diff --git a/gax-java/gax/src/test/java/com/google/api/gax/batching/BatcherImplTest.java b/gax-java/gax/src/test/java/com/google/api/gax/batching/BatcherImplTest.java index b503e28da8..1f009c2276 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/batching/BatcherImplTest.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/batching/BatcherImplTest.java @@ -46,6 +46,7 @@ import com.google.api.gax.rpc.testing.FakeBatchableApi.LabeledIntList; import com.google.api.gax.rpc.testing.FakeBatchableApi.LabeledIntSquarerCallable; import com.google.api.gax.rpc.testing.FakeBatchableApi.SquarerBatchingDescriptorV2; +import com.google.api.gax.rpc.testing.FakeCallContext; import com.google.common.base.Stopwatch; import com.google.common.collect.ImmutableList; import com.google.common.collect.Queues; @@ -931,6 +932,82 @@ public void testThrottlingNonBlocking() throws Exception { } } + /** + * If the batcher's unary callable throws an exception when obtaining a response, then the + * response .get() should throw the exception + */ + @Test + public void testAddDoesNotHangIfExceptionThrowStartingACall() { + BatchingDescriptor batchingDescriptor = + new BatchingDescriptor() { + @Override + public BatchingRequestBuilder newRequestBuilder(Object o) { + return new BatchingRequestBuilder() { + @Override + public void add(Object o) {} + + @Override + public Object build() { + return new Object(); + } + }; + } + + @Override + public void splitResponse(Object o, List> list) { + for (BatchEntry e : list) { + e.getResultFuture().set(new Object()); + } + } + + @Override + public void splitException(Throwable throwable, List> list) { + for (BatchEntry e : list) { + e.getResultFuture().setException(new RuntimeException("fake")); + } + } + + @Override + public long countBytes(Object o) { + return 1; + } + }; + + UnaryCallable unaryCallable = + new UnaryCallable() { + @Override + public ApiFuture futureCall(Object o, ApiCallContext apiCallContext) { + throw new RuntimeException("this should bubble up"); + } + }; + Object prototype = new Object(); + BatchingSettings batchingSettings = + BatchingSettings.newBuilder() + .setDelayThreshold(Duration.ofSeconds(1)) + .setElementCountThreshold(100L) + .setRequestByteThreshold(100L) + .setFlowControlSettings(FlowControlSettings.getDefaultInstance()) + .build(); + ScheduledExecutorService executor = Executors.newScheduledThreadPool(2); + FlowController flowController = new FlowController(batchingSettings.getFlowControlSettings()); + ApiCallContext callContext = FakeCallContext.createDefault(); + + BatcherImpl batcher = + new BatcherImpl<>( + batchingDescriptor, + unaryCallable, + prototype, + batchingSettings, + executor, + flowController, + callContext); + + ApiFuture f = batcher.add(new Object()); + Assert.assertThrows(ExecutionException.class, f::get); + // bubbles up + Assert.assertThrows(RuntimeException.class, batcher::close); + } + private void testElementTriggers(BatchingSettings settings) throws Exception { underTest = createDefaultBatcherImpl(settings, null); Future result = underTest.add(4); From b8afde062a931fb9dfd26fd753fe7910df6c185e Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 15 Feb 2023 14:10:29 +0000 Subject: [PATCH 38/82] fix(deps): update dependency com.google.auth:google-auth-library-bom to v1.16.0 (#1355) --- gapic-generator-java-pom-parent/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gapic-generator-java-pom-parent/pom.xml b/gapic-generator-java-pom-parent/pom.xml index 25f66a497c..bf90f49a9b 100644 --- a/gapic-generator-java-pom-parent/pom.xml +++ b/gapic-generator-java-pom-parent/pom.xml @@ -27,7 +27,7 @@ consistent across modules in this repository --> 1.3.2 1.53.0 - 1.15.0 + 1.16.0 2.10.1 31.1-jre 3.21.12 From 445769c0ef61a0ab9395772b199c71b2b3230cfd Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 15 Feb 2023 14:30:12 +0000 Subject: [PATCH 39/82] chore(deps): update dependency org.apache.maven.plugins:maven-javadoc-plugin to v3.5.0 (#1356) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [org.apache.maven.plugins:maven-javadoc-plugin](https://maven.apache.org/plugins/) | `3.4.1` -> `3.5.0` | [![age](https://badges.renovateapi.com/packages/maven/org.apache.maven.plugins:maven-javadoc-plugin/3.5.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/maven/org.apache.maven.plugins:maven-javadoc-plugin/3.5.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/maven/org.apache.maven.plugins:maven-javadoc-plugin/3.5.0/compatibility-slim/3.4.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/maven/org.apache.maven.plugins:maven-javadoc-plugin/3.5.0/confidence-slim/3.4.1)](https://docs.renovatebot.com/merge-confidence/) | --- ### ⚠ Dependency Lookup Warnings ⚠ Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information. --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/gapic-generator-java). --- java-common-protos/pom.xml | 2 +- java-iam/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java-common-protos/pom.xml b/java-common-protos/pom.xml index 16c5b60a93..f17711c67c 100644 --- a/java-common-protos/pom.xml +++ b/java-common-protos/pom.xml @@ -140,7 +140,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.4.1 + 3.5.0 html diff --git a/java-iam/pom.xml b/java-iam/pom.xml index f065ece2c7..a752d0d619 100644 --- a/java-iam/pom.xml +++ b/java-iam/pom.xml @@ -181,7 +181,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.4.1 + 3.5.0 html From 9b420949ffc962c1acb739793e0972915af141bb Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 10:16:44 -0500 Subject: [PATCH 40/82] chore(main): release 2.15.1 (#1339) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Emily Wang --- CHANGELOG.md | 10 +++++++ WORKSPACE | 2 +- api-common-java/pom.xml | 4 +-- gapic-generator-java-bom/pom.xml | 24 ++++++++-------- gapic-generator-java-pom-parent/pom.xml | 2 +- gapic-generator-java/pom.xml | 6 ++-- gax-java/dependencies.properties | 8 +++--- gax-java/gax-bom/pom.xml | 14 +++++----- gax-java/gax-grpc/pom.xml | 4 +-- gax-java/gax-httpjson/pom.xml | 4 +-- gax-java/gax/pom.xml | 4 +-- gax-java/pom.xml | 14 +++++----- .../grpc-google-common-protos/pom.xml | 4 +-- java-common-protos/pom.xml | 8 +++--- .../proto-google-common-protos/pom.xml | 4 +-- java-iam/grpc-google-iam-v1/pom.xml | 4 +-- java-iam/grpc-google-iam-v2/pom.xml | 4 +-- java-iam/grpc-google-iam-v2beta/pom.xml | 4 +-- java-iam/pom.xml | 22 +++++++-------- java-iam/proto-google-iam-v1/pom.xml | 4 +-- java-iam/proto-google-iam-v2/pom.xml | 4 +-- java-iam/proto-google-iam-v2beta/pom.xml | 4 +-- showcase/pom.xml | 2 +- versions.txt | 28 +++++++++---------- 24 files changed, 99 insertions(+), 89 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc8059f3fd..3c88b962e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [2.15.1](https://github.com/googleapis/gapic-generator-java/compare/v2.15.0...v2.15.1) (2023-02-15) + + +### Bug Fixes + +* **batcher:** Exceptions in unaryCaller bubble up ([#1166](https://github.com/googleapis/gapic-generator-java/issues/1166)) ([bcf5ed8](https://github.com/googleapis/gapic-generator-java/commit/bcf5ed856d664f84fa033cee0cc27fb57b97b678)) +* **deps:** Update dependency com.google.auth:google-auth-library-bom to v1.16.0 ([#1355](https://github.com/googleapis/gapic-generator-java/issues/1355)) ([b7de1bc](https://github.com/googleapis/gapic-generator-java/commit/b7de1bc260a641e0c0ca717a33d61fbaa8a2fcf6)) +* **deps:** Update dependency io.grpc:grpc-bom to v1.53.0 ([#1345](https://github.com/googleapis/gapic-generator-java/issues/1345)) ([1e82422](https://github.com/googleapis/gapic-generator-java/commit/1e824223afa0b8a62e9e50ae38cc73e8036e6348)) +* Use pkg_tar from rules_pkg ([#1303](https://github.com/googleapis/gapic-generator-java/issues/1303)) ([fbae565](https://github.com/googleapis/gapic-generator-java/commit/fbae565291aee092acab3df86de858aea129b670)) + ## [2.15.0](https://github.com/googleapis/gapic-generator-java/compare/v2.14.0...v2.15.0) (2023-02-02) diff --git a/WORKSPACE b/WORKSPACE index 2e8237b02f..d1c0525513 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -60,7 +60,7 @@ maven_install( repositories = ["https://repo.maven.apache.org/maven2/"], ) -_gapic_generator_java_version = "2.15.1-SNAPSHOT" # {x-version-update:gapic-generator-java:current} +_gapic_generator_java_version = "2.15.1" # {x-version-update:gapic-generator-java:current} maven_install( artifacts = [ diff --git a/api-common-java/pom.xml b/api-common-java/pom.xml index 43710485b9..2e542c1213 100644 --- a/api-common-java/pom.xml +++ b/api-common-java/pom.xml @@ -5,14 +5,14 @@ com.google.api api-common jar - 2.6.1-SNAPSHOT + 2.6.1 API Common Common utilities for Google APIs in Java com.google.api gapic-generator-java-pom-parent - 2.15.1-SNAPSHOT + 2.15.1 ../gapic-generator-java-pom-parent diff --git a/gapic-generator-java-bom/pom.xml b/gapic-generator-java-bom/pom.xml index 4849d77f07..09bb22d4e1 100644 --- a/gapic-generator-java-bom/pom.xml +++ b/gapic-generator-java-bom/pom.xml @@ -4,7 +4,7 @@ com.google.api gapic-generator-java-bom pom - 2.15.1-SNAPSHOT + 2.15.1 GAPIC Generator Java BOM BOM for the libraries in gapic-generator-java repository. Users should not @@ -15,7 +15,7 @@ com.google.api gapic-generator-java-pom-parent - 2.15.1-SNAPSHOT + 2.15.1 ../gapic-generator-java-pom-parent @@ -60,56 +60,56 @@ com.google.api api-common - 2.6.1-SNAPSHOT + 2.6.1 com.google.api gax-bom - 2.23.1-SNAPSHOT + 2.23.1 pom import com.google.api.grpc grpc-google-common-protos - 2.14.1-SNAPSHOT + 2.14.1 com.google.api.grpc proto-google-common-protos - 2.14.1-SNAPSHOT + 2.14.1 com.google.api.grpc proto-google-iam-v1 - 1.9.1-SNAPSHOT + 1.9.1 com.google.api.grpc proto-google-iam-v2 - 1.9.1-SNAPSHOT + 1.9.1 com.google.api.grpc proto-google-iam-v2beta - 1.9.1-SNAPSHOT + 1.9.1 com.google.api.grpc grpc-google-iam-v1 - 1.9.1-SNAPSHOT + 1.9.1 com.google.api.grpc grpc-google-iam-v2 - 1.9.1-SNAPSHOT + 1.9.1 com.google.api.grpc grpc-google-iam-v2beta - 1.9.1-SNAPSHOT + 1.9.1 diff --git a/gapic-generator-java-pom-parent/pom.xml b/gapic-generator-java-pom-parent/pom.xml index bf90f49a9b..5e356643aa 100644 --- a/gapic-generator-java-pom-parent/pom.xml +++ b/gapic-generator-java-pom-parent/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.google.api gapic-generator-java-pom-parent - 2.15.1-SNAPSHOT + 2.15.1 pom GAPIC Generator Java POM Parent https://github.com/googleapis/gapic-generator-java diff --git a/gapic-generator-java/pom.xml b/gapic-generator-java/pom.xml index aad9f2b659..730830e717 100644 --- a/gapic-generator-java/pom.xml +++ b/gapic-generator-java/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.google.api gapic-generator-java - 2.15.1-SNAPSHOT + 2.15.1 GAPIC Generator Java GAPIC generator Java @@ -23,7 +23,7 @@ com.google.api gapic-generator-java-pom-parent - 2.15.1-SNAPSHOT + 2.15.1 ../gapic-generator-java-pom-parent @@ -32,7 +32,7 @@ com.google.api gapic-generator-java-bom - 2.15.1-SNAPSHOT + 2.15.1 pom import diff --git a/gax-java/dependencies.properties b/gax-java/dependencies.properties index 27a092bc1d..de92d13cfc 100644 --- a/gax-java/dependencies.properties +++ b/gax-java/dependencies.properties @@ -8,16 +8,16 @@ # Versions of oneself # {x-version-update-start:gax:current} -version.gax=2.23.1-SNAPSHOT +version.gax=2.23.1 # {x-version-update-end} # {x-version-update-start:gax:current} -version.gax_grpc=2.23.1-SNAPSHOT +version.gax_grpc=2.23.1 # {x-version-update-end} # {x-version-update-start:gax:current} -version.gax_bom=2.23.1-SNAPSHOT +version.gax_bom=2.23.1 # {x-version-update-end} # {x-version-update-start:gax-httpjson:current} -version.gax_httpjson=0.108.1-SNAPSHOT +version.gax_httpjson=0.108.1 # {x-version-update-end} # Versions for dependencies which actual artifacts differ between Bazel and Gradle. diff --git a/gax-java/gax-bom/pom.xml b/gax-java/gax-bom/pom.xml index 9be3e41910..98ff0b22e9 100644 --- a/gax-java/gax-bom/pom.xml +++ b/gax-java/gax-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.api gax-bom - 2.23.1-SNAPSHOT + 2.23.1 pom GAX (Google Api eXtensions) for Java (BOM) Google Api eXtensions for Java (BOM) @@ -42,34 +42,34 @@ com.google.api gax - 2.23.1-SNAPSHOT + 2.23.1 com.google.api gax - 2.23.1-SNAPSHOT + 2.23.1 testlib com.google.api gax-grpc - 2.23.1-SNAPSHOT + 2.23.1 com.google.api gax-grpc - 2.23.1-SNAPSHOT + 2.23.1 testlib com.google.api gax-httpjson - 0.108.1-SNAPSHOT + 0.108.1 com.google.api gax-httpjson - 0.108.1-SNAPSHOT + 0.108.1 testlib diff --git a/gax-java/gax-grpc/pom.xml b/gax-java/gax-grpc/pom.xml index ffa979dda2..57ad2cce27 100644 --- a/gax-java/gax-grpc/pom.xml +++ b/gax-java/gax-grpc/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax-grpc - 2.23.1-SNAPSHOT + 2.23.1 jar GAX (Google Api eXtensions) for Java (gRPC) Google Api eXtensions for Java (gRPC) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.23.1-SNAPSHOT + 2.23.1 diff --git a/gax-java/gax-httpjson/pom.xml b/gax-java/gax-httpjson/pom.xml index 7eaa8d4e11..146a37be75 100644 --- a/gax-java/gax-httpjson/pom.xml +++ b/gax-java/gax-httpjson/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax-httpjson - 0.108.1-SNAPSHOT + 0.108.1 jar GAX (Google Api eXtensions) for Java (HTTP JSON) Google Api eXtensions for Java (HTTP JSON) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.23.1-SNAPSHOT + 2.23.1 diff --git a/gax-java/gax/pom.xml b/gax-java/gax/pom.xml index ee1dfa0c2c..11f72d6947 100644 --- a/gax-java/gax/pom.xml +++ b/gax-java/gax/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax - 2.23.1-SNAPSHOT + 2.23.1 jar GAX (Google Api eXtensions) for Java (Core) Google Api eXtensions for Java (Core) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.23.1-SNAPSHOT + 2.23.1 diff --git a/gax-java/pom.xml b/gax-java/pom.xml index aed1a9dacd..df4c6e4c9c 100644 --- a/gax-java/pom.xml +++ b/gax-java/pom.xml @@ -4,14 +4,14 @@ com.google.api gax-parent pom - 2.23.1-SNAPSHOT + 2.23.1 GAX (Google Api eXtensions) for Java (Parent) Google Api eXtensions for Java (Parent) com.google.api gapic-generator-java-pom-parent - 2.15.1-SNAPSHOT + 2.15.1 ../gapic-generator-java-pom-parent @@ -51,7 +51,7 @@ com.google.api api-common - 2.6.1-SNAPSHOT + 2.6.1 com.google.auth @@ -109,24 +109,24 @@ com.google.api gax - 2.23.1-SNAPSHOT + 2.23.1 com.google.api gax - 2.23.1-SNAPSHOT + 2.23.1 test-jar testlib com.google.api.grpc proto-google-common-protos - 2.14.1-SNAPSHOT + 2.14.1 com.google.api.grpc grpc-google-common-protos - 2.14.1-SNAPSHOT + 2.14.1 io.grpc diff --git a/java-common-protos/grpc-google-common-protos/pom.xml b/java-common-protos/grpc-google-common-protos/pom.xml index f68360bc7f..4e632d825d 100644 --- a/java-common-protos/grpc-google-common-protos/pom.xml +++ b/java-common-protos/grpc-google-common-protos/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-common-protos - 2.14.1-SNAPSHOT + 2.14.1 grpc-google-common-protos GRPC library for grpc-google-common-protos com.google.api.grpc google-common-protos-parent - 2.14.1-SNAPSHOT + 2.14.1 diff --git a/java-common-protos/pom.xml b/java-common-protos/pom.xml index f17711c67c..eff391c2ff 100644 --- a/java-common-protos/pom.xml +++ b/java-common-protos/pom.xml @@ -4,7 +4,7 @@ com.google.api.grpc google-common-protos-parent pom - 2.14.1-SNAPSHOT + 2.14.1 Google Common Protos Parent Java idiomatic client for Google Cloud Platform services. @@ -13,7 +13,7 @@ com.google.api gapic-generator-java-pom-parent - 2.15.1-SNAPSHOT + 2.15.1 ../gapic-generator-java-pom-parent @@ -69,7 +69,7 @@ com.google.api.grpc grpc-google-common-protos - 2.14.1-SNAPSHOT + 2.14.1 io.grpc @@ -81,7 +81,7 @@ com.google.api.grpc proto-google-common-protos - 2.14.1-SNAPSHOT + 2.14.1 com.google.guava diff --git a/java-common-protos/proto-google-common-protos/pom.xml b/java-common-protos/proto-google-common-protos/pom.xml index c105de9a77..4a9d53e87d 100644 --- a/java-common-protos/proto-google-common-protos/pom.xml +++ b/java-common-protos/proto-google-common-protos/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.google.api.grpc proto-google-common-protos - 2.14.1-SNAPSHOT + 2.14.1 proto-google-common-protos PROTO library for proto-google-common-protos com.google.api.grpc google-common-protos-parent - 2.14.1-SNAPSHOT + 2.14.1 diff --git a/java-iam/grpc-google-iam-v1/pom.xml b/java-iam/grpc-google-iam-v1/pom.xml index e8f7887bdf..48d3be9ff2 100644 --- a/java-iam/grpc-google-iam-v1/pom.xml +++ b/java-iam/grpc-google-iam-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v1 - 1.9.1-SNAPSHOT + 1.9.1 grpc-google-iam-v1 GRPC library for grpc-google-iam-v1 com.google.cloud google-iam-parent - 1.9.1-SNAPSHOT + 1.9.1 diff --git a/java-iam/grpc-google-iam-v2/pom.xml b/java-iam/grpc-google-iam-v2/pom.xml index 5319f9d8eb..6c7902f7ea 100644 --- a/java-iam/grpc-google-iam-v2/pom.xml +++ b/java-iam/grpc-google-iam-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v2 - 1.9.1-SNAPSHOT + 1.9.1 grpc-google-iam-v2 GRPC library for proto-google-iam-v2 com.google.cloud google-iam-parent - 1.9.1-SNAPSHOT + 1.9.1 diff --git a/java-iam/grpc-google-iam-v2beta/pom.xml b/java-iam/grpc-google-iam-v2beta/pom.xml index 82e8be4183..a2d7e7b518 100644 --- a/java-iam/grpc-google-iam-v2beta/pom.xml +++ b/java-iam/grpc-google-iam-v2beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v2beta - 1.9.1-SNAPSHOT + 1.9.1 grpc-google-iam-v2beta GRPC library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.9.1-SNAPSHOT + 1.9.1 diff --git a/java-iam/pom.xml b/java-iam/pom.xml index a752d0d619..924be68796 100644 --- a/java-iam/pom.xml +++ b/java-iam/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-iam-parent pom - 1.9.1-SNAPSHOT + 1.9.1 Google IAM Parent Java idiomatic client for Google Cloud Platform services. @@ -13,7 +13,7 @@ com.google.api gapic-generator-java-pom-parent - 2.15.1-SNAPSHOT + 2.15.1 ../gapic-generator-java-pom-parent @@ -81,49 +81,49 @@ com.google.api gax-bom - 2.23.1-SNAPSHOT + 2.23.1 pom import com.google.api.grpc proto-google-iam-v2 - 1.9.1-SNAPSHOT + 1.9.1 com.google.api.grpc grpc-google-iam-v2 - 1.9.1-SNAPSHOT + 1.9.1 com.google.cloud google-iam-policy - 1.9.1-SNAPSHOT + 1.9.1 com.google.api.grpc proto-google-common-protos - 2.14.1-SNAPSHOT + 2.14.1 com.google.api.grpc proto-google-iam-v2beta - 1.9.1-SNAPSHOT + 1.9.1 com.google.api.grpc grpc-google-iam-v1 - 1.9.1-SNAPSHOT + 1.9.1 com.google.api.grpc grpc-google-iam-v2beta - 1.9.1-SNAPSHOT + 1.9.1 com.google.api.grpc proto-google-iam-v1 - 1.9.1-SNAPSHOT + 1.9.1 javax.annotation diff --git a/java-iam/proto-google-iam-v1/pom.xml b/java-iam/proto-google-iam-v1/pom.xml index 4f068d377c..f9bbe69900 100644 --- a/java-iam/proto-google-iam-v1/pom.xml +++ b/java-iam/proto-google-iam-v1/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v1 - 1.9.1-SNAPSHOT + 1.9.1 proto-google-iam-v1 PROTO library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.9.1-SNAPSHOT + 1.9.1 diff --git a/java-iam/proto-google-iam-v2/pom.xml b/java-iam/proto-google-iam-v2/pom.xml index c57cf81811..2e27ba8f96 100644 --- a/java-iam/proto-google-iam-v2/pom.xml +++ b/java-iam/proto-google-iam-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v2 - 1.9.1-SNAPSHOT + 1.9.1 proto-google-iam-v2 Proto library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.9.1-SNAPSHOT + 1.9.1 diff --git a/java-iam/proto-google-iam-v2beta/pom.xml b/java-iam/proto-google-iam-v2beta/pom.xml index 05a339dae8..4955da7d40 100644 --- a/java-iam/proto-google-iam-v2beta/pom.xml +++ b/java-iam/proto-google-iam-v2beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v2beta - 1.9.1-SNAPSHOT + 1.9.1 proto-google-iam-v2beta Proto library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.9.1-SNAPSHOT + 1.9.1 diff --git a/showcase/pom.xml b/showcase/pom.xml index 70d83246d5..e557cb8cde 100644 --- a/showcase/pom.xml +++ b/showcase/pom.xml @@ -15,7 +15,7 @@ com.google.api gapic-generator-java-bom - 2.15.1-SNAPSHOT + 2.15.1 ../gapic-generator-java-bom diff --git a/versions.txt b/versions.txt index 39dfad5335..e45e9c1a5e 100644 --- a/versions.txt +++ b/versions.txt @@ -1,17 +1,17 @@ # Format: # module:released-version:current-version -gapic-generator-java:2.15.0:2.15.1-SNAPSHOT -api-common:2.6.0:2.6.1-SNAPSHOT -gax:2.23.0:2.23.1-SNAPSHOT -gax-grpc:2.23.0:2.23.1-SNAPSHOT -gax-httpjson:0.108.0:0.108.1-SNAPSHOT -proto-google-common-protos:2.14.0:2.14.1-SNAPSHOT -grpc-google-common-protos:2.14.0:2.14.1-SNAPSHOT -proto-google-iam-v1:1.9.0:1.9.1-SNAPSHOT -grpc-google-iam-v1:1.9.0:1.9.1-SNAPSHOT -proto-google-iam-v2beta:1.9.0:1.9.1-SNAPSHOT -grpc-google-iam-v2beta:1.9.0:1.9.1-SNAPSHOT -google-iam-policy:1.9.0:1.9.1-SNAPSHOT -proto-google-iam-v2:1.9.0:1.9.1-SNAPSHOT -grpc-google-iam-v2:1.9.0:1.9.1-SNAPSHOT +gapic-generator-java:2.15.1:2.15.1 +api-common:2.6.1:2.6.1 +gax:2.23.1:2.23.1 +gax-grpc:2.23.1:2.23.1 +gax-httpjson:0.108.1:0.108.1 +proto-google-common-protos:2.14.1:2.14.1 +grpc-google-common-protos:2.14.1:2.14.1 +proto-google-iam-v1:1.9.1:1.9.1 +grpc-google-iam-v1:1.9.1:1.9.1 +proto-google-iam-v2beta:1.9.1:1.9.1 +grpc-google-iam-v2beta:1.9.1:1.9.1 +google-iam-policy:1.9.1:1.9.1 +proto-google-iam-v2:1.9.1:1.9.1 +grpc-google-iam-v2:1.9.1:1.9.1 From 24dabca309b59e1368d1e5d51090cd321ef5a0e5 Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Wed, 15 Feb 2023 11:50:13 -0500 Subject: [PATCH 41/82] chore: refactoring README and DEVELOPMENT.md (#1351) Thank you for opening a Pull Request! For general contributing guidelines, please refer to [contributing guide](https://togithub.com/googleapis/gapic-generator-java/blob/main/CONTRIBUTING.md) - The old file https://togithub.com/googleapis/gapic-generator-java/blob/main/gapic-generator-java/DEVELOPMENT.md was last touched in mid December. I'm replacing the content with the latest at the root. - Removing the root DEVELOPMENT.md in favor of the file above. - Adding index of the modules at the root README.md - Moving showcase testing guide to showcase/README.md. --- DEVELOPMENT.md | 252 ++------------------------ README.md | 24 ++- gapic-generator-java/DEVELOPMENT.md | 270 ++++++++++++---------------- gapic-generator-java/README.md | 2 + gax-java/CONTRIBUTING.md | 15 -- gax-java/DEVELOPMENT.md | 23 +++ gax-java/README.md | 20 +-- showcase/README.md | 83 +++++++++ 8 files changed, 271 insertions(+), 418 deletions(-) create mode 100644 gax-java/DEVELOPMENT.md create mode 100644 showcase/README.md diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 2b8a9a17b8..6b773f3046 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -1,261 +1,41 @@ -# Development Workflow +# Development Setup + +You need Java 11 or higher to run the build. The build produces Java 8-compatible +bytecode. + +Install [`bazelisk`](https://github.com/bazelbuild/bazelisk) in your `PATH` +for gapic-generator-java's Bazel build. ## Set Up 1. Clone this repo. 2. (OPTIONAL) Copy the Git pre-commit hooks. This will automatically check the build, run - tests, and perform linting before each commit. (Symlinks don't seem to work, - but if you find a way, please add it here!) + tests, and perform linting before each commit. (Symlinks don't seem to work, + but if you find a way, please add it here!) ```sh cp .githooks/pre-commit .git/hooks/pre-commit ``` - -3. Install [`bazelisk`](https://github.com/bazelbuild/bazelisk) in your `PATH`. - -## Code Formatting - -- Run linter checks without actually doing the formatting. - ```sh - mvn fmt:check - ``` +## Run Tests for All Modules -- Format files. - - ```sh - mvn fmt:format - ``` - -## Test Running - -- Run all unit and integration tests. - - ```sh - mvn install # unit tests, maven test wouldn't work in root folder because gapic-generator-java is dependant on test jars of gax-java - bazel test //... # integration tests - ``` - -- Run all unit tests. +- Run all unit tests in all modules. ```sh mvn install ``` -- For running unit tests in `gapic-generator-java` submodule, first build all modules with `mvn install -DskipTests`, then `cd` into `gapic-generator-java` submodule for the following commands: - - Run a single or multiple unit tests: - - ```sh - mvn test -Dtest=JavaCodeGeneratorTest - - mvn test "-Dtest=Basic*, !%regex[.*.Unstable.*], !%regex[.*.MyTest.class#one.*|two.*], %regex[#fast.*|slow.*]" - ``` - - - Update all unit test golden files: - - ```sh - mvn test -DupdateUnitGoldens - ``` - - Update a single unit test golden file, for example `JavaCodeGeneratorTest.java`: - - ```sh - mvn test -DupdateUnitGoldens -Dtest=JavaCodeGeneratorTest - ``` +## Code Formatting -- Run a single integration test for API like `Redis`, it generates Java source - code using the Java microgenerator and compares them with the goldens files - in `test/integration/goldens/redis`. +- Run linter checks without actually doing the formatting. ```sh - bazel test //test/integration:redis + mvn fmt:check ``` -- Update integration test golden files, for example `Redis`. This clobbers all the - files in `test/integration/goldens/redis`. +- Format files. ```sh - bazel run //test/integration:update_redis + mvn fmt:format ``` - -## Showcase Integration Testing - -[GAPIC Showcase](https://github.com/googleapis/gapic-showcase) is an API that demonstrates Generated -API Client (GAPIC) features and common API patterns used by Google. It follows the [Cloud APIs -design guide](https://cloud.google.com/apis/design/). `gapic-generator-java` generates a client for -the Showcase API which can communicate with a local Showcase server to perform integration tests. - -### Requirements - -* Install [Go](https://go.dev) in your `PATH`. - -### Installing the Server - -Using the latest version of showcase is recommended, but backward compatibility between server -versions is not guaranteed. If changing the version of the server, it may also be necessary to -update to a compatible client version in `./WORKSPACE`. - -```shell -$ GAPIC_SHOWCASE_VERSION=0.25.0 -$ go install github.com/googleapis/gapic-showcase/cmd/gapic-showcase@v"$GAPIC_SHOWCASE_VERSION" -$ PATH=$PATH:`go env GOPATH`/bin -$ gapic-showcase --help -> Root command of gapic-showcase -> -> Usage: -> gapic-showcase [command] -> -> Available Commands: -> completion Emits bash a completion for gapic-showcase -> compliance This service is used to test that GAPICs... -> echo This service is used showcase the four main types... -> help Help about any command -> identity A simple identity service. -> messaging A simple messaging service that implements chat... -> run Runs the showcase server -> sequence Sub-command for Service: Sequence -> testing A service to facilitate running discrete sets of... -> -> Flags: -> -h, --help help for gapic-showcase -> -j, --json Print JSON output -> -v, --verbose Print verbose output -> --version version for gapic-showcase -``` - -### Running the Server - -Run the showcase server to allow requests to be sent to it. This opens port `:7469` to send and -receive requests. - -```shell -$ gapic-showcase run -> 2022/11/21 16:22:15 Showcase listening on port: :7469 -> 2022/11/21 16:22:15 Starting endpoint 0: gRPC endpoint -> 2022/11/21 16:22:15 Starting endpoint 1: HTTP/REST endpoint -> 2022/11/21 16:22:15 Starting endpoint multiplexer -> 2022/11/21 16:22:15 Listening for gRPC-fallback connections -> 2022/11/21 16:22:15 Listening for gRPC connections -> 2022/11/21 16:22:15 Listening for REST connections -> 2022/11/21 16:22:15 Fallback server listening on port: :1337 -``` - -### Running the Integration Tests - -Open a new terminal window in the root project directory. - -```shell -$ cd showcase -$ mvn verify -P enable-integration-tests -P enable-golden-tests -``` - -Note: - -* `-P enable-golden-tests` is optional. These tests do not require a local server. - -### Update the Golden Showcase Files - -Open a new terminal window in the root project directory. - -```shell -$ cd showcase -$ mvn compile -P update -``` - -## Running the Plugin under googleapis with local gapic-generator-java - -For running the Plugin with showcase protos and local gapic-generator-java, see above section "Showcase Integration Testing". - -To generate a production GAPIC API: - -1. Clone [googleapis](https://github.com/googleapis/googleapis). - -2. Modify `googleapis/WORKSPACE` to point to local gapic-generator-java - - Normally, googleapis's build pulls in gapic-generator-java from Maven Central. - For a local run, we first need to build a local SNAPSHOT jar of the generator. Then we point googleapis to - both the local SNAPSHOT jar and the local copy of the generator. - - Replace the following section in googleapis - ``` - _gapic_generator_java_version = "2.13.0" - - maven_install( - artifacts = [ - "com.google.api:gapic-generator-java:" + _gapic_generator_java_version, - ], - #Update this False for local development - fail_on_missing_checksum = True, - repositories = [ - "m2Local", - "https://repo.maven.apache.org/maven2/", - ] - ) - - http_archive( - name = "gapic_generator_java", - strip_prefix = "gapic-generator-java-%s" % _gapic_generator_java_version, - urls = ["https://github.com/googleapis/gapic-generator-java/archive/v%s.zip" % _gapic_generator_java_version], - ) - ``` - - to - - ``` - _gapic_generator_java_version = "2.13.1-SNAPSHOT" - - maven_install( - artifacts = [ - "com.google.api:gapic-generator-java:" + _gapic_generator_java_version, - ], - #Update this False for local development - fail_on_missing_checksum = False, - repositories = [ - "m2Local", - "https://repo.maven.apache.org/maven2/", - ] - ) - - local_repository( - name = "gapic_generator_java", - path = "/absolute/path/to/your/local/gapic-generator-java", - ) - ``` - - Note: At the time of writing, the gapic-generator version was `2.13.0`. Update the version to the latest version in the pom.xml - -3. Build the new target. - - You can generate any client library based on the protos within googleapis. - You just need the name of the service within the `java_gapic_assembly_gradle_pkg` - rules within the service's `BUILD.bazel` file. - For instance, to run your local generator on the `speech`'s v2 service, you can - run: - - ``` - bazel build //google/cloud/speech/v2:google-cloud-speech-v2-java - ``` - - Note: If you are running into bazel build issues, you can try to remove gapic-generator-java cached in your local m2 - Try running this command: - ``` - rm -rf ~/.m2/repository/com/google/api/ - ``` - and then rebuild gapic-generator-java (`mvn clean install`). - -## FAQ - -### Error in workspace: workspace() got unexpected keyword argument 'managed_directories' - -Full Error: - -``` -ERROR: Traceback (most recent call last): - File "/home/alicejli/googleapis/WORKSPACE", line 1, column 10, in - workspace( -Error in workspace: workspace() got unexpected keyword argument 'managed_directories' -ERROR: Error computing the main repository mapping: Encountered error while reading extension file 'tools/build_defs/repo/http.bzl': no such package '@bazel_tools//tools/build_defs/repo': error loading package 'external': Could not load //external package -``` - -You may be using the latest version of bazel which this project does not support yet. Try installing bazelisk to force -bazel to use the version specified in `.bazeliskrc` diff --git a/README.md b/README.md index 21b323f741..8fe2ae2e6c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,22 @@ [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=googleapis_gapic-generator-java&metric=coverage)](https://sonarcloud.io/summary/new_code?id=googleapis_gapic-generator-java) -# API Client Generator for Java -Generates a Java client library from protocol buffers. -Replaces the Java parts of the -[older monolithic generator](https://github.com/googleapis/gapic-generator). +This repository consists of the following modules: + +- **[gapic-generator-java](./gapic-generator-java/README.md)**: the Protobuf compiler plugin to generate Java code. + See [gapic-generator-java/DEVELOPMENT.md] for setup. +- **[gax-java](./gax-java/README.md)**: the runtime library required for Google Cloud client libraries, + including the ones generated by gapic-generator-java. +- **[java-common-protos](./java-common-protos/README.md)** and **[api-common-java](./api-common-java/README.md)**: Protobuf-generated common + classes for Google services. (They are not generated by gapic-generator-java) +- **[java-iam](./java-iam/README.md)**: Protobuf-generated classes for Google's + Identity and Access + Management (IAM). (They are not generated by gapic-generator-java) +- **[showcase](./showcase/README.md)**: demonstration of the generated client + library for the fake "Showcase" API. +- **[gapic-generator-java-bom](./gapic-generator-java-bom)**: The Bill-of-Material for the libraries + produced from this repository. This is used by [google-cloud-java/java-shared-dependencies]( + https://github.com/googleapis/google-cloud-java/blob/main/java-shared-dependencies/first-party-dependencies/pom.xml). + +## Development Setup + +See [DEVELOPMENT.md](DEVELOPMENT.md). \ No newline at end of file diff --git a/gapic-generator-java/DEVELOPMENT.md b/gapic-generator-java/DEVELOPMENT.md index 5eb2740fa0..acdc71df66 100644 --- a/gapic-generator-java/DEVELOPMENT.md +++ b/gapic-generator-java/DEVELOPMENT.md @@ -1,210 +1,174 @@ # Development Workflow -## Set Up - -1. Clone this repo. +## Test Running -2. Copy the Git pre-commit hooks. This will automatically check the build, run - tests, and perform linting before each commit. (Symlinks don't seem to work, - but if you find a way, please add it here!) +### Unit Tests - ```sh - cp .githooks/pre-commit .git/hooks/pre-commit - ``` +To run the unit tests in `gapic-generator-java` submodule, first build all +modules with `mvn -pl '!gapic-generator-java' install -DskipTests` at the root +directory, +then `cd` into `gapic-generator-java` submodule for the following commands: -## Code Formatting +- Run all unit tests: -- Run linter checks without actually doing the formatting. + ```sh + # In gapic-generator-java submodule + mvn test + ``` - ```sh - bazel run //:google_java_format_verification - ``` - or - ```sh - mvn fmt:check - ``` +- Run a single or multiple unit tests: -- Format files. + ```sh + # In gapic-generator-java submodule + mvn test -Dtest=JavaCodeGeneratorTest - ```sh - bazel run //:google_java_format - ``` - or - ```sh - mvn fmt:format - ``` + mvn test "-Dtest=Basic*, !%regex[.*.Unstable.*], !%regex[.*.MyTest.class#one.*|two.*], %regex[#fast.*|slow.*]" + ``` -## Test Running +- Update all unit test golden files: -- Run all unit and integration tests. + ```sh + # In gapic-generator-java submodule + mvn test -DupdateUnitGoldens + ``` - ```sh - bazel test //... - ``` +- Update a single unit test golden file, for example `JavaCodeGeneratorTest.java`: -- Run all unit tests. + ```sh + # In gapic-generator-java submodule + mvn test -DupdateUnitGoldens -Dtest=JavaCodeGeneratorTest + ``` - ```sh - bazel test //:units - ``` - or - ```sh - mvn test - ``` +Note that `mvn -pl '!gapic-generator-java' install -DskipTests` +at the root directory is needed for `mvn test` commands, +because the gapic-generator-java submodule depends on the "test jars" of +gax-java. The test jars are absent until Maven's "package" phase, which is later +than the "test" phase. -- Run a single unit test like `JavaCodeGeneratorTest.java`: +### Integration Tests - ```sh - bazel test //:unit_com_google_api_generator_engine_JavaCodeGeneratorTest - ``` - or - ```sh - mvn test -Dtest=JavaCodeGeneratorTest +To run integration test for gapic-generator-java, run this Bazel command in the +root of the repository (where you have WORKSPACE file for Bazel.) - mvn test "-Dtest=Basic*, !%regex[.*.Unstable.*], !%regex[.*.MyTest.class#one.*|two.*], %regex[#fast.*|slow.*]" - ``` - -- Update all unit test golden files: +```sh +# In the repository root directory +bazelisk test //... # integration tests +``` - ```sh - mvn test -DupdateUnitGoldens - ``` -- Update a single unit test golden file, for example `JavaCodeGeneratorTest.java`: +- Run a single integration test for API like `Redis`, it generates Java source + code using the Java microgenerator and compares them with the goldens files + in `test/integration/goldens/redis`. ```sh - bazel run //:update_com_google_api_generator_engine_JavaCodeGeneratorTest - ``` - or - ```sh - mvn test -DupdateUnitGoldens -Dtest=JavaCodeGeneratorTest + # In the repository root directory + bazelisk test //test/integration:redis ``` -- Run a single integration test for API like `Redis`, it generates Java source - code using the Java microgenerator and compares them with the goldens files - in `test/integration/goldens/redis`. +- Update integration test golden files, for example `Redis`. This clobbers all the + files in `test/integration/goldens/redis`. ```sh - bazel test //test/integration:redis + # In the repository root directory + bazelisk run //test/integration:update_redis ``` -- Update integration test golden files, for example `Redis`. This clobbers all the - files in `test/integration/goldens/redis`. +## Running the Plugin under googleapis with local gapic-generator-java - ```sh - bazel run //test/integration:update_redis - ``` +For running the Plugin with showcase protos and local gapic-generator-java, see +[Showcase Integration Testing](../showcase/README.md). -## Running the Plugin +To generate a production GAPIC API: -1. Clone [googleapis](https://github.com/googleapis/googleapis) and - [gapic-showcase](https://github.com/googleapis/gapic-showcase/). +1. Clone [googleapis](https://github.com/googleapis/googleapis). -2. Copy the protos from Showcase into googleapis/google/showcase. +2. Modify `googleapis/WORKSPACE` to point to local gapic-generator-java - ```sh - mkdir googleapis/google/showcase - cp -r gapic-showcase/schema/google/showcase/v1beta1 googleapis/google/showcase/v1beta1 - ``` + Normally, googleapis's build pulls in gapic-generator-java from Maven Central. + For a local run, we first need to build a local SNAPSHOT jar of the generator. Then we point googleapis to + both the local SNAPSHOT jar and the local copy of the generator. -3. Add the new microgenerator rules to - `googleapis/google/showcase/v1beta1/BUILD.bazel` file as follows: - - ```python - load( - "@com_google_googleapis_imports//:imports.bzl", - # Existing rules here. - "java_gapic_assembly_gradle_pkg", - "java_gapic_library", - "java_proto_library", - "proto_library_with_info", - ) + Replace the following section in googleapis + ``` + _gapic_generator_java_version = "2.13.0" - proto_library_with_info( - name = "showcase_proto_with_info", - deps = [ - ":showcase_proto", + maven_install( + artifacts = [ + "com.google.api:gapic-generator-java:" + _gapic_generator_java_version, ], + #Update this False for local development + fail_on_missing_checksum = True, + repositories = [ + "m2Local", + "https://repo.maven.apache.org/maven2/", + ] ) - - java_proto_library( - name = "showcase_java_proto", - deps = [ - ":showcase_proto", - ], + + http_archive( + name = "gapic_generator_java", + strip_prefix = "gapic-generator-java-%s" % _gapic_generator_java_version, + urls = ["https://github.com/googleapis/gapic-generator-java/archive/v%s.zip" % _gapic_generator_java_version], ) + ``` - # This should either replace the existing monolith target or have a unique name - # that includes "java_gapic". - java_gapic_library( - name = "showcase_java_gapic", - srcs = [":showcase_proto_with_info"], - grpc_service_config = "showcase_grpc_service_config.json", - test_deps = [ - ":showcase_java_grpc", - ], - deps = [ - ":showcase_java_proto", - ], - ) + to - java_gapic_assembly_gradle_pkg( - # This name should be unique from the existing target name. - name = "google-cloud-showcase-v1beta1-java", - deps = [ - # This is the new microgen target above. - ":showcase_java_gapic", - # The following targets already exist. - ":showcase_java_grpc", - ":showcase_java_proto", - ":showcase_proto", + ``` + _gapic_generator_java_version = "2.13.1-SNAPSHOT" + + maven_install( + artifacts = [ + "com.google.api:gapic-generator-java:" + _gapic_generator_java_version, ], + #Update this False for local development + fail_on_missing_checksum = False, + repositories = [ + "m2Local", + "https://repo.maven.apache.org/maven2/", + ] ) - ``` - -4. Point to local gapic-generator-java - - Normally, googleapis's build pulls in googleapis/gapic-generator-java from the - Internet: - - ``` - # Java microgenerator. - … - _gapic_generator_java_version = "2.1.0" - - http_archive( + + local_repository( name = "gapic_generator_java", - … - urls = ["https://github.com/googleapis/gapic-generator-java/archive/v%s.zip" % _gapic_generator_java_version], + path = "/absolute/path/to/your/local/gapic-generator-java", ) ``` - By replacing this portion using the built-in local_repository rule, you can mak - it refer to your local development repo: + Note: At the time of writing, the gapic-generator version was `2.13.0`. Update the version to the latest version in the pom.xml - ``` - local_repository( - name = "gapic_generator_java", - path = "/home//gapic-generator-java", - ) - ``` +3. Build the new target. -5. Build the new target. - - ```sh - cd googleapis - bazel build //google/showcase/v1beta1:showcase_java_gapic - ``` - You can generate any client library based on the protos within googleapis. You just need the name of the service within the `java_gapic_assembly_gradle_pkg` rules within the service's `BUILD.bazel` file. For instance, to run your local generator on the `speech`'s v2 service, you can run: - + + ``` + bazelisk build //google/cloud/speech/v2:google-cloud-speech-v2-java + ``` + + Note: If you are running into bazel build issues, you can try to remove gapic-generator-java cached in your local m2 + Try running this command: ``` - bazel build //google/cloud/speech/v2:google-cloud-speech-v2-java + rm -rf ~/.m2/repository/com/google/api/ ``` + and then rebuild gapic-generator-java (`mvn clean install`). + +## FAQ + +### Error in workspace: workspace() got unexpected keyword argument 'managed_directories' + +Full Error: +``` +ERROR: Traceback (most recent call last): + File "/home/alicejli/googleapis/WORKSPACE", line 1, column 10, in + workspace( +Error in workspace: workspace() got unexpected keyword argument 'managed_directories' +ERROR: Error computing the main repository mapping: Encountered error while reading extension file 'tools/build_defs/repo/http.bzl': no such package '@bazel_tools//tools/build_defs/repo': error loading package 'external': Could not load //external package +``` +You may be using the latest version of bazel which this project does not support yet. Try installing bazelisk to force +bazel to use the version specified in `.bazeliskrc` diff --git a/gapic-generator-java/README.md b/gapic-generator-java/README.md index 21b323f741..928ad7b9ff 100644 --- a/gapic-generator-java/README.md +++ b/gapic-generator-java/README.md @@ -4,3 +4,5 @@ Generates a Java client library from protocol buffers. Replaces the Java parts of the [older monolithic generator](https://github.com/googleapis/gapic-generator). + +See [DEVELOPMENT.md](DEVELOPMENT.md) for setting up development environment. diff --git a/gax-java/CONTRIBUTING.md b/gax-java/CONTRIBUTING.md index 110ed02ec0..321735f3fd 100644 --- a/gax-java/CONTRIBUTING.md +++ b/gax-java/CONTRIBUTING.md @@ -20,21 +20,6 @@ frustration later on. All submissions, including submissions by project members, require review. We use Github pull requests for this purpose. -### Building -To build GAX: - -```sh -# Go to the repository root -cd gapic-generator-java - -# Install dependency modules to local Maven repository. Note that -# gapic-generator-java module is not a dependency of gax-java -mvn -B -ntp install -DskipTests --projects '!gapic-generator-java,!gax-java' - -# Build and install gax-java -mvn clean install -f gax-java -``` - ### The small print Contributions made by corporations are covered by a different agreement than the one above, the diff --git a/gax-java/DEVELOPMENT.md b/gax-java/DEVELOPMENT.md new file mode 100644 index 0000000000..8288ce0ad7 --- /dev/null +++ b/gax-java/DEVELOPMENT.md @@ -0,0 +1,23 @@ +# Development of gax-java + +## Building + +To build GAX: + +```sh +# Go to the repository root +cd gapic-generator-java + +# Install dependency modules to local Maven repository. Note that +# gapic-generator-java module is not a dependency of gax-java +mvn -pl '!gapic-generator-java,!gax-java' install -DskipTests + +# Build and install gax-java +mvn clean install -f gax-java +``` + +## How to see the effect of GAX change in code generation by gapic-generator-java + +To see the effect of GAX changes in local gapic-generator-java invocation, see +"Running the Plugin under googleapis with local gapic-generator-java" in +[gapic-generator-java/DEVELOPMENT.md](../gapic-generator-java/DEVELOPMENT.md) diff --git a/gax-java/README.md b/gax-java/README.md index a0d1aa77a3..e3666de1cd 100644 --- a/gax-java/README.md +++ b/gax-java/README.md @@ -1,9 +1,7 @@ Google API Extensions for Java ============================== -[![Build Status](https://travis-ci.org/googleapis/gax-java.svg?branch=main)](https://travis-ci.org/googleapis/gax-java) - -- [Documentation](https://googleapis.dev/java/gax/latest/) +- [API Documentation](https://cloud.google.com/java/docs/reference/gax/latest/overview.html) Google API Extensions for Java (GAX Java) is a library which aids in the development of client libraries for server APIs, based on [GRPC](http://grpc.io) @@ -15,7 +13,7 @@ files can use services such as paged list iteration, request batching, and polling of long-running operations to provide a more convenient and idiomatic API surface to callers. -Currently, this library shouldn't be used independently from google-cloud-java, otherwise there is +Currently, this library shouldn't be used independently of google-cloud-java, otherwise there is a high risk of diamond dependency problems, because google-cloud-java uses beta features from this library which can change in breaking ways between versions. See [VERSIONING](#versioning) for more information. @@ -36,30 +34,32 @@ If you are using Maven, add this to your pom.xml file com.google.api gax - 2.8.1 + 2.23.0 com.google.api gax-grpc - 2.8.1 + 2.23.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.api:gax:2.8.1', - 'com.google.api:gax-grpc:2.8.1' +compile 'com.google.api:gax:2.23.0', + 'com.google.api:gax-grpc:2.23.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.api" % "gax" % "2.8.1" -libraryDependencies += "com.google.api" % "gax-grpc" % "2.8.1" +libraryDependencies += "com.google.api" % "gax" % "2.23.0" +libraryDependencies += "com.google.api" % "gax-grpc" % "2.23.0" ``` [//]: # ({x-version-update-end}) +To find the latest version, see https://search.maven.org/artifact/com.google.api/gax. + Java Versions ------------- diff --git a/showcase/README.md b/showcase/README.md new file mode 100644 index 0000000000..4f2604469f --- /dev/null +++ b/showcase/README.md @@ -0,0 +1,83 @@ +# Showcase Integration Testing + +[GAPIC Showcase](https://github.com/googleapis/gapic-showcase) is an API that demonstrates Generated +API Client (GAPIC) features and common API patterns used by Google. It follows the [Cloud APIs +design guide](https://cloud.google.com/apis/design/). `gapic-generator-java` generates a client for +the Showcase API which can communicate with a local Showcase server to perform integration tests. + +## Requirements + +* Install [Go](https://go.dev) in your `PATH`. + +## Installing the Server + +Using the latest version of showcase is recommended, but backward compatibility between server +versions is not guaranteed. If changing the version of the server, it may also be necessary to +update to a compatible client version in `./WORKSPACE`. + +```shell +$ GAPIC_SHOWCASE_VERSION=0.25.0 +$ go install github.com/googleapis/gapic-showcase/cmd/gapic-showcase@v"$GAPIC_SHOWCASE_VERSION" +$ PATH=$PATH:`go env GOPATH`/bin +$ gapic-showcase --help +> Root command of gapic-showcase +> +> Usage: +> gapic-showcase [command] +> +> Available Commands: +> completion Emits bash a completion for gapic-showcase +> compliance This service is used to test that GAPICs... +> echo This service is used showcase the four main types... +> help Help about any command +> identity A simple identity service. +> messaging A simple messaging service that implements chat... +> run Runs the showcase server +> sequence Sub-command for Service: Sequence +> testing A service to facilitate running discrete sets of... +> +> Flags: +> -h, --help help for gapic-showcase +> -j, --json Print JSON output +> -v, --verbose Print verbose output +> --version version for gapic-showcase +``` + +## Running the Server + +Run the showcase server to allow requests to be sent to it. This opens port `:7469` to send and +receive requests. + +```shell +$ gapic-showcase run +> 2022/11/21 16:22:15 Showcase listening on port: :7469 +> 2022/11/21 16:22:15 Starting endpoint 0: gRPC endpoint +> 2022/11/21 16:22:15 Starting endpoint 1: HTTP/REST endpoint +> 2022/11/21 16:22:15 Starting endpoint multiplexer +> 2022/11/21 16:22:15 Listening for gRPC-fallback connections +> 2022/11/21 16:22:15 Listening for gRPC connections +> 2022/11/21 16:22:15 Listening for REST connections +> 2022/11/21 16:22:15 Fallback server listening on port: :1337 +``` + +## Running the Integration Tests + +Open a new terminal window in the root project directory. + +```shell +$ cd showcase +$ mvn verify -P enable-integration-tests -P enable-golden-tests +``` + +Note: + +* `-P enable-golden-tests` is optional. These tests do not require a local server. + +## Update the Golden Showcase Files + +Open a new terminal window in the root project directory. + +```shell +$ cd showcase +$ mvn compile -P update +``` From dc40d5a8f013d6d14b08e2c65849da5bab188c67 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 12:43:35 -0500 Subject: [PATCH 42/82] chore(main): release 2.15.2-SNAPSHOT (#1358) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- WORKSPACE | 2 +- api-common-java/pom.xml | 4 +-- gapic-generator-java-bom/pom.xml | 24 ++++++++-------- gapic-generator-java-pom-parent/pom.xml | 2 +- gapic-generator-java/pom.xml | 6 ++-- gax-java/dependencies.properties | 8 +++--- gax-java/gax-bom/pom.xml | 14 +++++----- gax-java/gax-grpc/pom.xml | 4 +-- gax-java/gax-httpjson/pom.xml | 4 +-- gax-java/gax/pom.xml | 4 +-- gax-java/pom.xml | 14 +++++----- .../grpc-google-common-protos/pom.xml | 4 +-- java-common-protos/pom.xml | 8 +++--- .../proto-google-common-protos/pom.xml | 4 +-- java-iam/grpc-google-iam-v1/pom.xml | 4 +-- java-iam/grpc-google-iam-v2/pom.xml | 4 +-- java-iam/grpc-google-iam-v2beta/pom.xml | 4 +-- java-iam/pom.xml | 22 +++++++-------- java-iam/proto-google-iam-v1/pom.xml | 4 +-- java-iam/proto-google-iam-v2/pom.xml | 4 +-- java-iam/proto-google-iam-v2beta/pom.xml | 4 +-- showcase/pom.xml | 2 +- versions.txt | 28 +++++++++---------- 23 files changed, 89 insertions(+), 89 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index d1c0525513..95229a67b6 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -60,7 +60,7 @@ maven_install( repositories = ["https://repo.maven.apache.org/maven2/"], ) -_gapic_generator_java_version = "2.15.1" # {x-version-update:gapic-generator-java:current} +_gapic_generator_java_version = "2.15.2-SNAPSHOT" # {x-version-update:gapic-generator-java:current} maven_install( artifacts = [ diff --git a/api-common-java/pom.xml b/api-common-java/pom.xml index 2e542c1213..f593b804ac 100644 --- a/api-common-java/pom.xml +++ b/api-common-java/pom.xml @@ -5,14 +5,14 @@ com.google.api api-common jar - 2.6.1 + 2.6.2-SNAPSHOT API Common Common utilities for Google APIs in Java com.google.api gapic-generator-java-pom-parent - 2.15.1 + 2.15.2-SNAPSHOT ../gapic-generator-java-pom-parent diff --git a/gapic-generator-java-bom/pom.xml b/gapic-generator-java-bom/pom.xml index 09bb22d4e1..05e0001d2c 100644 --- a/gapic-generator-java-bom/pom.xml +++ b/gapic-generator-java-bom/pom.xml @@ -4,7 +4,7 @@ com.google.api gapic-generator-java-bom pom - 2.15.1 + 2.15.2-SNAPSHOT GAPIC Generator Java BOM BOM for the libraries in gapic-generator-java repository. Users should not @@ -15,7 +15,7 @@ com.google.api gapic-generator-java-pom-parent - 2.15.1 + 2.15.2-SNAPSHOT ../gapic-generator-java-pom-parent @@ -60,56 +60,56 @@ com.google.api api-common - 2.6.1 + 2.6.2-SNAPSHOT com.google.api gax-bom - 2.23.1 + 2.23.2-SNAPSHOT pom import com.google.api.grpc grpc-google-common-protos - 2.14.1 + 2.14.2-SNAPSHOT com.google.api.grpc proto-google-common-protos - 2.14.1 + 2.14.2-SNAPSHOT com.google.api.grpc proto-google-iam-v1 - 1.9.1 + 1.9.2-SNAPSHOT com.google.api.grpc proto-google-iam-v2 - 1.9.1 + 1.9.2-SNAPSHOT com.google.api.grpc proto-google-iam-v2beta - 1.9.1 + 1.9.2-SNAPSHOT com.google.api.grpc grpc-google-iam-v1 - 1.9.1 + 1.9.2-SNAPSHOT com.google.api.grpc grpc-google-iam-v2 - 1.9.1 + 1.9.2-SNAPSHOT com.google.api.grpc grpc-google-iam-v2beta - 1.9.1 + 1.9.2-SNAPSHOT diff --git a/gapic-generator-java-pom-parent/pom.xml b/gapic-generator-java-pom-parent/pom.xml index 5e356643aa..eefddb3394 100644 --- a/gapic-generator-java-pom-parent/pom.xml +++ b/gapic-generator-java-pom-parent/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.google.api gapic-generator-java-pom-parent - 2.15.1 + 2.15.2-SNAPSHOT pom GAPIC Generator Java POM Parent https://github.com/googleapis/gapic-generator-java diff --git a/gapic-generator-java/pom.xml b/gapic-generator-java/pom.xml index 730830e717..9173fc92d0 100644 --- a/gapic-generator-java/pom.xml +++ b/gapic-generator-java/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.google.api gapic-generator-java - 2.15.1 + 2.15.2-SNAPSHOT GAPIC Generator Java GAPIC generator Java @@ -23,7 +23,7 @@ com.google.api gapic-generator-java-pom-parent - 2.15.1 + 2.15.2-SNAPSHOT ../gapic-generator-java-pom-parent @@ -32,7 +32,7 @@ com.google.api gapic-generator-java-bom - 2.15.1 + 2.15.2-SNAPSHOT pom import diff --git a/gax-java/dependencies.properties b/gax-java/dependencies.properties index de92d13cfc..9bc253b3d0 100644 --- a/gax-java/dependencies.properties +++ b/gax-java/dependencies.properties @@ -8,16 +8,16 @@ # Versions of oneself # {x-version-update-start:gax:current} -version.gax=2.23.1 +version.gax=2.23.2-SNAPSHOT # {x-version-update-end} # {x-version-update-start:gax:current} -version.gax_grpc=2.23.1 +version.gax_grpc=2.23.2-SNAPSHOT # {x-version-update-end} # {x-version-update-start:gax:current} -version.gax_bom=2.23.1 +version.gax_bom=2.23.2-SNAPSHOT # {x-version-update-end} # {x-version-update-start:gax-httpjson:current} -version.gax_httpjson=0.108.1 +version.gax_httpjson=0.108.2-SNAPSHOT # {x-version-update-end} # Versions for dependencies which actual artifacts differ between Bazel and Gradle. diff --git a/gax-java/gax-bom/pom.xml b/gax-java/gax-bom/pom.xml index 98ff0b22e9..d365723f80 100644 --- a/gax-java/gax-bom/pom.xml +++ b/gax-java/gax-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.api gax-bom - 2.23.1 + 2.23.2-SNAPSHOT pom GAX (Google Api eXtensions) for Java (BOM) Google Api eXtensions for Java (BOM) @@ -42,34 +42,34 @@ com.google.api gax - 2.23.1 + 2.23.2-SNAPSHOT com.google.api gax - 2.23.1 + 2.23.2-SNAPSHOT testlib com.google.api gax-grpc - 2.23.1 + 2.23.2-SNAPSHOT com.google.api gax-grpc - 2.23.1 + 2.23.2-SNAPSHOT testlib com.google.api gax-httpjson - 0.108.1 + 0.108.2-SNAPSHOT com.google.api gax-httpjson - 0.108.1 + 0.108.2-SNAPSHOT testlib diff --git a/gax-java/gax-grpc/pom.xml b/gax-java/gax-grpc/pom.xml index 57ad2cce27..4c616d83b6 100644 --- a/gax-java/gax-grpc/pom.xml +++ b/gax-java/gax-grpc/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax-grpc - 2.23.1 + 2.23.2-SNAPSHOT jar GAX (Google Api eXtensions) for Java (gRPC) Google Api eXtensions for Java (gRPC) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.23.1 + 2.23.2-SNAPSHOT diff --git a/gax-java/gax-httpjson/pom.xml b/gax-java/gax-httpjson/pom.xml index 146a37be75..c085a5b7ec 100644 --- a/gax-java/gax-httpjson/pom.xml +++ b/gax-java/gax-httpjson/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax-httpjson - 0.108.1 + 0.108.2-SNAPSHOT jar GAX (Google Api eXtensions) for Java (HTTP JSON) Google Api eXtensions for Java (HTTP JSON) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.23.1 + 2.23.2-SNAPSHOT diff --git a/gax-java/gax/pom.xml b/gax-java/gax/pom.xml index 11f72d6947..6c9dc45764 100644 --- a/gax-java/gax/pom.xml +++ b/gax-java/gax/pom.xml @@ -3,7 +3,7 @@ 4.0.0 gax - 2.23.1 + 2.23.2-SNAPSHOT jar GAX (Google Api eXtensions) for Java (Core) Google Api eXtensions for Java (Core) @@ -11,7 +11,7 @@ com.google.api gax-parent - 2.23.1 + 2.23.2-SNAPSHOT diff --git a/gax-java/pom.xml b/gax-java/pom.xml index df4c6e4c9c..80b80fb036 100644 --- a/gax-java/pom.xml +++ b/gax-java/pom.xml @@ -4,14 +4,14 @@ com.google.api gax-parent pom - 2.23.1 + 2.23.2-SNAPSHOT GAX (Google Api eXtensions) for Java (Parent) Google Api eXtensions for Java (Parent) com.google.api gapic-generator-java-pom-parent - 2.15.1 + 2.15.2-SNAPSHOT ../gapic-generator-java-pom-parent @@ -51,7 +51,7 @@ com.google.api api-common - 2.6.1 + 2.6.2-SNAPSHOT com.google.auth @@ -109,24 +109,24 @@ com.google.api gax - 2.23.1 + 2.23.2-SNAPSHOT com.google.api gax - 2.23.1 + 2.23.2-SNAPSHOT test-jar testlib com.google.api.grpc proto-google-common-protos - 2.14.1 + 2.14.2-SNAPSHOT com.google.api.grpc grpc-google-common-protos - 2.14.1 + 2.14.2-SNAPSHOT io.grpc diff --git a/java-common-protos/grpc-google-common-protos/pom.xml b/java-common-protos/grpc-google-common-protos/pom.xml index 4e632d825d..b38edf934c 100644 --- a/java-common-protos/grpc-google-common-protos/pom.xml +++ b/java-common-protos/grpc-google-common-protos/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-common-protos - 2.14.1 + 2.14.2-SNAPSHOT grpc-google-common-protos GRPC library for grpc-google-common-protos com.google.api.grpc google-common-protos-parent - 2.14.1 + 2.14.2-SNAPSHOT diff --git a/java-common-protos/pom.xml b/java-common-protos/pom.xml index eff391c2ff..b17ea7fe4c 100644 --- a/java-common-protos/pom.xml +++ b/java-common-protos/pom.xml @@ -4,7 +4,7 @@ com.google.api.grpc google-common-protos-parent pom - 2.14.1 + 2.14.2-SNAPSHOT Google Common Protos Parent Java idiomatic client for Google Cloud Platform services. @@ -13,7 +13,7 @@ com.google.api gapic-generator-java-pom-parent - 2.15.1 + 2.15.2-SNAPSHOT ../gapic-generator-java-pom-parent @@ -69,7 +69,7 @@ com.google.api.grpc grpc-google-common-protos - 2.14.1 + 2.14.2-SNAPSHOT io.grpc @@ -81,7 +81,7 @@ com.google.api.grpc proto-google-common-protos - 2.14.1 + 2.14.2-SNAPSHOT com.google.guava diff --git a/java-common-protos/proto-google-common-protos/pom.xml b/java-common-protos/proto-google-common-protos/pom.xml index 4a9d53e87d..61ed372b4f 100644 --- a/java-common-protos/proto-google-common-protos/pom.xml +++ b/java-common-protos/proto-google-common-protos/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.google.api.grpc proto-google-common-protos - 2.14.1 + 2.14.2-SNAPSHOT proto-google-common-protos PROTO library for proto-google-common-protos com.google.api.grpc google-common-protos-parent - 2.14.1 + 2.14.2-SNAPSHOT diff --git a/java-iam/grpc-google-iam-v1/pom.xml b/java-iam/grpc-google-iam-v1/pom.xml index 48d3be9ff2..413916d16e 100644 --- a/java-iam/grpc-google-iam-v1/pom.xml +++ b/java-iam/grpc-google-iam-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v1 - 1.9.1 + 1.9.2-SNAPSHOT grpc-google-iam-v1 GRPC library for grpc-google-iam-v1 com.google.cloud google-iam-parent - 1.9.1 + 1.9.2-SNAPSHOT diff --git a/java-iam/grpc-google-iam-v2/pom.xml b/java-iam/grpc-google-iam-v2/pom.xml index 6c7902f7ea..2f91ec2140 100644 --- a/java-iam/grpc-google-iam-v2/pom.xml +++ b/java-iam/grpc-google-iam-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v2 - 1.9.1 + 1.9.2-SNAPSHOT grpc-google-iam-v2 GRPC library for proto-google-iam-v2 com.google.cloud google-iam-parent - 1.9.1 + 1.9.2-SNAPSHOT diff --git a/java-iam/grpc-google-iam-v2beta/pom.xml b/java-iam/grpc-google-iam-v2beta/pom.xml index a2d7e7b518..61ecdd740d 100644 --- a/java-iam/grpc-google-iam-v2beta/pom.xml +++ b/java-iam/grpc-google-iam-v2beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-iam-v2beta - 1.9.1 + 1.9.2-SNAPSHOT grpc-google-iam-v2beta GRPC library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.9.1 + 1.9.2-SNAPSHOT diff --git a/java-iam/pom.xml b/java-iam/pom.xml index 924be68796..edd71e8394 100644 --- a/java-iam/pom.xml +++ b/java-iam/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-iam-parent pom - 1.9.1 + 1.9.2-SNAPSHOT Google IAM Parent Java idiomatic client for Google Cloud Platform services. @@ -13,7 +13,7 @@ com.google.api gapic-generator-java-pom-parent - 2.15.1 + 2.15.2-SNAPSHOT ../gapic-generator-java-pom-parent @@ -81,49 +81,49 @@ com.google.api gax-bom - 2.23.1 + 2.23.2-SNAPSHOT pom import com.google.api.grpc proto-google-iam-v2 - 1.9.1 + 1.9.2-SNAPSHOT com.google.api.grpc grpc-google-iam-v2 - 1.9.1 + 1.9.2-SNAPSHOT com.google.cloud google-iam-policy - 1.9.1 + 1.9.2-SNAPSHOT com.google.api.grpc proto-google-common-protos - 2.14.1 + 2.14.2-SNAPSHOT com.google.api.grpc proto-google-iam-v2beta - 1.9.1 + 1.9.2-SNAPSHOT com.google.api.grpc grpc-google-iam-v1 - 1.9.1 + 1.9.2-SNAPSHOT com.google.api.grpc grpc-google-iam-v2beta - 1.9.1 + 1.9.2-SNAPSHOT com.google.api.grpc proto-google-iam-v1 - 1.9.1 + 1.9.2-SNAPSHOT javax.annotation diff --git a/java-iam/proto-google-iam-v1/pom.xml b/java-iam/proto-google-iam-v1/pom.xml index f9bbe69900..d667c60548 100644 --- a/java-iam/proto-google-iam-v1/pom.xml +++ b/java-iam/proto-google-iam-v1/pom.xml @@ -3,13 +3,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v1 - 1.9.1 + 1.9.2-SNAPSHOT proto-google-iam-v1 PROTO library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.9.1 + 1.9.2-SNAPSHOT diff --git a/java-iam/proto-google-iam-v2/pom.xml b/java-iam/proto-google-iam-v2/pom.xml index 2e27ba8f96..e197f83ffd 100644 --- a/java-iam/proto-google-iam-v2/pom.xml +++ b/java-iam/proto-google-iam-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v2 - 1.9.1 + 1.9.2-SNAPSHOT proto-google-iam-v2 Proto library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.9.1 + 1.9.2-SNAPSHOT diff --git a/java-iam/proto-google-iam-v2beta/pom.xml b/java-iam/proto-google-iam-v2beta/pom.xml index 4955da7d40..c2aa8699d9 100644 --- a/java-iam/proto-google-iam-v2beta/pom.xml +++ b/java-iam/proto-google-iam-v2beta/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-iam-v2beta - 1.9.1 + 1.9.2-SNAPSHOT proto-google-iam-v2beta Proto library for proto-google-iam-v1 com.google.cloud google-iam-parent - 1.9.1 + 1.9.2-SNAPSHOT diff --git a/showcase/pom.xml b/showcase/pom.xml index e557cb8cde..53782fbd01 100644 --- a/showcase/pom.xml +++ b/showcase/pom.xml @@ -15,7 +15,7 @@ com.google.api gapic-generator-java-bom - 2.15.1 + 2.15.2-SNAPSHOT ../gapic-generator-java-bom diff --git a/versions.txt b/versions.txt index e45e9c1a5e..fa1ce6bc0f 100644 --- a/versions.txt +++ b/versions.txt @@ -1,17 +1,17 @@ # Format: # module:released-version:current-version -gapic-generator-java:2.15.1:2.15.1 -api-common:2.6.1:2.6.1 -gax:2.23.1:2.23.1 -gax-grpc:2.23.1:2.23.1 -gax-httpjson:0.108.1:0.108.1 -proto-google-common-protos:2.14.1:2.14.1 -grpc-google-common-protos:2.14.1:2.14.1 -proto-google-iam-v1:1.9.1:1.9.1 -grpc-google-iam-v1:1.9.1:1.9.1 -proto-google-iam-v2beta:1.9.1:1.9.1 -grpc-google-iam-v2beta:1.9.1:1.9.1 -google-iam-policy:1.9.1:1.9.1 -proto-google-iam-v2:1.9.1:1.9.1 -grpc-google-iam-v2:1.9.1:1.9.1 +gapic-generator-java:2.15.1:2.15.2-SNAPSHOT +api-common:2.6.1:2.6.2-SNAPSHOT +gax:2.23.1:2.23.2-SNAPSHOT +gax-grpc:2.23.1:2.23.2-SNAPSHOT +gax-httpjson:0.108.1:0.108.2-SNAPSHOT +proto-google-common-protos:2.14.1:2.14.2-SNAPSHOT +grpc-google-common-protos:2.14.1:2.14.2-SNAPSHOT +proto-google-iam-v1:1.9.1:1.9.2-SNAPSHOT +grpc-google-iam-v1:1.9.1:1.9.2-SNAPSHOT +proto-google-iam-v2beta:1.9.1:1.9.2-SNAPSHOT +grpc-google-iam-v2beta:1.9.1:1.9.2-SNAPSHOT +google-iam-policy:1.9.1:1.9.2-SNAPSHOT +proto-google-iam-v2:1.9.1:1.9.2-SNAPSHOT +grpc-google-iam-v2:1.9.1:1.9.2-SNAPSHOT From eeb5665acadb3c8ef02887db5b6a9f8f031a3671 Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Wed, 15 Feb 2023 16:06:11 -0500 Subject: [PATCH 43/82] chore: renovate to group Protobuf artifacts (#1362) Copying packageGroup configuration from https://togithub.com/googleapis/synthtool/blob/master/synthtool/gcp/templates/java_library/renovate.json This should avoid separate pull requests for Protobuf: https://togithub.com/googleapis/gapic-generator-java/pull/1155 and https://togithub.com/googleapis/gapic-generator-java/pull/1154 --- renovate.json | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/renovate.json b/renovate.json index 6fd84f1a85..6cc1ba4d5d 100644 --- a/renovate.json +++ b/renovate.json @@ -3,5 +3,70 @@ "config:base" ], "ignorePaths": [".kokoro/requirements.txt"], - "ignoreDeps": ["rules_pkg"] + "ignoreDeps": ["rules_pkg"], + "packageRules": [ + { + "packagePatterns": [ + "^com.google.guava:" + ], + "versionScheme": "docker" + }, + { + "packagePatterns": [ + "*" + ], + "semanticCommitType": "deps", + "semanticCommitScope": null + }, + { + "packagePatterns": [ + "^org.apache.maven", + "^org.jacoco:", + "^org.codehaus.mojo:", + "^org.sonatype.plugins:", + "^com.coveo:", + "^com.google.cloud:google-cloud-shared-config" + ], + "semanticCommitType": "build", + "semanticCommitScope": "deps" + }, + { + "packagePatterns": [ + "^{{metadata['repo']['distribution_name']}}", + "^com.google.cloud:libraries-bom", + "^com.google.cloud.samples:shared-configuration" + ], + "semanticCommitType": "chore", + "semanticCommitScope": "deps" + }, + { + "packagePatterns": [ + "^junit:junit", + "^com.google.truth:truth", + "^org.mockito:mockito-core", + "^org.objenesis:objenesis", + "^com.google.cloud:google-cloud-conformance-tests" + ], + "semanticCommitType": "test", + "semanticCommitScope": "deps" + }, + { + "packagePatterns": [ + "^com.google.cloud:google-cloud-" + ], + "ignoreUnstable": false + }, + { + "packagePatterns": [ + "^com.fasterxml.jackson.core" + ], + "groupName": "jackson dependencies" + }, + { + "packagePatterns": [ + "^com.google.protobuf" + ], + "groupName": "Protobuf dependencies" + } + ], } From 40e49dad67946c70b94a509d16fe6b9eddadcb05 Mon Sep 17 00:00:00 2001 From: Tomo Suzuki Date: Tue, 21 Feb 2023 14:38:58 -0500 Subject: [PATCH 44/82] chore: README.md to explain service_config.proto (#1361) * chore: README.md to explain service_config.proto * add link --- gapic-generator-java/README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gapic-generator-java/README.md b/gapic-generator-java/README.md index 928ad7b9ff..76799f6f81 100644 --- a/gapic-generator-java/README.md +++ b/gapic-generator-java/README.md @@ -6,3 +6,16 @@ Replaces the Java parts of the [older monolithic generator](https://github.com/googleapis/gapic-generator). See [DEVELOPMENT.md](DEVELOPMENT.md) for setting up development environment. + +## service_config.proto + +We use the `src/main/proto/service_config.proto` file to generate corresponding +Java class files. +They are needed to generate client libraries for gRPC-based Google services. + +The source of `src/main/proto/service_config.proto` is the +[https://github.com/grpc/grpc-proto repository]( +https://github.com/grpc/grpc-proto/blob/master/grpc/service_config/service_config.proto). +We copy the file from the repository when a new enhancement is made in the file +and the service team asks us to incorporate the enhancement into the code +generator. From 4356783d9a4d6caa7bc38edaac61fc0d12fd825a Mon Sep 17 00:00:00 2001 From: Deepankar Dixit <90280028+ddixit14@users.noreply.github.com> Date: Wed, 22 Feb 2023 11:16:36 -0500 Subject: [PATCH 45/82] chore: Telling owlbot to ignore these files & it's a monorepo (#1372) * chore: Telling owlbot to ignore these files & it's a monorepo --- java-common-protos/owlbot.py | 18 +++++++++++++----- java-iam/owlbot.py | 17 +++++++++++++---- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/java-common-protos/owlbot.py b/java-common-protos/owlbot.py index 0c9831271e..ffb1f932a3 100644 --- a/java-common-protos/owlbot.py +++ b/java-common-protos/owlbot.py @@ -34,9 +34,17 @@ s.move(library) s.remove_staging_dirs() -java.common_templates(excludes=[ - 'README.md', - 'samples/*', - '.github/workflows/samples.yaml', - '.kokoro/dependencies.sh', +java.common_templates(monorepo=True,excludes=[ + ".github/*", + ".kokoro/*", + "CODE_OF_CONDUCT.md", + "CONTRIBUTING.md", + "LICENSE", + "SECURITY.md", + "java.header", + "license-checks.xml", + "README.md", + "samples/*", + "renovate.json", + ".gitignore" ]) diff --git a/java-iam/owlbot.py b/java-iam/owlbot.py index a53d819dd3..dc410938cd 100644 --- a/java-iam/owlbot.py +++ b/java-iam/owlbot.py @@ -22,8 +22,17 @@ s.move(library) s.remove_staging_dirs() -java.common_templates(excludes=[ - 'README.md', - 'samples/*', - '.github/workflows/samples.yaml', +java.common_templates(monorepo=True,excludes=[ + ".github/*", + ".kokoro/*", + "CODE_OF_CONDUCT.md", + "CONTRIBUTING.md", + "LICENSE", + "SECURITY.md", + "java.header", + "license-checks.xml", + "README.md", + "samples/*", + "renovate.json", + ".gitignore" ]) From 9a636bb3a9b9a50232f856cb86bc863c8b60f7b4 Mon Sep 17 00:00:00 2001 From: Blake Li Date: Wed, 22 Feb 2023 16:39:01 -0500 Subject: [PATCH 46/82] fix: Change the default scope of gax from implementation to api in auto-generated gradle files for self-service client libraries. (#1374) --- rules_java_gapic/resources/gradle/client_grpc.gradle.tmpl | 6 +++--- .../resources/gradle/client_grpcrest.gradle.tmpl | 8 ++++---- rules_java_gapic/resources/gradle/client_rest.gradle.tmpl | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/rules_java_gapic/resources/gradle/client_grpc.gradle.tmpl b/rules_java_gapic/resources/gradle/client_grpc.gradle.tmpl index 2b12008b58..d00e92e891 100644 --- a/rules_java_gapic/resources/gradle/client_grpc.gradle.tmpl +++ b/rules_java_gapic/resources/gradle/client_grpc.gradle.tmpl @@ -6,11 +6,11 @@ compileJava.options.encoding = 'UTF-8' javadoc.options.encoding = 'UTF-8' dependencies { - implementation 'com.google.api:gax:{{version.gax}}' + api 'com.google.api:gax:{{version.gax}}' testImplementation 'com.google.api:gax:{{version.gax}}:testlib' - implementation 'com.google.api:gax-grpc:{{version.gax_grpc}}' + api 'com.google.api:gax-grpc:{{version.gax_grpc}}' testImplementation 'com.google.api:gax-grpc:{{version.gax_grpc}}:testlib' - implementation 'io.grpc:grpc-protobuf:{{version.io_grpc}}' + api 'io.grpc:grpc-protobuf:{{version.io_grpc}}' testImplementation 'io.grpc:grpc-stub:{{version.io_grpc}}' testImplementation 'io.grpc:grpc-netty-shaded:{{version.io_grpc}}' testImplementation '{{maven.junit_junit}}' diff --git a/rules_java_gapic/resources/gradle/client_grpcrest.gradle.tmpl b/rules_java_gapic/resources/gradle/client_grpcrest.gradle.tmpl index edd95846c3..6145198a0a 100644 --- a/rules_java_gapic/resources/gradle/client_grpcrest.gradle.tmpl +++ b/rules_java_gapic/resources/gradle/client_grpcrest.gradle.tmpl @@ -6,13 +6,13 @@ compileJava.options.encoding = 'UTF-8' javadoc.options.encoding = 'UTF-8' dependencies { - implementation 'com.google.api:gax:{{version.gax}}' + api 'com.google.api:gax:{{version.gax}}' testImplementation 'com.google.api:gax:{{version.gax}}:testlib' - implementation 'com.google.api:gax-grpc:{{version.gax_grpc}}' + api 'com.google.api:gax-grpc:{{version.gax_grpc}}' testImplementation 'com.google.api:gax-grpc:{{version.gax_grpc}}:testlib' - implementation 'com.google.api:gax-httpjson:{{version.gax_httpjson}}' + api 'com.google.api:gax-httpjson:{{version.gax_httpjson}}' testImplementation 'com.google.api:gax-httpjson:{{version.gax_httpjson}}:testlib' - implementation 'io.grpc:grpc-protobuf:{{version.io_grpc}}' + api 'io.grpc:grpc-protobuf:{{version.io_grpc}}' testImplementation 'io.grpc:grpc-stub:{{version.io_grpc}}' testImplementation 'io.grpc:grpc-netty-shaded:{{version.io_grpc}}' testImplementation '{{maven.junit_junit}}' diff --git a/rules_java_gapic/resources/gradle/client_rest.gradle.tmpl b/rules_java_gapic/resources/gradle/client_rest.gradle.tmpl index aeb2e68d36..74c5020a9d 100644 --- a/rules_java_gapic/resources/gradle/client_rest.gradle.tmpl +++ b/rules_java_gapic/resources/gradle/client_rest.gradle.tmpl @@ -6,9 +6,9 @@ compileJava.options.encoding = 'UTF-8' javadoc.options.encoding = 'UTF-8' dependencies { - implementation 'com.google.api:gax:{{version.gax}}' + api 'com.google.api:gax:{{version.gax}}' testImplementation 'com.google.api:gax:{{version.gax}}:testlib' - implementation 'com.google.api:gax-httpjson:{{version.gax_httpjson}}' + api 'com.google.api:gax-httpjson:{{version.gax_httpjson}}' testImplementation 'com.google.api:gax-httpjson:{{version.gax_httpjson}}:testlib' testImplementation '{{maven.junit_junit}}' From 1b3e2923e0bd0299ee8a2a4daec9d56bfcd4fa3d Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 2 Feb 2023 14:03:45 -0500 Subject: [PATCH 47/82] chore: Update variable name --- .../stub/HttpJsonOperationsStub.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index e37304806c..6e790fb635 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -238,44 +238,44 @@ public static final HttpJsonOperationsStub create( } public static final HttpJsonOperationsStub create( - OperationsStubSettings settings, Map customOperationHttpBindings) + OperationsStubSettings settings, Map customHttpBindings) throws IOException { return new HttpJsonOperationsStub( - settings, ClientContext.create(settings), customOperationHttpBindings); + settings, ClientContext.create(settings), customHttpBindings); } public static final HttpJsonOperationsStub create( - ClientContext clientContext, Map customOperationHttpBindings) + ClientContext clientContext, Map customHttpBindings) throws IOException { return new HttpJsonOperationsStub( - OperationsStubSettings.newBuilder().build(), clientContext, customOperationHttpBindings); + OperationsStubSettings.newBuilder().build(), clientContext, customHttpBindings); } public static final HttpJsonOperationsStub create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, - Map customOperationHttpBindings) + Map customHttpBindings) throws IOException { return new HttpJsonOperationsStub( OperationsStubSettings.newBuilder().build(), clientContext, callableFactory, TypeRegistry.getEmptyTypeRegistry(), - customOperationHttpBindings); + customHttpBindings); } public static final HttpJsonOperationsStub create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, TypeRegistry typeRegistry, - Map customOperationHttpBindings) + Map customHttpBindings) throws IOException { return new HttpJsonOperationsStub( OperationsStubSettings.newBuilder().build(), clientContext, callableFactory, typeRegistry, - customOperationHttpBindings); + customHttpBindings); } /** @@ -286,14 +286,14 @@ public static final HttpJsonOperationsStub create( protected HttpJsonOperationsStub( OperationsStubSettings settings, ClientContext clientContext, - Map customOperationHttpBindings) + Map customHttpBindings) throws IOException { this( settings, clientContext, new HttpJsonOperationsCallableFactory(), TypeRegistry.getEmptyTypeRegistry(), - customOperationHttpBindings); + customHttpBindings); } /** @@ -306,7 +306,7 @@ protected HttpJsonOperationsStub( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, TypeRegistry typeRegistry, - Map customOperationHttpBindings) + Map customHttpBindings) throws IOException { this.callableFactory = callableFactory; @@ -315,7 +315,7 @@ protected HttpJsonOperationsStub( String apiVersion = packageMatcher.find() ? packageMatcher.group("version") : null; - updateDefaultOperationApiMethodDescriptors(customOperationHttpBindings); + updateDefaultApiMethodDescriptors(customHttpBindings); HttpJsonCallSettings listOperationsTransportSettings = @@ -368,7 +368,7 @@ protected HttpJsonOperationsStub( backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources()); } - private static void updateDefaultOperationApiMethodDescriptors( + private static void updateDefaultApiMethodDescriptors( Map customOperationHttpBindings) { if (customOperationHttpBindings.containsKey(LRO_LIST_OPERATIONS)) { listOperationsMethodDescriptor = From a64100f58e2cf0af4bbe5fcc98b8aa7d8af3bdd4 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 2 Feb 2023 14:04:10 -0500 Subject: [PATCH 48/82] chore: Fix format issues --- .../longrunning/stub/HttpJsonOperationsStub.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 6e790fb635..b54a810314 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -238,15 +238,12 @@ public static final HttpJsonOperationsStub create( } public static final HttpJsonOperationsStub create( - OperationsStubSettings settings, Map customHttpBindings) - throws IOException { - return new HttpJsonOperationsStub( - settings, ClientContext.create(settings), customHttpBindings); + OperationsStubSettings settings, Map customHttpBindings) throws IOException { + return new HttpJsonOperationsStub(settings, ClientContext.create(settings), customHttpBindings); } public static final HttpJsonOperationsStub create( - ClientContext clientContext, Map customHttpBindings) - throws IOException { + ClientContext clientContext, Map customHttpBindings) throws IOException { return new HttpJsonOperationsStub( OperationsStubSettings.newBuilder().build(), clientContext, customHttpBindings); } @@ -261,7 +258,7 @@ public static final HttpJsonOperationsStub create( clientContext, callableFactory, TypeRegistry.getEmptyTypeRegistry(), - customHttpBindings); + customHttpBindings); } public static final HttpJsonOperationsStub create( @@ -275,7 +272,7 @@ public static final HttpJsonOperationsStub create( clientContext, callableFactory, typeRegistry, - customHttpBindings); + customHttpBindings); } /** @@ -293,7 +290,7 @@ protected HttpJsonOperationsStub( clientContext, new HttpJsonOperationsCallableFactory(), TypeRegistry.getEmptyTypeRegistry(), - customHttpBindings); + customHttpBindings); } /** From e8fb41527762579944bec08c9ac40dfbb621e6b6 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 22 Feb 2023 17:58:27 -0500 Subject: [PATCH 49/82] fix: Use HttpRule as Value for Custom Bindings --- .../HttpJsonServiceStubClassComposer.java | 78 +++++++++++++++---- .../stub/HttpJsonOperationsStub.java | 26 ++++--- .../stub/OperationsStubSettings.java | 3 +- 3 files changed, 78 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 404f0ea6f7..7ebe6b5c23 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 @@ -14,6 +14,7 @@ package com.google.api.generator.gapic.composer.rest; +import com.google.api.CustomHttpPattern; import com.google.api.HttpRule; import com.google.api.core.InternalApi; import com.google.api.gax.httpjson.ApiMethodDescriptor; @@ -113,6 +114,7 @@ private static TypeStore createStaticTypes() { HttpJsonCallSettings.class, HttpJsonOperationSnapshot.class, HttpJsonStubCallableFactory.class, + HttpRule.class, Map.class, ImmutableMap.class, ProtoMessageRequestFormatter.class, @@ -1094,20 +1096,46 @@ protected List createOperationsStubInitExpr( if (standardOpStub.equals(operationsStubType.reference().fullName())) { arguments.add(TYPE_REGISTRY_VAR_EXPR); } - Map customHttpBindings = parseCustomHttpBindings(context); - Map operationCustomHttpBindings = - filterCustomHttpBindingsMap(customHttpBindings, x -> x.getKey().contains(LRO_NAME_PREFIX)); + Map operationCustomHttpBindings = + parseCustomHttpBindings(context, x -> x.getSelector().contains(LRO_NAME_PREFIX)); if (operationCustomHttpBindings.size() > 0) { Expr operationCustomHttpBindingsBuilderExpr = MethodInvocationExpr.builder() .setStaticReferenceType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) .setMethodName("builder") - .setGenerics(Arrays.asList(TypeNode.STRING.reference(), TypeNode.STRING.reference())) + .setGenerics( + Arrays.asList( + TypeNode.STRING.reference(), + FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName()).reference())) .build(); - for (Map.Entry entrySet : operationCustomHttpBindings.entrySet()) { + for (Map.Entry entrySet : operationCustomHttpBindings.entrySet()) { String selector = entrySet.getKey(); - String path = entrySet.getValue(); + HttpRule httpRule = entrySet.getValue(); + + Expr httpRuleBuilderExpr = + MethodInvocationExpr.builder() + .setStaticReferenceType(FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName())) + .setMethodName("newBuilder") + .build(); + + httpRuleBuilderExpr = + MethodInvocationExpr.builder() + .setExprReferenceExpr(httpRuleBuilderExpr) + .setMethodName(getKeyBasedOnPatternCase(httpRule)) + .setArguments( + ValueExpr.withValue( + StringObjectValue.withValue(getValueBasedOnPatternCase(httpRule)))) + .setReturnType(FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName())) + .build(); + + httpRuleBuilderExpr = + MethodInvocationExpr.builder() + .setExprReferenceExpr(httpRuleBuilderExpr) + .setMethodName("build") + .setReturnType(FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName())) + .build(); + operationCustomHttpBindingsBuilderExpr = MethodInvocationExpr.builder() .setExprReferenceExpr(operationCustomHttpBindingsBuilderExpr) @@ -1115,7 +1143,7 @@ protected List createOperationsStubInitExpr( .setArguments( Arrays.asList( ValueExpr.withValue(StringObjectValue.withValue(selector)), - ValueExpr.withValue(StringObjectValue.withValue(path)))) + httpRuleBuilderExpr)) .build(); } @@ -1143,22 +1171,38 @@ protected List createOperationsStubInitExpr( .build()); } - private Map parseCustomHttpBindings(GapicContext context) { - Map customHttpBindings = new HashMap<>(); + private Map parseCustomHttpBindings( + GapicContext context, Predicate predicate) { com.google.api.Service service = context.serviceYamlProto(); - if (service != null && service.getHttp() != null) { - for (HttpRule httpRule : service.getHttp().getRulesList()) { - customHttpBindings.put(httpRule.getSelector(), getValueBasedOnPatternCase(httpRule)); + if (service == null || service.getHttp() == null) { + return ImmutableMap.of(); + } + Map customHttpBindings = new HashMap<>(); + for (HttpRule httpRule : service.getHttp().getRulesList()) { + if (predicate.test(httpRule)) { + customHttpBindings.put(httpRule.getSelector(), httpRule); } } return customHttpBindings; } - private Map filterCustomHttpBindingsMap( - Map customHttpBindings, Predicate> predicate) { - return customHttpBindings.entrySet().stream() - .filter(predicate) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + private String getKeyBasedOnPatternCase(HttpRule httpRule) { + switch (httpRule.getPatternCase().getNumber()) { + case 2: + return "setGet"; + case 3: + return "setPut"; + case 4: + return "setPost"; + case 5: + return "setDelete"; + case 6: + return "setPatch"; +// case 8: +// return "Custom"; + default: + return null; + } } private String getValueBasedOnPatternCase(HttpRule httpRule) { diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index b54a810314..7e153d6d3a 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -29,6 +29,7 @@ */ package com.google.api.gax.httpjson.longrunning.stub; +import com.google.api.HttpRule; import com.google.api.client.http.HttpMethods; import com.google.api.core.InternalApi; import com.google.api.gax.core.BackgroundResource; @@ -238,12 +239,13 @@ public static final HttpJsonOperationsStub create( } public static final HttpJsonOperationsStub create( - OperationsStubSettings settings, Map customHttpBindings) throws IOException { + OperationsStubSettings settings, Map customHttpBindings) + throws IOException { return new HttpJsonOperationsStub(settings, ClientContext.create(settings), customHttpBindings); } public static final HttpJsonOperationsStub create( - ClientContext clientContext, Map customHttpBindings) throws IOException { + ClientContext clientContext, Map customHttpBindings) throws IOException { return new HttpJsonOperationsStub( OperationsStubSettings.newBuilder().build(), clientContext, customHttpBindings); } @@ -251,7 +253,7 @@ public static final HttpJsonOperationsStub create( public static final HttpJsonOperationsStub create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, - Map customHttpBindings) + Map customHttpBindings) throws IOException { return new HttpJsonOperationsStub( OperationsStubSettings.newBuilder().build(), @@ -265,7 +267,7 @@ public static final HttpJsonOperationsStub create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, TypeRegistry typeRegistry, - Map customHttpBindings) + Map customHttpBindings) throws IOException { return new HttpJsonOperationsStub( OperationsStubSettings.newBuilder().build(), @@ -283,7 +285,7 @@ public static final HttpJsonOperationsStub create( protected HttpJsonOperationsStub( OperationsStubSettings settings, ClientContext clientContext, - Map customHttpBindings) + Map customHttpBindings) throws IOException { this( settings, @@ -303,7 +305,7 @@ protected HttpJsonOperationsStub( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, TypeRegistry typeRegistry, - Map customHttpBindings) + Map customHttpBindings) throws IOException { this.callableFactory = callableFactory; @@ -366,7 +368,7 @@ protected HttpJsonOperationsStub( } private static void updateDefaultApiMethodDescriptors( - Map customOperationHttpBindings) { + Map customOperationHttpBindings) { if (customOperationHttpBindings.containsKey(LRO_LIST_OPERATIONS)) { listOperationsMethodDescriptor = listOperationsMethodDescriptor @@ -375,7 +377,7 @@ private static void updateDefaultApiMethodDescriptors( ((ProtoMessageRequestFormatter) listOperationsMethodDescriptor.getRequestFormatter()) .toBuilder() - .updateRawPath(customOperationHttpBindings.get(LRO_LIST_OPERATIONS)) + .updateRawPath(customOperationHttpBindings.get(LRO_LIST_OPERATIONS).getGet()) .build()) .build(); } @@ -388,7 +390,7 @@ private static void updateDefaultApiMethodDescriptors( ((ProtoMessageRequestFormatter) getOperationMethodDescriptor.getRequestFormatter()) .toBuilder() - .updateRawPath(customOperationHttpBindings.get(LRO_GET_OPERATION)) + .updateRawPath(customOperationHttpBindings.get(LRO_GET_OPERATION).getGet()) .build()) .build(); } @@ -401,7 +403,8 @@ private static void updateDefaultApiMethodDescriptors( ((ProtoMessageRequestFormatter) deleteOperationMethodDescriptor.getRequestFormatter()) .toBuilder() - .updateRawPath(customOperationHttpBindings.get(LRO_DELETE_OPERATION)) + .updateRawPath( + customOperationHttpBindings.get(LRO_DELETE_OPERATION).getDelete()) .build()) .build(); } @@ -414,7 +417,8 @@ private static void updateDefaultApiMethodDescriptors( ((ProtoMessageRequestFormatter) cancelOperationMethodDescriptor.getRequestFormatter()) .toBuilder() - .updateRawPath(customOperationHttpBindings.get(LRO_CANCEL_OPERATION)) + .updateRawPath( + customOperationHttpBindings.get(LRO_CANCEL_OPERATION).getPost()) .build()) .build(); } diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java index 078f8f0fec..daec574a6e 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java @@ -31,6 +31,7 @@ import static com.google.api.gax.httpjson.longrunning.OperationsClient.ListOperationsPagedResponse; +import com.google.api.HttpRule; import com.google.api.core.ApiFunction; import com.google.api.core.ApiFuture; import com.google.api.gax.core.GaxProperties; @@ -192,7 +193,7 @@ public OperationsStub createStub() throws IOException { return createStub(new HashMap<>()); } - public OperationsStub createStub(Map customHttpBindings) throws IOException { + public OperationsStub createStub(Map customHttpBindings) throws IOException { if (getTransportChannelProvider() .getTransportName() .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { From 09b787c46fa1915a17b1a67341b6d882eb08ccc8 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 22 Feb 2023 18:04:49 -0500 Subject: [PATCH 50/82] fix: Use HttpRule as Value for Custom Bindings --- .../HttpJsonServiceStubClassComposer.java | 56 +++++++++++-------- 1 file changed, 34 insertions(+), 22 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 7ebe6b5c23..ded614b781 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 @@ -1113,28 +1113,7 @@ protected List createOperationsStubInitExpr( String selector = entrySet.getKey(); HttpRule httpRule = entrySet.getValue(); - Expr httpRuleBuilderExpr = - MethodInvocationExpr.builder() - .setStaticReferenceType(FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName())) - .setMethodName("newBuilder") - .build(); - - httpRuleBuilderExpr = - MethodInvocationExpr.builder() - .setExprReferenceExpr(httpRuleBuilderExpr) - .setMethodName(getKeyBasedOnPatternCase(httpRule)) - .setArguments( - ValueExpr.withValue( - StringObjectValue.withValue(getValueBasedOnPatternCase(httpRule)))) - .setReturnType(FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName())) - .build(); - - httpRuleBuilderExpr = - MethodInvocationExpr.builder() - .setExprReferenceExpr(httpRuleBuilderExpr) - .setMethodName("build") - .setReturnType(FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName())) - .build(); + Expr httpRuleBuilderExpr = getHttpRuleBuilderExpr(httpRule, false); operationCustomHttpBindingsBuilderExpr = MethodInvocationExpr.builder() @@ -1171,6 +1150,39 @@ protected List createOperationsStubInitExpr( .build()); } + private Expr getHttpRuleBuilderExpr(HttpRule httpRule, boolean isNested) { + Expr httpRuleBuilderExpr = + MethodInvocationExpr.builder() + .setStaticReferenceType(FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName())) + .setMethodName("newBuilder") + .build(); + + httpRuleBuilderExpr = + MethodInvocationExpr.builder() + .setExprReferenceExpr(httpRuleBuilderExpr) + .setMethodName(getKeyBasedOnPatternCase(httpRule)) + .setArguments( + ValueExpr.withValue( + StringObjectValue.withValue(getValueBasedOnPatternCase(httpRule)))) + .setReturnType(FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName())) + .build(); + + if (!isNested) { + for (HttpRule additionalBindings : httpRule.getAdditionalBindingsList()) { + httpRuleBuilderExpr = MethodInvocationExpr.builder().setExprReferenceExpr(httpRuleBuilderExpr).setMethodName("addAdditionalBindings") + .setArguments(Arrays.asList(getHttpRuleBuilderExpr(additionalBindings, true))).build(); + } + } + + httpRuleBuilderExpr = + MethodInvocationExpr.builder() + .setExprReferenceExpr(httpRuleBuilderExpr) + .setMethodName("build") + .setReturnType(FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName())) + .build(); + return httpRuleBuilderExpr; + } + private Map parseCustomHttpBindings( GapicContext context, Predicate predicate) { com.google.api.Service service = context.serviceYamlProto(); From 94c00fb7826ab7e4f77eba91498f09da03ea32a3 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 23 Feb 2023 12:27:28 -0500 Subject: [PATCH 51/82] chore: Add comments --- .../HttpJsonServiceStubClassComposer.java | 89 +++++++++++++------ .../ProtoMessageRequestFormatter.java | 6 ++ .../stub/HttpJsonOperationsStub.java | 50 +++++++++-- 3 files changed, 109 insertions(+), 36 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 ded614b781..3b501ae565 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 @@ -14,7 +14,6 @@ package com.google.api.generator.gapic.composer.rest; -import com.google.api.CustomHttpPattern; import com.google.api.HttpRule; import com.google.api.core.InternalApi; import com.google.api.gax.httpjson.ApiMethodDescriptor; @@ -80,7 +79,6 @@ import java.util.stream.Collectors; public class HttpJsonServiceStubClassComposer extends AbstractTransportServiceStubClassComposer { - private static final HttpJsonServiceStubClassComposer INSTANCE = new HttpJsonServiceStubClassComposer(); @@ -1096,9 +1094,12 @@ protected List createOperationsStubInitExpr( if (standardOpStub.equals(operationsStubType.reference().fullName())) { arguments.add(TYPE_REGISTRY_VAR_EXPR); } - Map operationCustomHttpBindings = - parseCustomHttpBindings(context, x -> x.getSelector().contains(LRO_NAME_PREFIX)); - if (operationCustomHttpBindings.size() > 0) { + + // If the Service contains custom HttpRules for Operations, we pass a map of the custom rules to + // the Operations Client + Map operationCustomHttpRules = + parseCustomHttpRules(context, x -> x.getSelector().contains(LRO_NAME_PREFIX)); + if (operationCustomHttpRules.size() > 0) { Expr operationCustomHttpBindingsBuilderExpr = MethodInvocationExpr.builder() .setStaticReferenceType(FIXED_REST_TYPESTORE.get(ImmutableMap.class.getSimpleName())) @@ -1109,11 +1110,11 @@ protected List createOperationsStubInitExpr( FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName()).reference())) .build(); - for (Map.Entry entrySet : operationCustomHttpBindings.entrySet()) { + for (Map.Entry entrySet : operationCustomHttpRules.entrySet()) { String selector = entrySet.getKey(); HttpRule httpRule = entrySet.getValue(); - Expr httpRuleBuilderExpr = getHttpRuleBuilderExpr(httpRule, false); + Expr httpRuleBuilderExpr = createHttpRuleExpr(httpRule, true); operationCustomHttpBindingsBuilderExpr = MethodInvocationExpr.builder() @@ -1150,7 +1151,17 @@ protected List createOperationsStubInitExpr( .build()); } - private Expr getHttpRuleBuilderExpr(HttpRule httpRule, boolean isNested) { + /** + * Build an Expr that creates an HttpRule. Creates a builder and adds the http verb, custom path, + * and any additional bindings. + * + *

`additional_bindings` can only be nested one layer deep, so we only check once + * + * @param httpRule HttpRule to be re-created for the library to send over + * @param checkAdditionalBindings Boolean to check if we parse for any `additional_bindings` + * @return Expr with the HttpRule built + */ + private Expr createHttpRuleExpr(HttpRule httpRule, boolean checkAdditionalBindings) { Expr httpRuleBuilderExpr = MethodInvocationExpr.builder() .setStaticReferenceType(FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName())) @@ -1160,17 +1171,20 @@ private Expr getHttpRuleBuilderExpr(HttpRule httpRule, boolean isNested) { httpRuleBuilderExpr = MethodInvocationExpr.builder() .setExprReferenceExpr(httpRuleBuilderExpr) - .setMethodName(getKeyBasedOnPatternCase(httpRule)) + .setMethodName(getHttpVerbSetterFromHttpRule(httpRule)) .setArguments( - ValueExpr.withValue( - StringObjectValue.withValue(getValueBasedOnPatternCase(httpRule)))) + ValueExpr.withValue(StringObjectValue.withValue(getURIValueFromHttpRule(httpRule)))) .setReturnType(FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName())) .build(); - if (!isNested) { + if (checkAdditionalBindings) { for (HttpRule additionalBindings : httpRule.getAdditionalBindingsList()) { - httpRuleBuilderExpr = MethodInvocationExpr.builder().setExprReferenceExpr(httpRuleBuilderExpr).setMethodName("addAdditionalBindings") - .setArguments(Arrays.asList(getHttpRuleBuilderExpr(additionalBindings, true))).build(); + httpRuleBuilderExpr = + MethodInvocationExpr.builder() + .setExprReferenceExpr(httpRuleBuilderExpr) + .setMethodName("addAdditionalBindings") + .setArguments(Arrays.asList(createHttpRuleExpr(additionalBindings, false))) + .build(); } } @@ -1183,22 +1197,36 @@ private Expr getHttpRuleBuilderExpr(HttpRule httpRule, boolean isNested) { return httpRuleBuilderExpr; } - private Map parseCustomHttpBindings( + /** + * Parses the Service Yaml file's for custom HttpRules. Filter the rules based on a predicate to + * match for certain custom rules. + * + * @param context GapicContext that contains the Service Yaml information + * @param predicate HttpRule predicate to filter for certain rules + * @return Map contains KV pairing of (HttpRule Selector -> HttpRule object) + */ + private Map parseCustomHttpRules( GapicContext context, Predicate predicate) { com.google.api.Service service = context.serviceYamlProto(); if (service == null || service.getHttp() == null) { return ImmutableMap.of(); } - Map customHttpBindings = new HashMap<>(); - for (HttpRule httpRule : service.getHttp().getRulesList()) { - if (predicate.test(httpRule)) { - customHttpBindings.put(httpRule.getSelector(), httpRule); - } - } - return customHttpBindings; + return service.getHttp().getRulesList().stream() + .filter(predicate) + .collect(Collectors.toMap(HttpRule::getSelector, x -> x)); } - private String getKeyBasedOnPatternCase(HttpRule httpRule) { + /** + * Parse the HttpRule for the HttpVerb containing the custom URI. Concat the Http Verb to return + * the setting function name. + * + *

This ignores the `Custom` HttpRule. Operation proto only supports GET, POST, DELETE and + * Custom requires special logic. + * + * @param httpRule HttpRule to parse + * @return HttpRule.Builder's setter function name when setting for an HttpVerb + */ + private String getHttpVerbSetterFromHttpRule(HttpRule httpRule) { switch (httpRule.getPatternCase().getNumber()) { case 2: return "setGet"; @@ -1210,14 +1238,21 @@ private String getKeyBasedOnPatternCase(HttpRule httpRule) { return "setDelete"; case 6: return "setPatch"; -// case 8: -// return "Custom"; default: return null; } } - private String getValueBasedOnPatternCase(HttpRule httpRule) { + /** + * Parse the HttpRule for the HttpVerb containing the custom URI. + * + *

This ignores the `Custom` HttpRule. Operation proto only supports GET, POST, DELETE and + * Custom requires special logic. + * + * @param httpRule HttpRule to parse + * @return Custom HttpRule's URI value + */ + private String getURIValueFromHttpRule(HttpRule httpRule) { switch (httpRule.getPatternCase().getNumber()) { case 2: return httpRule.getGet(); @@ -1229,8 +1264,6 @@ private String getValueBasedOnPatternCase(HttpRule httpRule) { return httpRule.getDelete(); case 6: return httpRule.getPatch(); - case 8: - return httpRule.getCustom().getPath(); default: return null; } diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ProtoMessageRequestFormatter.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ProtoMessageRequestFormatter.java index fa3480ad23..883b42c914 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ProtoMessageRequestFormatter.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ProtoMessageRequestFormatter.java @@ -141,6 +141,12 @@ public Builder setPath( return this; } + @BetaApi + public Builder setAdditionalPaths(List rawAdditionalPaths) { + this.rawAdditionalPaths = rawAdditionalPaths; + return this; + } + @BetaApi public Builder setAdditionalPaths(String... rawAdditionalPaths) { this.rawAdditionalPaths = Arrays.asList(rawAdditionalPaths); diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 7e153d6d3a..789af79fb8 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -63,6 +63,7 @@ import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Collectors; // AUTO-GENERATED DOCUMENTATION AND CLASS. /** @@ -319,26 +320,22 @@ protected HttpJsonOperationsStub( HttpJsonCallSettings listOperationsTransportSettings = HttpJsonCallSettings.newBuilder() - .setMethodDescriptor( - getApiVersionedMethodDescriptor(listOperationsMethodDescriptor, apiVersion)) + .setMethodDescriptor(listOperationsMethodDescriptor) .setTypeRegistry(typeRegistry) .build(); HttpJsonCallSettings getOperationTransportSettings = HttpJsonCallSettings.newBuilder() - .setMethodDescriptor( - getApiVersionedMethodDescriptor(getOperationMethodDescriptor, apiVersion)) + .setMethodDescriptor(getOperationMethodDescriptor) .setTypeRegistry(typeRegistry) .build(); HttpJsonCallSettings deleteOperationTransportSettings = HttpJsonCallSettings.newBuilder() - .setMethodDescriptor( - getApiVersionedMethodDescriptor(deleteOperationMethodDescriptor, apiVersion)) + .setMethodDescriptor(deleteOperationMethodDescriptor) .setTypeRegistry(typeRegistry) .build(); HttpJsonCallSettings cancelOperationTransportSettings = HttpJsonCallSettings.newBuilder() - .setMethodDescriptor( - getApiVersionedMethodDescriptor(cancelOperationMethodDescriptor, apiVersion)) + .setMethodDescriptor(cancelOperationMethodDescriptor) .setTypeRegistry(typeRegistry) .build(); @@ -367,6 +364,23 @@ protected HttpJsonOperationsStub( backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources()); } + private static String getValueBasedOnPatternCase(HttpRule httpRule) { + switch (httpRule.getPatternCase().getNumber()) { + case 2: + return httpRule.getGet(); + case 3: + return httpRule.getPut(); + case 4: + return httpRule.getPost(); + case 5: + return httpRule.getDelete(); + case 6: + return httpRule.getPatch(); + default: + return null; + } + } + private static void updateDefaultApiMethodDescriptors( Map customOperationHttpBindings) { if (customOperationHttpBindings.containsKey(LRO_LIST_OPERATIONS)) { @@ -378,6 +392,11 @@ private static void updateDefaultApiMethodDescriptors( listOperationsMethodDescriptor.getRequestFormatter()) .toBuilder() .updateRawPath(customOperationHttpBindings.get(LRO_LIST_OPERATIONS).getGet()) + .setAdditionalPaths( + customOperationHttpBindings.get(LRO_LIST_OPERATIONS) + .getAdditionalBindingsList().stream() + .map(HttpJsonOperationsStub::getValueBasedOnPatternCase) + .collect(Collectors.toList())) .build()) .build(); } @@ -391,6 +410,11 @@ private static void updateDefaultApiMethodDescriptors( getOperationMethodDescriptor.getRequestFormatter()) .toBuilder() .updateRawPath(customOperationHttpBindings.get(LRO_GET_OPERATION).getGet()) + .setAdditionalPaths( + customOperationHttpBindings.get(LRO_GET_OPERATION) + .getAdditionalBindingsList().stream() + .map(HttpJsonOperationsStub::getValueBasedOnPatternCase) + .collect(Collectors.toList())) .build()) .build(); } @@ -405,6 +429,11 @@ private static void updateDefaultApiMethodDescriptors( .toBuilder() .updateRawPath( customOperationHttpBindings.get(LRO_DELETE_OPERATION).getDelete()) + .setAdditionalPaths( + customOperationHttpBindings.get(LRO_DELETE_OPERATION) + .getAdditionalBindingsList().stream() + .map(HttpJsonOperationsStub::getValueBasedOnPatternCase) + .collect(Collectors.toList())) .build()) .build(); } @@ -419,6 +448,11 @@ private static void updateDefaultApiMethodDescriptors( .toBuilder() .updateRawPath( customOperationHttpBindings.get(LRO_CANCEL_OPERATION).getPost()) + .setAdditionalPaths( + customOperationHttpBindings.get(LRO_CANCEL_OPERATION) + .getAdditionalBindingsList().stream() + .map(HttpJsonOperationsStub::getValueBasedOnPatternCase) + .collect(Collectors.toList())) .build()) .build(); } From d5453b7b4b3a2df9e9d9a595a5214383d6867fcb Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 23 Feb 2023 12:41:40 -0500 Subject: [PATCH 52/82] chore: Update tests --- .../v1beta1/stub/HttpJsonEchoStub.java | 15 ++++++++++----- .../v1beta1/stub/HttpJsonMessagingStub.java | 15 ++++++++++----- .../v1beta1/stub/HttpJsonCloudRedisStub.java | 19 ++++++++++++++----- 3 files changed, 34 insertions(+), 15 deletions(-) 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 183843dbbb..fffd0cfd1e 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 @@ -19,6 +19,7 @@ import static com.google.showcase.v1beta1.EchoClient.PagedExpandLegacyMappedPagedResponse; import static com.google.showcase.v1beta1.EchoClient.PagedExpandPagedResponse; +import com.google.api.HttpRule; import com.google.api.core.BetaApi; import com.google.api.core.InternalApi; import com.google.api.gax.core.BackgroundResource; @@ -371,15 +372,19 @@ protected HttpJsonEchoStub( clientContext, callableFactory, typeRegistry, - ImmutableMap.builder() - .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") - .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") + ImmutableMap.builder() + .put( + "google.longrunning.Operations.ListOperations", + HttpRule.newBuilder().setGet("/v1beta1/operations").build()) + .put( + "google.longrunning.Operations.GetOperation", + HttpRule.newBuilder().setGet("/v1beta1/{name=operations/**}").build()) .put( "google.longrunning.Operations.DeleteOperation", - "/v1beta1/{name=operations/**}") + HttpRule.newBuilder().setDelete("/v1beta1/{name=operations/**}").build()) .put( "google.longrunning.Operations.CancelOperation", - "/v1beta1/{name=operations/**}:cancel") + HttpRule.newBuilder().setPost("/v1beta1/{name=operations/**}:cancel").build()) .build()); HttpJsonCallSettings echoTransportSettings = 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 47c8a63eba..634e6a11e2 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 @@ -19,6 +19,7 @@ import static com.google.showcase.v1beta1.MessagingClient.ListBlurbsPagedResponse; import static com.google.showcase.v1beta1.MessagingClient.ListRoomsPagedResponse; +import com.google.api.HttpRule; import com.google.api.core.BetaApi; import com.google.api.core.InternalApi; import com.google.api.gax.core.BackgroundResource; @@ -568,15 +569,19 @@ protected HttpJsonMessagingStub( clientContext, callableFactory, typeRegistry, - ImmutableMap.builder() - .put("google.longrunning.Operations.ListOperations", "/v1beta1/operations") - .put("google.longrunning.Operations.GetOperation", "/v1beta1/{name=operations/**}") + ImmutableMap.builder() + .put( + "google.longrunning.Operations.ListOperations", + HttpRule.newBuilder().setGet("/v1beta1/operations").build()) + .put( + "google.longrunning.Operations.GetOperation", + HttpRule.newBuilder().setGet("/v1beta1/{name=operations/**}").build()) .put( "google.longrunning.Operations.DeleteOperation", - "/v1beta1/{name=operations/**}") + HttpRule.newBuilder().setDelete("/v1beta1/{name=operations/**}").build()) .put( "google.longrunning.Operations.CancelOperation", - "/v1beta1/{name=operations/**}:cancel") + HttpRule.newBuilder().setPost("/v1beta1/{name=operations/**}:cancel").build()) .build()); HttpJsonCallSettings createRoomTransportSettings = diff --git a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java index 1dfb17a173..8b65b3c759 100644 --- a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java +++ b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java @@ -18,6 +18,7 @@ import static com.google.cloud.redis.v1beta1.CloudRedisClient.ListInstancesPagedResponse; +import com.google.api.HttpRule; import com.google.api.core.BetaApi; import com.google.api.core.InternalApi; import com.google.api.gax.core.BackgroundResource; @@ -580,19 +581,27 @@ protected HttpJsonCloudRedisStub( clientContext, callableFactory, typeRegistry, - ImmutableMap.builder() + ImmutableMap.builder() .put( "google.longrunning.Operations.GetOperation", - "/v1beta1/{name=projects/*/locations/*/operations/*}") + HttpRule.newBuilder() + .setGet("/v1beta1/{name=projects/*/locations/*/operations/*}") + .build()) .put( "google.longrunning.Operations.ListOperations", - "/v1beta1/{name=projects/*/locations/*}/operations") + HttpRule.newBuilder() + .setGet("/v1beta1/{name=projects/*/locations/*}/operations") + .build()) .put( "google.longrunning.Operations.DeleteOperation", - "/v1beta1/{name=projects/*/locations/*/operations/*}") + HttpRule.newBuilder() + .setDelete("/v1beta1/{name=projects/*/locations/*/operations/*}") + .build()) .put( "google.longrunning.Operations.CancelOperation", - "/v1beta1/{name=projects/*/locations/*/operations/*}:cancel") + HttpRule.newBuilder() + .setPost("/v1beta1/{name=projects/*/locations/*/operations/*}:cancel") + .build()) .build()); HttpJsonCallSettings From e24b42fb834e643e4408c24640f68073053828db Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 31 Jan 2023 23:10:06 +0000 Subject: [PATCH 53/82] fix(deps): update dependency com.google.auth:google-auth-library-bom to v1.15.0 (#1278) --- gapic-generator-java-pom-parent/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gapic-generator-java-pom-parent/pom.xml b/gapic-generator-java-pom-parent/pom.xml index eefddb3394..7aca226c82 100644 --- a/gapic-generator-java-pom-parent/pom.xml +++ b/gapic-generator-java-pom-parent/pom.xml @@ -26,8 +26,8 @@ 1.3.2 - 1.53.0 - 1.16.0 + 1.52.1 + 1.15.0 2.10.1 31.1-jre 3.21.12 From 62edb0e4e61577180ab032a288d73c812d700c87 Mon Sep 17 00:00:00 2001 From: Blake Li Date: Wed, 1 Feb 2023 09:33:44 -0500 Subject: [PATCH 54/82] doc: Update DEVELOPMENT.md for local development. (#1237) --- DEVELOPMENT.md | 251 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 243 insertions(+), 8 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 6b773f3046..1a016371e5 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -11,20 +11,23 @@ for gapic-generator-java's Bazel build. 1. Clone this repo. 2. (OPTIONAL) Copy the Git pre-commit hooks. This will automatically check the build, run - tests, and perform linting before each commit. (Symlinks don't seem to work, - but if you find a way, please add it here!) + tests, and perform linting before each commit. (Symlinks don't seem to work, + but if you find a way, please add it here!) ```sh cp .githooks/pre-commit .git/hooks/pre-commit ``` -## Run Tests for All Modules - -- Run all unit tests in all modules. - - ```sh - mvn install + ### Note: You may see this error with the pre-commits due to the monorepo migration: + ``` +[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project gapic-generator-java: Compilation failure: Compilation failure: +[ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java:[19,43] package com.google.api.gax.httpjson.testing does not exist +[ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java:[24,38] package com.google.api.gax.rpc.testing does not exist +[ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/ServiceClientTestClassComposer.java:[18,39] package com.google.api.gax.grpc.testing does not exist ``` + Remove the pre-commit hooks. Tracking the issue in https://github.com/googleapis/gapic-generator-java/issues/1253 + +3. Install [`bazelisk`](https://github.com/bazelbuild/bazelisk) in your `PATH`. ## Code Formatting @@ -39,3 +42,235 @@ for gapic-generator-java's Bazel build. ```sh mvn fmt:format ``` + +## Test Running + +- Run all unit and integration tests. + + ```sh + mvn install # unit tests, maven test wouldn't work in root folder because gapic-generator-java is dependant on test jars of gax-java + bazel test //... # integration tests + ``` + +- Run all unit tests. + + ```sh + mvn install + ``` +- For running unit tests in `gapic-generator-java` submodule, first build all modules with `mvn install -DskipTests`, then `cd` into `gapic-generator-java` submodule for the following commands: + - Run a single or multiple unit tests: + + ```sh + mvn test -Dtest=JavaCodeGeneratorTest + + mvn test "-Dtest=Basic*, !%regex[.*.Unstable.*], !%regex[.*.MyTest.class#one.*|two.*], %regex[#fast.*|slow.*]" + ``` + + - Update all unit test golden files: + + ```sh + mvn test -DupdateUnitGoldens + ``` + + - Update a single unit test golden file, for example `JavaCodeGeneratorTest.java`: + + ```sh + mvn test -DupdateUnitGoldens -Dtest=JavaCodeGeneratorTest + ``` + +- Run a single integration test for API like `Redis`, it generates Java source + code using the Java microgenerator and compares them with the goldens files + in `test/integration/goldens/redis`. + + ```sh + bazel test //test/integration:redis + ``` + +- Update integration test golden files, for example `Redis`. This clobbers all the + files in `test/integration/goldens/redis`. + + ```sh + bazel run //test/integration:update_redis + ``` + +## Showcase Integration Testing + +[GAPIC Showcase](https://github.com/googleapis/gapic-showcase) is an API that demonstrates Generated +API Client (GAPIC) features and common API patterns used by Google. It follows the [Cloud APIs +design guide](https://cloud.google.com/apis/design/). `gapic-generator-java` generates a client for +the Showcase API which can communicate with a local Showcase server to perform integration tests. + +### Requirements + +* Install [Go](https://go.dev) in your `PATH`. + +### Installing the Server + +Using the latest version of showcase is recommended, but backward compatibility between server +versions is not guaranteed. If changing the version of the server, it may also be necessary to +update to a compatible client version in `./WORKSPACE`. + +```shell +$ GAPIC_SHOWCASE_VERSION=0.25.0 +$ go install github.com/googleapis/gapic-showcase/cmd/gapic-showcase@v"$GAPIC_SHOWCASE_VERSION" +$ PATH=$PATH:`go env GOPATH`/bin +$ gapic-showcase --help +> Root command of gapic-showcase +> +> Usage: +> gapic-showcase [command] +> +> Available Commands: +> completion Emits bash a completion for gapic-showcase +> compliance This service is used to test that GAPICs... +> echo This service is used showcase the four main types... +> help Help about any command +> identity A simple identity service. +> messaging A simple messaging service that implements chat... +> run Runs the showcase server +> sequence Sub-command for Service: Sequence +> testing A service to facilitate running discrete sets of... +> +> Flags: +> -h, --help help for gapic-showcase +> -j, --json Print JSON output +> -v, --verbose Print verbose output +> --version version for gapic-showcase +``` + +### Running the Server + +Run the showcase server to allow requests to be sent to it. This opens port `:7469` to send and +receive requests. + +```shell +$ gapic-showcase run +> 2022/11/21 16:22:15 Showcase listening on port: :7469 +> 2022/11/21 16:22:15 Starting endpoint 0: gRPC endpoint +> 2022/11/21 16:22:15 Starting endpoint 1: HTTP/REST endpoint +> 2022/11/21 16:22:15 Starting endpoint multiplexer +> 2022/11/21 16:22:15 Listening for gRPC-fallback connections +> 2022/11/21 16:22:15 Listening for gRPC connections +> 2022/11/21 16:22:15 Listening for REST connections +> 2022/11/21 16:22:15 Fallback server listening on port: :1337 +``` + +### Running the Integration Tests + +Open a new terminal window in the root project directory. + +```shell +$ cd showcase +$ mvn verify -P enable-integration-tests -P enable-golden-tests +``` + +Note: + +* `-P enable-golden-tests` is optional. These tests do not require a local server. + +### Update the Golden Showcase Files + +Open a new terminal window in the root project directory. + +```shell +$ cd showcase +$ mvn compile -P update +``` + +## Running the Plugin under googleapis with local gapic-generator-java + +For running the Plugin with showcase protos and local gapic-generator-java, see above section "Showcase Integration Testing". + +To generate a production GAPIC API: + +1. Clone [googleapis](https://github.com/googleapis/googleapis). + +2. Modify `googleapis/WORKSPACE` to point to local gapic-generator-java + + Normally, googleapis's build pulls in gapic-generator-java from Maven Central. + For a local run, we first need to build a local SNAPSHOT jar of the generator. Then we point googleapis to + both the local SNAPSHOT jar and the local copy of the generator. + + Replace the following section in googleapis + ``` + _gapic_generator_java_version = "2.13.0" + + maven_install( + artifacts = [ + "com.google.api:gapic-generator-java:" + _gapic_generator_java_version, + ], + #Update this False for local development + fail_on_missing_checksum = True, + repositories = [ + "m2Local", + "https://repo.maven.apache.org/maven2/", + ] + ) + + http_archive( + name = "gapic_generator_java", + strip_prefix = "gapic-generator-java-%s" % _gapic_generator_java_version, + urls = ["https://github.com/googleapis/gapic-generator-java/archive/v%s.zip" % _gapic_generator_java_version], + ) + ``` + + to + + ``` + _gapic_generator_java_version = "2.13.1-SNAPSHOT" + + maven_install( + artifacts = [ + "com.google.api:gapic-generator-java:" + _gapic_generator_java_version, + ], + #Update this False for local development + fail_on_missing_checksum = False, + repositories = [ + "m2Local", + "https://repo.maven.apache.org/maven2/", + ] + ) + + local_repository( + name = "gapic_generator_java", + path = "/absolute/path/to/your/local/gapic-generator-java", + ) + ``` + + Note: At the time of writing, the gapic-generator version was `2.13.0`. Update the version to the latest version in the pom.xml + +3. Build the new target. + + You can generate any client library based on the protos within googleapis. + You just need the name of the service within the `java_gapic_assembly_gradle_pkg` + rules within the service's `BUILD.bazel` file. + For instance, to run your local generator on the `speech`'s v2 service, you can + run: + + ``` + bazel build //google/cloud/speech/v2:google-cloud-speech-v2-java + ``` + + Note: If you are running into bazel build issues, you can try to remove gapic-generator-java cached in your local m2 + Try running this command: + ``` + rm -rf ~/.m2/repository/com/google/api/ + ``` + and then rebuild gapic-generator-java (`mvn clean install`). + +## FAQ + +### Error in workspace: workspace() got unexpected keyword argument 'managed_directories' + +Full Error: + +``` +ERROR: Traceback (most recent call last): + File "/home/alicejli/googleapis/WORKSPACE", line 1, column 10, in + workspace( +Error in workspace: workspace() got unexpected keyword argument 'managed_directories' +ERROR: Error computing the main repository mapping: Encountered error while reading extension file 'tools/build_defs/repo/http.bzl': no such package '@bazel_tools//tools/build_defs/repo': error loading package 'external': Could not load //external package +``` + +You may be using the latest version of bazel which this project does not support yet. Try installing bazelisk to force +bazel to use the version specified in `.bazeliskrc` \ No newline at end of file From c2cc0a8bb484e5fa8eb28daf287e653ab3bbb41d Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 23 Feb 2023 16:32:32 -0500 Subject: [PATCH 55/82] chore: Add tests --- .../stub/HttpJsonOperationsStub.java | 33 ++++----- .../stub/HttpJsonOperationsStubTest.java | 74 +++++++++++++++++++ 2 files changed, 89 insertions(+), 18 deletions(-) create mode 100644 gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 789af79fb8..1bf341817f 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -46,6 +46,7 @@ import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.LongRunningClient; import com.google.api.gax.rpc.UnaryCallable; +import com.google.common.collect.ImmutableList; import com.google.longrunning.CancelOperationRequest; import com.google.longrunning.DeleteOperationRequest; import com.google.longrunning.GetOperationRequest; @@ -53,7 +54,6 @@ import com.google.longrunning.ListOperationsResponse; import com.google.longrunning.Operation; import com.google.protobuf.Empty; -import com.google.protobuf.Message; import com.google.protobuf.TypeRegistry; import java.io.IOException; import java.util.ArrayList; @@ -381,7 +381,13 @@ private static String getValueBasedOnPatternCase(HttpRule httpRule) { } } - private static void updateDefaultApiMethodDescriptors( + /** + * This is to allow libraries to customize the Operation MethodDescriptors from the service yaml + * file + * + * @param customOperationHttpBindings Mapping of Mixin RPC to the HttpRule + */ + private void updateDefaultApiMethodDescriptors( Map customOperationHttpBindings) { if (customOperationHttpBindings.containsKey(LRO_LIST_OPERATIONS)) { listOperationsMethodDescriptor = @@ -458,22 +464,13 @@ private static void updateDefaultApiMethodDescriptors( } } - private static - ApiMethodDescriptor getApiVersionedMethodDescriptor( - ApiMethodDescriptor methodDescriptor, String apiVersion) { - if (apiVersion == null) { - return methodDescriptor; - } - - ApiMethodDescriptor.Builder descriptorBuilder = - methodDescriptor.toBuilder(); - ProtoMessageRequestFormatter requestFormatter = - (ProtoMessageRequestFormatter) descriptorBuilder.getRequestFormatter(); - - return descriptorBuilder - .setRequestFormatter( - requestFormatter.toBuilder().updateRawPath("/v1/", '/' + apiVersion + '/').build()) - .build(); + @InternalApi + public List getAllMethodDescriptors() { + return ImmutableList.of( + listOperationsMethodDescriptor, + getOperationMethodDescriptor, + deleteOperationMethodDescriptor, + cancelOperationMethodDescriptor); } @InternalApi diff --git a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java new file mode 100644 index 0000000000..e4c74b0992 --- /dev/null +++ b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java @@ -0,0 +1,74 @@ +/* + * Copyright 2023 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package com.google.api.gax.httpjson.longrunning.stub; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.api.HttpRule; +import com.google.api.gax.httpjson.ApiMethodDescriptor; +import com.google.common.collect.ImmutableMap; +import java.util.List; +import org.junit.BeforeClass; +import org.junit.Test; + +public class HttpJsonOperationsStubTest { + + private static HttpJsonOperationsStub httpJsonOperationsStub; + + @BeforeClass + public static void setUp() throws Exception { + httpJsonOperationsStub = + HttpJsonOperationsStub.create( + OperationsStubSettings.newBuilder().build(), + ImmutableMap.of( + "google.longrunning.Operations.ListOperations", + HttpRule.newBuilder().setGet("testList").build(), + "google.longrunning.Operations.GetOperation", + HttpRule.newBuilder().setGet("testGet").build(), + "google.longrunning.Operations.DeleteOperation", + HttpRule.newBuilder().setDelete("testDelete").build(), + "google.longrunning.Operations.CancelOperation", + HttpRule.newBuilder().setPost("testCancel").build())); + } + + @Test + public void testCorrectMethodDescriptors() { + List apiMethodDescriptorList = + httpJsonOperationsStub.getAllMethodDescriptors(); + assertThat(apiMethodDescriptorList.get(0).getRequestFormatter().getPathTemplate().toRawString()) + .isEqualTo("testList"); + assertThat(apiMethodDescriptorList.get(1).getRequestFormatter().getPathTemplate().toRawString()) + .isEqualTo("testGet"); + assertThat(apiMethodDescriptorList.get(2).getRequestFormatter().getPathTemplate().toRawString()) + .isEqualTo("testDelete"); + assertThat(apiMethodDescriptorList.get(3).getRequestFormatter().getPathTemplate().toRawString()) + .isEqualTo("testCancel"); + } +} From 4f9015f05a734bb4868076d49e60735e3d4dc53a Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 23 Feb 2023 16:49:35 -0500 Subject: [PATCH 56/82] chore: Cleanup files --- .../httpjson/longrunning/stub/HttpJsonOperationsStub.java | 8 -------- .../longrunning/stub/HttpJsonOperationsStubTest.java | 7 ++++--- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 1bf341817f..1a91fdd809 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -203,7 +203,6 @@ public class HttpJsonOperationsStub extends OperationsStub { private final LongRunningClient longRunningClient; private final BackgroundResource backgroundResources; - private final HttpJsonStubCallableFactory callableFactory; public static final HttpJsonOperationsStub create(OperationsStubSettings settings) throws IOException { @@ -308,13 +307,6 @@ protected HttpJsonOperationsStub( TypeRegistry typeRegistry, Map customHttpBindings) throws IOException { - this.callableFactory = callableFactory; - - Matcher packageMatcher = - CLIENT_PACKAGE_VERSION_PATTERN.matcher(callableFactory.getClass().getPackage().getName()); - - String apiVersion = packageMatcher.find() ? packageMatcher.group("version") : null; - updateDefaultApiMethodDescriptors(customHttpBindings); HttpJsonCallSettings diff --git a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java index e4c74b0992..deeb7e80ce 100644 --- a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java +++ b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java @@ -29,15 +29,16 @@ */ package com.google.api.gax.httpjson.longrunning.stub; -import static com.google.common.truth.Truth.assertThat; - import com.google.api.HttpRule; import com.google.api.gax.httpjson.ApiMethodDescriptor; import com.google.common.collect.ImmutableMap; -import java.util.List; import org.junit.BeforeClass; import org.junit.Test; +import java.util.List; + +import static com.google.common.truth.Truth.assertThat; + public class HttpJsonOperationsStubTest { private static HttpJsonOperationsStub httpJsonOperationsStub; From c7631ba4d7a0b982f1b2a5e2adfa54d5016c9a40 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 23 Feb 2023 16:50:18 -0500 Subject: [PATCH 57/82] chore: Format the files --- .../httpjson/longrunning/stub/HttpJsonOperationsStub.java | 1 - .../longrunning/stub/HttpJsonOperationsStubTest.java | 7 +++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 1a91fdd809..134810613e 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -61,7 +61,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; -import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; diff --git a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java index deeb7e80ce..e4c74b0992 100644 --- a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java +++ b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java @@ -29,16 +29,15 @@ */ package com.google.api.gax.httpjson.longrunning.stub; +import static com.google.common.truth.Truth.assertThat; + import com.google.api.HttpRule; import com.google.api.gax.httpjson.ApiMethodDescriptor; import com.google.common.collect.ImmutableMap; +import java.util.List; import org.junit.BeforeClass; import org.junit.Test; -import java.util.List; - -import static com.google.common.truth.Truth.assertThat; - public class HttpJsonOperationsStubTest { private static HttpJsonOperationsStub httpJsonOperationsStub; From 674d814d89fa26aff51a9f939a1ff97923a93244 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 23 Feb 2023 17:02:47 -0500 Subject: [PATCH 58/82] chore: Add NoCredentialsProvider --- .../longrunning/stub/HttpJsonOperationsStubTest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java index e4c74b0992..30427ff3cd 100644 --- a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java +++ b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java @@ -32,6 +32,7 @@ import static com.google.common.truth.Truth.assertThat; import com.google.api.HttpRule; +import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.httpjson.ApiMethodDescriptor; import com.google.common.collect.ImmutableMap; import java.util.List; @@ -46,7 +47,9 @@ public class HttpJsonOperationsStubTest { public static void setUp() throws Exception { httpJsonOperationsStub = HttpJsonOperationsStub.create( - OperationsStubSettings.newBuilder().build(), + OperationsStubSettings.newBuilder() + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(), ImmutableMap.of( "google.longrunning.Operations.ListOperations", HttpRule.newBuilder().setGet("testList").build(), From 52aaa236f480d01cd45926eae721059916f35df3 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 23 Feb 2023 17:14:39 -0500 Subject: [PATCH 59/82] chore: Fix sonar comments --- .../httpjson/longrunning/stub/HttpJsonOperationsStub.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 134810613e..0619a78cc9 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -55,13 +55,13 @@ import com.google.longrunning.Operation; import com.google.protobuf.Empty; 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 java.util.regex.Pattern; import java.util.stream.Collectors; // AUTO-GENERATED DOCUMENTATION AND CLASS. @@ -71,8 +71,6 @@ *

This class is for advanced usage and reflects the underlying API directly. */ public class HttpJsonOperationsStub extends OperationsStub { - private static final Pattern CLIENT_PACKAGE_VERSION_PATTERN = - Pattern.compile("\\.(?v\\d+[a-zA-Z]*\\d*[a-zA-Z]*\\d*)\\.[\\w.]*stub"); private static final String LRO_LIST_OPERATIONS = "google.longrunning.Operations.ListOperations"; private static final String LRO_GET_OPERATION = "google.longrunning.Operations.GetOperation"; private static final String LRO_DELETE_OPERATION = @@ -378,7 +376,7 @@ private static String getValueBasedOnPatternCase(HttpRule httpRule) { * * @param customOperationHttpBindings Mapping of Mixin RPC to the HttpRule */ - private void updateDefaultApiMethodDescriptors( + private static void updateDefaultApiMethodDescriptors( Map customOperationHttpBindings) { if (customOperationHttpBindings.containsKey(LRO_LIST_OPERATIONS)) { listOperationsMethodDescriptor = From 1670957fb3bf106a54759d5fcec76dddd965f20c Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 23 Feb 2023 17:29:17 -0500 Subject: [PATCH 60/82] chore: Add serviceyaml file for parsing for rest showcase tests --- .../composer/rest/RestTestProtoLoader.java | 9 ++ .../src/test/resources/showcase_v1beta1.yaml | 85 +++++++++++++++++++ .../stub/HttpJsonOperationsStub.java | 1 - 3 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 gapic-generator-java/src/test/resources/showcase_v1beta1.yaml diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java index 3713242c1f..226f7e3638 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java @@ -26,6 +26,7 @@ import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.protoparser.Parser; import com.google.api.generator.gapic.protoparser.ServiceConfigParser; +import com.google.api.generator.gapic.protoparser.ServiceYamlParser; import com.google.protobuf.Descriptors.FileDescriptor; import com.google.protobuf.Descriptors.ServiceDescriptor; import com.google.showcase.v1beta1.ComplianceOuterClass; @@ -66,11 +67,19 @@ public GapicContext parseCompliance() { assertTrue(configOpt.isPresent()); GapicServiceConfig config = configOpt.get(); + String serviceYamlFileName = "showcase_v1beta1.yaml"; + Path serviceYamlPath = Paths.get(getTestFilesDirectory(), serviceYamlFileName); + Optional serviceYamlOpt = + ServiceYamlParser.parse(serviceYamlPath.toString()); + assertTrue(serviceYamlOpt.isPresent()); + com.google.api.Service service = serviceYamlOpt.get(); + return GapicContext.builder() .setMessages(messageTypes) .setResourceNames(resourceNames) .setServices(services) .setServiceConfig(config) + .setServiceYamlProto(service) .setHelperResourceNames(outputResourceNames) .setTransport(getTransport()) .setRestNumericEnumsEnabled(true) diff --git a/gapic-generator-java/src/test/resources/showcase_v1beta1.yaml b/gapic-generator-java/src/test/resources/showcase_v1beta1.yaml new file mode 100644 index 0000000000..0cdc059222 --- /dev/null +++ b/gapic-generator-java/src/test/resources/showcase_v1beta1.yaml @@ -0,0 +1,85 @@ +# Copyright 2020 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +type: google.api.Service +config_version: 3 +name: showcase.googleapis.com +title: Client Libraries Showcase API + +apis: + - name: google.showcase.v1beta1.Compliance + - name: google.showcase.v1beta1.Echo + - name: google.showcase.v1beta1.Identity + - name: google.showcase.v1beta1.Messaging + - name: google.showcase.v1beta1.SequenceService + - name: google.showcase.v1beta1.Testing + # Mix-in services + - name: 'google.cloud.location.Locations' + - name: 'google.iam.v1.IAMPolicy' + - name: 'google.longrunning.Operations' + +documentation: + summary: |- + Showcase represents both a model API and an integration testing surface for + client library generator consumption. + +backend: + rules: + - selector: 'google.cloud.location.Locations.*' + deadline: 60.0 + - selector: 'google.iam.v1.IAMPolicy.*' + deadline: 60.0 + - selector: 'google.longrunning.Operations.*' + deadline: 60.0 + +http: + rules: + - selector: google.cloud.location.Locations.ListLocations + get: '/v1beta1/{name=projects/*}/locations' + - selector: google.cloud.location.Locations.GetLocation + get: '/v1beta1/{name=projects/*/locations/*}' + - selector: google.iam.v1.IAMPolicy.SetIamPolicy + post: '/v1beta1/{resource=users/*}:setIamPolicy' + body: '*' + additional_bindings: + - post: '/v1beta1/{resource=rooms/*}:setIamPolicy' + body: '*' + - post: '/v1beta1/{resource=rooms/*/blurbs/*}:setIamPolicy' + body: '*' + - post: '/v1beta1/{resource=sequences/*}:setIamPolicy' + body: '*' + - selector: google.iam.v1.IAMPolicy.GetIamPolicy + get: '/v1beta1/{resource=users/*}:getIamPolicy' + additional_bindings: + - get: '/v1beta1/{resource=rooms/*}:getIamPolicy' + - get: '/v1beta1/{resource=rooms/*/blurbs/*}:getIamPolicy' + - get: '/v1beta1/{resource=sequences/*}:getIamPolicy' + - selector: google.iam.v1.IAMPolicy.TestIamPermissions + post: '/v1beta1/{resource=users/*}:testIamPermissions' + body: '*' + additional_bindings: + - post: '/v1beta1/{resource=rooms/*}:testIamPermissions' + body: '*' + - post: '/v1beta1/{resource=rooms/*/blurbs/*}:testIamPermissions' + body: '*' + - post: '/v1beta1/{resource=sequences/*}:testIamPermissions' + body: '*' + - selector: google.longrunning.Operations.ListOperations + get: '/v1beta1/operations' + - selector: google.longrunning.Operations.GetOperation + get: '/v1beta1/{name=operations/**}' + - selector: google.longrunning.Operations.DeleteOperation + delete: '/v1beta1/{name=operations/**}' + - selector: google.longrunning.Operations.CancelOperation + post: '/v1beta1/{name=operations/**}:cancel' \ No newline at end of file diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 0619a78cc9..764f265ad0 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -55,7 +55,6 @@ import com.google.longrunning.Operation; import com.google.protobuf.Empty; import com.google.protobuf.TypeRegistry; - import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; From abebe3d1db7fcb21db26b5b221d1784248668ccc Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 23 Feb 2023 17:44:10 -0500 Subject: [PATCH 61/82] chore: Use service yaml file in test --- .../gapic/composer/rest/RestTestProtoLoader.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java index 226f7e3638..4c49fbbd3a 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java @@ -54,12 +54,19 @@ public GapicContext parseCompliance() { ServiceDescriptor echoServiceDescriptor = echoFileDescriptor.getServices().get(0); assertEquals(echoServiceDescriptor.getName(), "Compliance"); + String serviceYamlFileName = "showcase_v1beta1.yaml"; + Path serviceYamlPath = Paths.get(getTestFilesDirectory(), serviceYamlFileName); + Optional serviceYamlOpt = + ServiceYamlParser.parse(serviceYamlPath.toString()); + assertTrue(serviceYamlOpt.isPresent()); + com.google.api.Service service = serviceYamlOpt.get(); + Map messageTypes = Parser.parseMessages(echoFileDescriptor); Map resourceNames = Parser.parseResourceNames(echoFileDescriptor); Set outputResourceNames = new HashSet<>(); List services = Parser.parseService( - echoFileDescriptor, messageTypes, resourceNames, Optional.empty(), outputResourceNames); + echoFileDescriptor, messageTypes, resourceNames, serviceYamlOpt, outputResourceNames); String jsonFilename = "showcase_grpc_service_config.json"; Path jsonPath = Paths.get(getTestFilesDirectory(), jsonFilename); @@ -67,13 +74,6 @@ public GapicContext parseCompliance() { assertTrue(configOpt.isPresent()); GapicServiceConfig config = configOpt.get(); - String serviceYamlFileName = "showcase_v1beta1.yaml"; - Path serviceYamlPath = Paths.get(getTestFilesDirectory(), serviceYamlFileName); - Optional serviceYamlOpt = - ServiceYamlParser.parse(serviceYamlPath.toString()); - assertTrue(serviceYamlOpt.isPresent()); - com.google.api.Service service = serviceYamlOpt.get(); - return GapicContext.builder() .setMessages(messageTypes) .setResourceNames(resourceNames) From 0a70fe74956b2b962fd85ab097d5ffcdc8236446 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 23 Feb 2023 18:24:49 -0500 Subject: [PATCH 62/82] chore: Fix Echo showcase test --- .../HttpJsonServiceStubClassComposerTest.java | 20 +- .../composer/rest/RestTestProtoLoader.java | 63 +- .../rest/goldens/HttpJsonEchoStub.golden | 575 ++++++++++++++++++ 3 files changed, 641 insertions(+), 17 deletions(-) create mode 100644 gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java index 243ef54ce2..ee1caec582 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java @@ -39,10 +39,10 @@ public void setUp() throws Exception { } @Test - public void generateServiceClasses() { + public void generateComplianceServiceClasses() { GapicContext context = RestTestProtoLoader.instance().parseCompliance(); - Service echoProtoService = context.services().get(0); - GapicClass clazz = composer.generate(context, echoProtoService); + Service complianceProtoServices = context.services().get(0); + GapicClass clazz = composer.generate(context, complianceProtoServices); JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); @@ -52,6 +52,20 @@ public void generateServiceClasses() { Assert.assertCodeEquals(goldenFilePath, visitor.write()); } + @Test + public void generateEchoServiceClasses() { + GapicContext context = RestTestProtoLoader.instance().parseEcho(); + Service echoProtoService = context.services().get(0); + GapicClass clazz = composer.generate(context, echoProtoService); + + JavaWriterVisitor visitor = new JavaWriterVisitor(); + clazz.classDefinition().accept(visitor); + Utils.saveCodegenToFile(this.getClass(), "HttpJsonEchoStub.golden", visitor.write()); + Path goldenFilePath = + Paths.get(Utils.getGoldenDir(this.getClass()), "HttpJsonEchoStub.golden"); + Assert.assertCodeEquals(goldenFilePath, visitor.write()); + } + @Test public void getBindingFieldMethodName_shouldReturnGetFieldListIfTheFieldIsInLastPositionAndIsRepeated() { diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java index 4c49fbbd3a..ec5766170c 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java @@ -27,9 +27,13 @@ import com.google.api.generator.gapic.protoparser.Parser; import com.google.api.generator.gapic.protoparser.ServiceConfigParser; import com.google.api.generator.gapic.protoparser.ServiceYamlParser; +import com.google.longrunning.OperationsProto; import com.google.protobuf.Descriptors.FileDescriptor; import com.google.protobuf.Descriptors.ServiceDescriptor; +import com.google.protobuf.StructProto; import com.google.showcase.v1beta1.ComplianceOuterClass; +import com.google.showcase.v1beta1.EchoOuterClass; + import java.nio.file.Path; import java.nio.file.Paths; import java.util.HashSet; @@ -50,23 +54,16 @@ public static RestTestProtoLoader instance() { } public GapicContext parseCompliance() { - FileDescriptor echoFileDescriptor = ComplianceOuterClass.getDescriptor(); - ServiceDescriptor echoServiceDescriptor = echoFileDescriptor.getServices().get(0); - assertEquals(echoServiceDescriptor.getName(), "Compliance"); - - String serviceYamlFileName = "showcase_v1beta1.yaml"; - Path serviceYamlPath = Paths.get(getTestFilesDirectory(), serviceYamlFileName); - Optional serviceYamlOpt = - ServiceYamlParser.parse(serviceYamlPath.toString()); - assertTrue(serviceYamlOpt.isPresent()); - com.google.api.Service service = serviceYamlOpt.get(); + FileDescriptor complianceFileDescriptor = ComplianceOuterClass.getDescriptor(); + ServiceDescriptor complianceServiceDescriptor = complianceFileDescriptor.getServices().get(0); + assertEquals(complianceServiceDescriptor.getName(), "Compliance"); - Map messageTypes = Parser.parseMessages(echoFileDescriptor); - Map resourceNames = Parser.parseResourceNames(echoFileDescriptor); + Map messageTypes = Parser.parseMessages(complianceFileDescriptor); + Map resourceNames = Parser.parseResourceNames(complianceFileDescriptor); Set outputResourceNames = new HashSet<>(); List services = Parser.parseService( - echoFileDescriptor, messageTypes, resourceNames, serviceYamlOpt, outputResourceNames); + complianceFileDescriptor, messageTypes, resourceNames, Optional.empty(), outputResourceNames); String jsonFilename = "showcase_grpc_service_config.json"; Path jsonPath = Paths.get(getTestFilesDirectory(), jsonFilename); @@ -79,10 +76,48 @@ public GapicContext parseCompliance() { .setResourceNames(resourceNames) .setServices(services) .setServiceConfig(config) - .setServiceYamlProto(service) .setHelperResourceNames(outputResourceNames) .setTransport(getTransport()) .setRestNumericEnumsEnabled(true) .build(); } + + public GapicContext parseEcho() { + FileDescriptor echoFileDescriptor = EchoOuterClass.getDescriptor(); + ServiceDescriptor echoServiceDescriptor = echoFileDescriptor.getServices().get(0); + assertEquals(echoServiceDescriptor.getName(), "Echo"); + + String serviceYamlFileName = "showcase_v1beta1.yaml"; + Path serviceYamlPath = Paths.get(getTestFilesDirectory(), serviceYamlFileName); + Optional serviceYamlOpt = + ServiceYamlParser.parse(serviceYamlPath.toString()); + assertTrue(serviceYamlOpt.isPresent()); + com.google.api.Service service = serviceYamlOpt.get(); + + Map messageTypes = Parser.parseMessages(echoFileDescriptor); + messageTypes.putAll(Parser.parseMessages(OperationsProto.getDescriptor())); + messageTypes.putAll(Parser.parseMessages(StructProto.getDescriptor())); + Map resourceNames = Parser.parseResourceNames(echoFileDescriptor); + Set outputResourceNames = new HashSet<>(); + List services = + Parser.parseService( + echoFileDescriptor, messageTypes, resourceNames, serviceYamlOpt, 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) + .setServiceYamlProto(service) + .setHelperResourceNames(outputResourceNames) + .setTransport(getTransport()) + .setRestNumericEnumsEnabled(true) + .build(); + } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden new file mode 100644 index 0000000000..e5725a87cf --- /dev/null +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden @@ -0,0 +1,575 @@ +package com.google.showcase.v1beta1.stub; + +import static com.google.showcase.v1beta1.EchoClient.PagedExpandPagedResponse; +import static com.google.showcase.v1beta1.EchoClient.SimplePagedExpandPagedResponse; + +import com.google.api.HttpRule; +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.HttpJsonOperationSnapshot; +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.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; +import com.google.common.collect.ImmutableMap; +import com.google.longrunning.Operation; +import com.google.protobuf.TypeRegistry; +import com.google.showcase.v1beta1.BlockRequest; +import com.google.showcase.v1beta1.BlockResponse; +import com.google.showcase.v1beta1.EchoRequest; +import com.google.showcase.v1beta1.EchoResponse; +import com.google.showcase.v1beta1.ExpandRequest; +import com.google.showcase.v1beta1.Object; +import com.google.showcase.v1beta1.PagedExpandRequest; +import com.google.showcase.v1beta1.PagedExpandResponse; +import com.google.showcase.v1beta1.WaitMetadata; +import com.google.showcase.v1beta1.WaitRequest; +import com.google.showcase.v1beta1.WaitResponse; +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 Echo service API. + * + *

This class is for advanced usage and reflects the underlying API directly. + */ +@BetaApi +@Generated("by gapic-generator-java") +public class HttpJsonEchoStub extends EchoStub { + private static final TypeRegistry typeRegistry = + TypeRegistry.newBuilder() + .add(WaitResponse.getDescriptor()) + .add(WaitMetadata.getDescriptor()) + .build(); + + private static final ApiMethodDescriptor echoMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.showcase.v1beta1.Echo/Echo") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1beta1/echo:echo", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = ProtoRestSerializer.create(); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().build(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(EchoResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor expandMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.showcase.v1beta1.Echo/Expand") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.SERVER_STREAMING) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1beta1/echo:expand", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().build(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(EchoResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + pagedExpandMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.showcase.v1beta1.Echo/PagedExpand") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1beta1/echo:pagedExpand", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().build(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(PagedExpandResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor + simplePagedExpandMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.showcase.v1beta1.Echo/SimplePagedExpand") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1beta1/echo:pagedExpand", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().build(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(PagedExpandResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor waitMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.showcase.v1beta1.Echo/Wait") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1beta1/echo:wait", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = ProtoRestSerializer.create(); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().build(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Operation.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .setOperationSnapshotFactory( + (WaitRequest request, Operation response) -> + HttpJsonOperationSnapshot.create(response)) + .build(); + + private static final ApiMethodDescriptor blockMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.showcase.v1beta1.Echo/Block") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1beta1/echo:block", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = ProtoRestSerializer.create(); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().build(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(BlockResponse.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private static final ApiMethodDescriptor collideNameMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.showcase.v1beta1.Echo/CollideName") + .setHttpMethod("POST") + .setType(ApiMethodDescriptor.MethodType.UNARY) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1beta1/echo:foo", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = ProtoRestSerializer.create(); + return fields; + }) + .setQueryParamsExtractor( + request -> { + Map> fields = new HashMap<>(); + ProtoRestSerializer serializer = ProtoRestSerializer.create(); + serializer.putQueryParam(fields, "$alt", "json;enum-encoding=int"); + return fields; + }) + .setRequestBodyExtractor( + request -> + ProtoRestSerializer.create() + .toBody("*", request.toBuilder().build(), true)) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Object.getDefaultInstance()) + .setDefaultTypeRegistry(typeRegistry) + .build()) + .build(); + + private final UnaryCallable echoCallable; + private final ServerStreamingCallable expandCallable; + private final UnaryCallable pagedExpandCallable; + private final UnaryCallable + pagedExpandPagedCallable; + private final UnaryCallable simplePagedExpandCallable; + private final UnaryCallable + simplePagedExpandPagedCallable; + private final UnaryCallable waitCallable; + private final OperationCallable waitOperationCallable; + private final UnaryCallable blockCallable; + private final UnaryCallable collideNameCallable; + + private final BackgroundResource backgroundResources; + private final HttpJsonOperationsStub httpJsonOperationsStub; + private final HttpJsonStubCallableFactory callableFactory; + + public static final HttpJsonEchoStub create(EchoStubSettings settings) throws IOException { + return new HttpJsonEchoStub(settings, ClientContext.create(settings)); + } + + public static final HttpJsonEchoStub create(ClientContext clientContext) throws IOException { + return new HttpJsonEchoStub(EchoStubSettings.newBuilder().build(), clientContext); + } + + public static final HttpJsonEchoStub create( + ClientContext clientContext, HttpJsonStubCallableFactory callableFactory) throws IOException { + return new HttpJsonEchoStub( + EchoStubSettings.newBuilder().build(), clientContext, callableFactory); + } + + /** + * Constructs an instance of HttpJsonEchoStub, 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 HttpJsonEchoStub(EchoStubSettings settings, ClientContext clientContext) + throws IOException { + this(settings, clientContext, new HttpJsonEchoCallableFactory()); + } + + /** + * Constructs an instance of HttpJsonEchoStub, 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 HttpJsonEchoStub( + EchoStubSettings settings, + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory) + throws IOException { + this.callableFactory = callableFactory; + this.httpJsonOperationsStub = + HttpJsonOperationsStub.create( + clientContext, + callableFactory, + typeRegistry, + ImmutableMap.builder() + .put( + "google.longrunning.Operations.ListOperations", + HttpRule.newBuilder().setGet("/v1beta1/operations").build()) + .put( + "google.longrunning.Operations.GetOperation", + HttpRule.newBuilder().setGet("/v1beta1/{name=operations/**}").build()) + .put( + "google.longrunning.Operations.DeleteOperation", + HttpRule.newBuilder().setDelete("/v1beta1/{name=operations/**}").build()) + .put( + "google.longrunning.Operations.CancelOperation", + HttpRule.newBuilder().setPost("/v1beta1/{name=operations/**}:cancel").build()) + .build()); + + HttpJsonCallSettings echoTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(echoMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings expandTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(expandMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings pagedExpandTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(pagedExpandMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings + simplePagedExpandTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(simplePagedExpandMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings waitTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(waitMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings blockTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(blockMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + HttpJsonCallSettings collideNameTransportSettings = + HttpJsonCallSettings.newBuilder() + .setMethodDescriptor(collideNameMethodDescriptor) + .setTypeRegistry(typeRegistry) + .build(); + + this.echoCallable = + callableFactory.createUnaryCallable( + echoTransportSettings, settings.echoSettings(), clientContext); + this.expandCallable = + callableFactory.createServerStreamingCallable( + expandTransportSettings, settings.expandSettings(), clientContext); + this.pagedExpandCallable = + callableFactory.createUnaryCallable( + pagedExpandTransportSettings, settings.pagedExpandSettings(), clientContext); + this.pagedExpandPagedCallable = + callableFactory.createPagedCallable( + pagedExpandTransportSettings, settings.pagedExpandSettings(), clientContext); + this.simplePagedExpandCallable = + callableFactory.createUnaryCallable( + simplePagedExpandTransportSettings, + settings.simplePagedExpandSettings(), + clientContext); + this.simplePagedExpandPagedCallable = + callableFactory.createPagedCallable( + simplePagedExpandTransportSettings, + settings.simplePagedExpandSettings(), + clientContext); + this.waitCallable = + callableFactory.createUnaryCallable( + waitTransportSettings, settings.waitSettings(), clientContext); + this.waitOperationCallable = + callableFactory.createOperationCallable( + waitTransportSettings, + settings.waitOperationSettings(), + clientContext, + httpJsonOperationsStub); + this.blockCallable = + callableFactory.createUnaryCallable( + blockTransportSettings, settings.blockSettings(), clientContext); + this.collideNameCallable = + callableFactory.createUnaryCallable( + collideNameTransportSettings, settings.collideNameSettings(), clientContext); + + this.backgroundResources = + new BackgroundResourceAggregation(clientContext.getBackgroundResources()); + } + + @InternalApi + public static List getMethodDescriptors() { + List methodDescriptors = new ArrayList<>(); + methodDescriptors.add(echoMethodDescriptor); + methodDescriptors.add(expandMethodDescriptor); + methodDescriptors.add(pagedExpandMethodDescriptor); + methodDescriptors.add(simplePagedExpandMethodDescriptor); + methodDescriptors.add(waitMethodDescriptor); + methodDescriptors.add(blockMethodDescriptor); + methodDescriptors.add(collideNameMethodDescriptor); + return methodDescriptors; + } + + public HttpJsonOperationsStub getHttpJsonOperationsStub() { + return httpJsonOperationsStub; + } + + @Override + public UnaryCallable echoCallable() { + return echoCallable; + } + + @Override + public ServerStreamingCallable expandCallable() { + return expandCallable; + } + + @Override + public UnaryCallable pagedExpandCallable() { + return pagedExpandCallable; + } + + @Override + public UnaryCallable pagedExpandPagedCallable() { + return pagedExpandPagedCallable; + } + + @Override + public UnaryCallable simplePagedExpandCallable() { + return simplePagedExpandCallable; + } + + @Override + public UnaryCallable + simplePagedExpandPagedCallable() { + return simplePagedExpandPagedCallable; + } + + @Override + public UnaryCallable waitCallable() { + return waitCallable; + } + + @Override + public OperationCallable waitOperationCallable() { + return waitOperationCallable; + } + + @Override + public UnaryCallable blockCallable() { + return blockCallable; + } + + @Override + public UnaryCallable collideNameCallable() { + return collideNameCallable; + } + + @Override + public ClientStreamingCallable collectCallable() { + throw new UnsupportedOperationException( + "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."); + } + + @Override + public BidiStreamingCallable chatAgainCallable() { + throw new UnsupportedOperationException( + "Not implemented: chatAgainCallable(). REST transport is not implemented for this method yet."); + } + + @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); + } +} From ff142e2074445411d3f58486fae110d773d7f1d4 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 23 Feb 2023 18:51:56 -0500 Subject: [PATCH 63/82] chore: Clean up tests --- .../HttpJsonServiceStubClassComposerTest.java | 3 +- .../composer/rest/RestTestProtoLoader.java | 31 +++---- .../rest/goldens/HttpJsonEchoStub.golden | 26 +++++- .../src/test/resources/showcase_v1beta1.yaml | 10 ++- .../stub/HttpJsonOperationsStubTest.java | 81 +++++++++++++++++-- 5 files changed, 125 insertions(+), 26 deletions(-) diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java index ee1caec582..a9b86203f6 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java @@ -61,8 +61,7 @@ public void generateEchoServiceClasses() { JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); Utils.saveCodegenToFile(this.getClass(), "HttpJsonEchoStub.golden", visitor.write()); - Path goldenFilePath = - Paths.get(Utils.getGoldenDir(this.getClass()), "HttpJsonEchoStub.golden"); + Path goldenFilePath = Paths.get(Utils.getGoldenDir(this.getClass()), "HttpJsonEchoStub.golden"); Assert.assertCodeEquals(goldenFilePath, visitor.write()); } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java index ec5766170c..8a1b955516 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java @@ -33,7 +33,6 @@ import com.google.protobuf.StructProto; import com.google.showcase.v1beta1.ComplianceOuterClass; import com.google.showcase.v1beta1.EchoOuterClass; - import java.nio.file.Path; import java.nio.file.Paths; import java.util.HashSet; @@ -63,7 +62,11 @@ public GapicContext parseCompliance() { Set outputResourceNames = new HashSet<>(); List services = Parser.parseService( - complianceFileDescriptor, messageTypes, resourceNames, Optional.empty(), outputResourceNames); + complianceFileDescriptor, + messageTypes, + resourceNames, + Optional.empty(), + outputResourceNames); String jsonFilename = "showcase_grpc_service_config.json"; Path jsonPath = Paths.get(getTestFilesDirectory(), jsonFilename); @@ -90,7 +93,7 @@ public GapicContext parseEcho() { String serviceYamlFileName = "showcase_v1beta1.yaml"; Path serviceYamlPath = Paths.get(getTestFilesDirectory(), serviceYamlFileName); Optional serviceYamlOpt = - ServiceYamlParser.parse(serviceYamlPath.toString()); + ServiceYamlParser.parse(serviceYamlPath.toString()); assertTrue(serviceYamlOpt.isPresent()); com.google.api.Service service = serviceYamlOpt.get(); @@ -100,8 +103,8 @@ public GapicContext parseEcho() { Map resourceNames = Parser.parseResourceNames(echoFileDescriptor); Set outputResourceNames = new HashSet<>(); List services = - Parser.parseService( - echoFileDescriptor, messageTypes, resourceNames, serviceYamlOpt, outputResourceNames); + Parser.parseService( + echoFileDescriptor, messageTypes, resourceNames, serviceYamlOpt, outputResourceNames); String jsonFilename = "showcase_grpc_service_config.json"; Path jsonPath = Paths.get(getTestFilesDirectory(), jsonFilename); @@ -110,14 +113,14 @@ public GapicContext parseEcho() { GapicServiceConfig config = configOpt.get(); return GapicContext.builder() - .setMessages(messageTypes) - .setResourceNames(resourceNames) - .setServices(services) - .setServiceConfig(config) - .setServiceYamlProto(service) - .setHelperResourceNames(outputResourceNames) - .setTransport(getTransport()) - .setRestNumericEnumsEnabled(true) - .build(); + .setMessages(messageTypes) + .setResourceNames(resourceNames) + .setServices(services) + .setServiceConfig(config) + .setServiceYamlProto(service) + .setHelperResourceNames(outputResourceNames) + .setTransport(getTransport()) + .setRestNumericEnumsEnabled(true) + .build(); } } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden index e5725a87cf..2c17e1f3df 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden @@ -360,16 +360,34 @@ public class HttpJsonEchoStub extends EchoStub { ImmutableMap.builder() .put( "google.longrunning.Operations.ListOperations", - HttpRule.newBuilder().setGet("/v1beta1/operations").build()) + HttpRule.newBuilder() + .setGet("/v1beta1/operations") + .addAdditionalBindings( + HttpRule.newBuilder().setGet("/v1/operations").build()) + .build()) .put( "google.longrunning.Operations.GetOperation", - HttpRule.newBuilder().setGet("/v1beta1/{name=operations/**}").build()) + HttpRule.newBuilder() + .setGet("/v1beta1/{name=operations/**}") + .addAdditionalBindings( + HttpRule.newBuilder().setGet("/v1/{name=operations/**}").build()) + .build()) .put( "google.longrunning.Operations.DeleteOperation", - HttpRule.newBuilder().setDelete("/v1beta1/{name=operations/**}").build()) + HttpRule.newBuilder() + .setDelete("/v1beta1/{name=operations/**}") + .addAdditionalBindings( + HttpRule.newBuilder().setDelete("/v1/{name=operations/**}").build()) + .build()) .put( "google.longrunning.Operations.CancelOperation", - HttpRule.newBuilder().setPost("/v1beta1/{name=operations/**}:cancel").build()) + HttpRule.newBuilder() + .setPost("/v1beta1/{name=operations/**}:cancel") + .addAdditionalBindings( + HttpRule.newBuilder() + .setPost("/v1/{name=operations/**}:cancel") + .build()) + .build()) .build()); HttpJsonCallSettings echoTransportSettings = diff --git a/gapic-generator-java/src/test/resources/showcase_v1beta1.yaml b/gapic-generator-java/src/test/resources/showcase_v1beta1.yaml index 0cdc059222..a4fcf6e638 100644 --- a/gapic-generator-java/src/test/resources/showcase_v1beta1.yaml +++ b/gapic-generator-java/src/test/resources/showcase_v1beta1.yaml @@ -77,9 +77,17 @@ http: body: '*' - selector: google.longrunning.Operations.ListOperations get: '/v1beta1/operations' + additional_bindings: + - get: '/v1/operations' - selector: google.longrunning.Operations.GetOperation get: '/v1beta1/{name=operations/**}' + additional_bindings: + - get: '/v1/{name=operations/**}' - selector: google.longrunning.Operations.DeleteOperation delete: '/v1beta1/{name=operations/**}' + additional_bindings: + - delete: '/v1/{name=operations/**}' - selector: google.longrunning.Operations.CancelOperation - post: '/v1beta1/{name=operations/**}:cancel' \ No newline at end of file + post: '/v1beta1/{name=operations/**}:cancel' + additional_bindings: + - post: '/v1/{name=operations/**}:cancel' \ No newline at end of file diff --git a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java index 30427ff3cd..c12888242a 100644 --- a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java +++ b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java @@ -34,7 +34,12 @@ import com.google.api.HttpRule; import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.httpjson.ApiMethodDescriptor; +import com.google.api.gax.httpjson.ProtoMessageRequestFormatter; import com.google.common.collect.ImmutableMap; +import com.google.longrunning.CancelOperationRequest; +import com.google.longrunning.DeleteOperationRequest; +import com.google.longrunning.GetOperationRequest; +import com.google.longrunning.ListOperationsRequest; import java.util.List; import org.junit.BeforeClass; import org.junit.Test; @@ -52,17 +57,29 @@ public static void setUp() throws Exception { .build(), ImmutableMap.of( "google.longrunning.Operations.ListOperations", - HttpRule.newBuilder().setGet("testList").build(), + HttpRule.newBuilder() + .setGet("testList") + .addAdditionalBindings(HttpRule.newBuilder().setGet("testList2")) + .build(), "google.longrunning.Operations.GetOperation", - HttpRule.newBuilder().setGet("testGet").build(), + HttpRule.newBuilder() + .setGet("testGet") + .addAdditionalBindings(HttpRule.newBuilder().setGet("testGet2")) + .build(), "google.longrunning.Operations.DeleteOperation", - HttpRule.newBuilder().setDelete("testDelete").build(), + HttpRule.newBuilder() + .setDelete("testDelete") + .addAdditionalBindings(HttpRule.newBuilder().setGet("testDelete2")) + .build(), "google.longrunning.Operations.CancelOperation", - HttpRule.newBuilder().setPost("testCancel").build())); + HttpRule.newBuilder() + .setPost("testCancel") + .addAdditionalBindings(HttpRule.newBuilder().setGet("testCancel2")) + .build())); } @Test - public void testCorrectMethodDescriptors() { + public void testMethodDescriptorsURI() { List apiMethodDescriptorList = httpJsonOperationsStub.getAllMethodDescriptors(); assertThat(apiMethodDescriptorList.get(0).getRequestFormatter().getPathTemplate().toRawString()) @@ -74,4 +91,58 @@ public void testCorrectMethodDescriptors() { assertThat(apiMethodDescriptorList.get(3).getRequestFormatter().getPathTemplate().toRawString()) .isEqualTo("testCancel"); } + + @Test + public void testMethodDescriptorsAdditionalBindings() { + List apiMethodDescriptorList = + httpJsonOperationsStub.getAllMethodDescriptors(); + ProtoMessageRequestFormatter + listOperationsRequestProtoMessageRequestFormatter = + (ProtoMessageRequestFormatter) + apiMethodDescriptorList.get(0).getRequestFormatter(); + assertThat(listOperationsRequestProtoMessageRequestFormatter.getAdditionalPathTemplates()) + .hasSize(1); + assertThat( + listOperationsRequestProtoMessageRequestFormatter + .getAdditionalPathTemplates() + .get(0) + .toRawString()) + .isEqualTo("testList2"); + ProtoMessageRequestFormatter + getOperationRequestProtoMessageRequestFormatter = + (ProtoMessageRequestFormatter) + apiMethodDescriptorList.get(1).getRequestFormatter(); + assertThat(getOperationRequestProtoMessageRequestFormatter.getAdditionalPathTemplates()) + .hasSize(1); + assertThat( + getOperationRequestProtoMessageRequestFormatter + .getAdditionalPathTemplates() + .get(0) + .toRawString()) + .isEqualTo("testGet2"); + ProtoMessageRequestFormatter + deleteOperationRequestProtoMessageRequestFormatter = + (ProtoMessageRequestFormatter) + apiMethodDescriptorList.get(2).getRequestFormatter(); + assertThat(deleteOperationRequestProtoMessageRequestFormatter.getAdditionalPathTemplates()) + .hasSize(1); + assertThat( + deleteOperationRequestProtoMessageRequestFormatter + .getAdditionalPathTemplates() + .get(0) + .toRawString()) + .isEqualTo("testDelete2"); + ProtoMessageRequestFormatter + cancelOperationRequestProtoMessageRequestFormatter = + (ProtoMessageRequestFormatter) + apiMethodDescriptorList.get(3).getRequestFormatter(); + assertThat(cancelOperationRequestProtoMessageRequestFormatter.getAdditionalPathTemplates()) + .hasSize(1); + assertThat( + cancelOperationRequestProtoMessageRequestFormatter + .getAdditionalPathTemplates() + .get(0) + .toRawString()) + .isEqualTo("testCancel2"); + } } From 3f250ab922d001889e71076b2a749375dc33a6f2 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 23 Feb 2023 19:35:56 -0500 Subject: [PATCH 64/82] chore: Sort the map entry to get a consistent ordering for the test --- .../HttpJsonServiceStubClassComposer.java | 7 ++--- .../rest/goldens/HttpJsonEchoStub.golden | 28 +++++++++---------- 2 files changed, 17 insertions(+), 18 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 3b501ae565..e84063c8ef 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 @@ -1110,10 +1110,9 @@ protected List createOperationsStubInitExpr( FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName()).reference())) .build(); - for (Map.Entry entrySet : operationCustomHttpRules.entrySet()) { - String selector = entrySet.getKey(); - HttpRule httpRule = entrySet.getValue(); - + for (String selector : + operationCustomHttpRules.keySet().stream().sorted().collect(Collectors.toList())) { + HttpRule httpRule = operationCustomHttpRules.get(selector); Expr httpRuleBuilderExpr = createHttpRuleExpr(httpRule, true); operationCustomHttpBindingsBuilderExpr = diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden index 2c17e1f3df..4d328c7dca 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden @@ -359,34 +359,34 @@ public class HttpJsonEchoStub extends EchoStub { typeRegistry, ImmutableMap.builder() .put( - "google.longrunning.Operations.ListOperations", + "google.longrunning.Operations.CancelOperation", HttpRule.newBuilder() - .setGet("/v1beta1/operations") + .setPost("/v1beta1/{name=operations/**}:cancel") .addAdditionalBindings( - HttpRule.newBuilder().setGet("/v1/operations").build()) + HttpRule.newBuilder() + .setPost("/v1/{name=operations/**}:cancel") + .build()) .build()) .put( - "google.longrunning.Operations.GetOperation", + "google.longrunning.Operations.DeleteOperation", HttpRule.newBuilder() - .setGet("/v1beta1/{name=operations/**}") + .setDelete("/v1beta1/{name=operations/**}") .addAdditionalBindings( - HttpRule.newBuilder().setGet("/v1/{name=operations/**}").build()) + HttpRule.newBuilder().setDelete("/v1/{name=operations/**}").build()) .build()) .put( - "google.longrunning.Operations.DeleteOperation", + "google.longrunning.Operations.GetOperation", HttpRule.newBuilder() - .setDelete("/v1beta1/{name=operations/**}") + .setGet("/v1beta1/{name=operations/**}") .addAdditionalBindings( - HttpRule.newBuilder().setDelete("/v1/{name=operations/**}").build()) + HttpRule.newBuilder().setGet("/v1/{name=operations/**}").build()) .build()) .put( - "google.longrunning.Operations.CancelOperation", + "google.longrunning.Operations.ListOperations", HttpRule.newBuilder() - .setPost("/v1beta1/{name=operations/**}:cancel") + .setGet("/v1beta1/operations") .addAdditionalBindings( - HttpRule.newBuilder() - .setPost("/v1/{name=operations/**}:cancel") - .build()) + HttpRule.newBuilder().setGet("/v1/operations").build()) .build()) .build()); From 71b12440c48f3a916898de00455c2c4498229cbb Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 23 Feb 2023 21:00:58 -0500 Subject: [PATCH 65/82] chore: Update showcase and integration tests --- .../rest/HttpJsonServiceStubClassComposer.java | 1 + .../stub/HttpJsonOperationsStubTest.java | 6 ++++-- .../showcase/v1beta1/stub/HttpJsonEchoStub.java | 14 +++++++------- .../v1beta1/stub/HttpJsonMessagingStub.java | 14 +++++++------- .../v1beta1/stub/HttpJsonCloudRedisStub.java | 16 ++++++++-------- 5 files changed, 27 insertions(+), 24 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 e84063c8ef..62b5c05fa1 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 @@ -1110,6 +1110,7 @@ protected List createOperationsStubInitExpr( FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName()).reference())) .build(); + // Sorting is done to ensure consistent ordering of the entries in the Custom HttpRule Map for (String selector : operationCustomHttpRules.keySet().stream().sorted().collect(Collectors.toList())) { HttpRule httpRule = operationCustomHttpRules.get(selector); diff --git a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java index c12888242a..8ad87a4734 100644 --- a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java +++ b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java @@ -69,12 +69,12 @@ public static void setUp() throws Exception { "google.longrunning.Operations.DeleteOperation", HttpRule.newBuilder() .setDelete("testDelete") - .addAdditionalBindings(HttpRule.newBuilder().setGet("testDelete2")) + .addAdditionalBindings(HttpRule.newBuilder().setDelete("testDelete2")) .build(), "google.longrunning.Operations.CancelOperation", HttpRule.newBuilder() .setPost("testCancel") - .addAdditionalBindings(HttpRule.newBuilder().setGet("testCancel2")) + .addAdditionalBindings(HttpRule.newBuilder().setPost("testCancel2")) .build())); } @@ -94,6 +94,8 @@ public void testMethodDescriptorsURI() { @Test public void testMethodDescriptorsAdditionalBindings() { + // getAllMethodDescriptors() returns the MethodDescriptors in specific order + // The order is: List, Get, Delete, Cancel List apiMethodDescriptorList = httpJsonOperationsStub.getAllMethodDescriptors(); ProtoMessageRequestFormatter 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 fffd0cfd1e..3623597566 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 @@ -374,17 +374,17 @@ protected HttpJsonEchoStub( typeRegistry, ImmutableMap.builder() .put( - "google.longrunning.Operations.ListOperations", - HttpRule.newBuilder().setGet("/v1beta1/operations").build()) - .put( - "google.longrunning.Operations.GetOperation", - HttpRule.newBuilder().setGet("/v1beta1/{name=operations/**}").build()) + "google.longrunning.Operations.CancelOperation", + HttpRule.newBuilder().setPost("/v1beta1/{name=operations/**}:cancel").build()) .put( "google.longrunning.Operations.DeleteOperation", HttpRule.newBuilder().setDelete("/v1beta1/{name=operations/**}").build()) .put( - "google.longrunning.Operations.CancelOperation", - HttpRule.newBuilder().setPost("/v1beta1/{name=operations/**}:cancel").build()) + "google.longrunning.Operations.GetOperation", + HttpRule.newBuilder().setGet("/v1beta1/{name=operations/**}").build()) + .put( + "google.longrunning.Operations.ListOperations", + HttpRule.newBuilder().setGet("/v1beta1/operations").build()) .build()); HttpJsonCallSettings echoTransportSettings = 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 634e6a11e2..cc6ffddf9b 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 @@ -571,17 +571,17 @@ protected HttpJsonMessagingStub( typeRegistry, ImmutableMap.builder() .put( - "google.longrunning.Operations.ListOperations", - HttpRule.newBuilder().setGet("/v1beta1/operations").build()) - .put( - "google.longrunning.Operations.GetOperation", - HttpRule.newBuilder().setGet("/v1beta1/{name=operations/**}").build()) + "google.longrunning.Operations.CancelOperation", + HttpRule.newBuilder().setPost("/v1beta1/{name=operations/**}:cancel").build()) .put( "google.longrunning.Operations.DeleteOperation", HttpRule.newBuilder().setDelete("/v1beta1/{name=operations/**}").build()) .put( - "google.longrunning.Operations.CancelOperation", - HttpRule.newBuilder().setPost("/v1beta1/{name=operations/**}:cancel").build()) + "google.longrunning.Operations.GetOperation", + HttpRule.newBuilder().setGet("/v1beta1/{name=operations/**}").build()) + .put( + "google.longrunning.Operations.ListOperations", + HttpRule.newBuilder().setGet("/v1beta1/operations").build()) .build()); HttpJsonCallSettings createRoomTransportSettings = diff --git a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java index 8b65b3c759..cf4e271cdc 100644 --- a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java +++ b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/HttpJsonCloudRedisStub.java @@ -583,24 +583,24 @@ protected HttpJsonCloudRedisStub( typeRegistry, ImmutableMap.builder() .put( - "google.longrunning.Operations.GetOperation", + "google.longrunning.Operations.CancelOperation", HttpRule.newBuilder() - .setGet("/v1beta1/{name=projects/*/locations/*/operations/*}") + .setPost("/v1beta1/{name=projects/*/locations/*/operations/*}:cancel") .build()) .put( - "google.longrunning.Operations.ListOperations", + "google.longrunning.Operations.DeleteOperation", HttpRule.newBuilder() - .setGet("/v1beta1/{name=projects/*/locations/*}/operations") + .setDelete("/v1beta1/{name=projects/*/locations/*/operations/*}") .build()) .put( - "google.longrunning.Operations.DeleteOperation", + "google.longrunning.Operations.GetOperation", HttpRule.newBuilder() - .setDelete("/v1beta1/{name=projects/*/locations/*/operations/*}") + .setGet("/v1beta1/{name=projects/*/locations/*/operations/*}") .build()) .put( - "google.longrunning.Operations.CancelOperation", + "google.longrunning.Operations.ListOperations", HttpRule.newBuilder() - .setPost("/v1beta1/{name=projects/*/locations/*/operations/*}:cancel") + .setGet("/v1beta1/{name=projects/*/locations/*}/operations") .build()) .build()); From 98c1cfbb677decd43eaffa2d9fa43786c2ced076 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 23 Feb 2023 21:09:08 -0500 Subject: [PATCH 66/82] chore: Resolve sonar comments --- .../gapic/composer/rest/RestTestProtoLoader.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java index 8a1b955516..572a018a97 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java @@ -14,8 +14,7 @@ package com.google.api.generator.gapic.composer.rest; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static com.google.common.truth.Truth.assertThat; import com.google.api.generator.gapic.composer.common.TestProtoLoader; import com.google.api.generator.gapic.model.GapicContext; @@ -55,7 +54,7 @@ public static RestTestProtoLoader instance() { public GapicContext parseCompliance() { FileDescriptor complianceFileDescriptor = ComplianceOuterClass.getDescriptor(); ServiceDescriptor complianceServiceDescriptor = complianceFileDescriptor.getServices().get(0); - assertEquals(complianceServiceDescriptor.getName(), "Compliance"); + assertThat(complianceServiceDescriptor.getName()).isEqualTo("Compliance"); Map messageTypes = Parser.parseMessages(complianceFileDescriptor); Map resourceNames = Parser.parseResourceNames(complianceFileDescriptor); @@ -71,7 +70,7 @@ public GapicContext parseCompliance() { String jsonFilename = "showcase_grpc_service_config.json"; Path jsonPath = Paths.get(getTestFilesDirectory(), jsonFilename); Optional configOpt = ServiceConfigParser.parse(jsonPath.toString()); - assertTrue(configOpt.isPresent()); + assertThat(configOpt.isPresent()).isTrue(); GapicServiceConfig config = configOpt.get(); return GapicContext.builder() @@ -88,13 +87,13 @@ public GapicContext parseCompliance() { public GapicContext parseEcho() { FileDescriptor echoFileDescriptor = EchoOuterClass.getDescriptor(); ServiceDescriptor echoServiceDescriptor = echoFileDescriptor.getServices().get(0); - assertEquals(echoServiceDescriptor.getName(), "Echo"); + assertThat(echoServiceDescriptor.getName()).isEqualTo("Echo"); String serviceYamlFileName = "showcase_v1beta1.yaml"; Path serviceYamlPath = Paths.get(getTestFilesDirectory(), serviceYamlFileName); Optional serviceYamlOpt = ServiceYamlParser.parse(serviceYamlPath.toString()); - assertTrue(serviceYamlOpt.isPresent()); + assertThat(serviceYamlOpt.isPresent()).isTrue(); com.google.api.Service service = serviceYamlOpt.get(); Map messageTypes = Parser.parseMessages(echoFileDescriptor); @@ -109,7 +108,7 @@ public GapicContext parseEcho() { String jsonFilename = "showcase_grpc_service_config.json"; Path jsonPath = Paths.get(getTestFilesDirectory(), jsonFilename); Optional configOpt = ServiceConfigParser.parse(jsonPath.toString()); - assertTrue(configOpt.isPresent()); + assertThat(configOpt.isPresent()).isTrue(); GapicServiceConfig config = configOpt.get(); return GapicContext.builder() From 25acf971485c837821de1cb75e090ddcbfeed9df Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Fri, 24 Feb 2023 12:36:21 -0500 Subject: [PATCH 67/82] chore: Update comments --- DEVELOPMENT.md | 253 +----------------- .../HttpJsonServiceStubClassComposer.java | 12 +- .../stub/HttpJsonOperationsStub.java | 18 ++ 3 files changed, 33 insertions(+), 250 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 1a016371e5..85fdd75ab4 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -11,23 +11,20 @@ for gapic-generator-java's Bazel build. 1. Clone this repo. 2. (OPTIONAL) Copy the Git pre-commit hooks. This will automatically check the build, run - tests, and perform linting before each commit. (Symlinks don't seem to work, - but if you find a way, please add it here!) + tests, and perform linting before each commit. (Symlinks don't seem to work, + but if you find a way, please add it here!) ```sh cp .githooks/pre-commit .git/hooks/pre-commit ``` - ### Note: You may see this error with the pre-commits due to the monorepo migration: - ``` -[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project gapic-generator-java: Compilation failure: Compilation failure: -[ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java:[19,43] package com.google.api.gax.httpjson.testing does not exist -[ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/rest/ServiceClientTestClassComposer.java:[24,38] package com.google.api.gax.rpc.testing does not exist -[ERROR] gapic-generator-java/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/grpc/ServiceClientTestClassComposer.java:[18,39] package com.google.api.gax.grpc.testing does not exist +## Run Tests for All Modules + +- Run all unit tests in all modules. + + ```sh + mvn install ``` - Remove the pre-commit hooks. Tracking the issue in https://github.com/googleapis/gapic-generator-java/issues/1253 - -3. Install [`bazelisk`](https://github.com/bazelbuild/bazelisk) in your `PATH`. ## Code Formatting @@ -41,236 +38,4 @@ for gapic-generator-java's Bazel build. ```sh mvn fmt:format - ``` - -## Test Running - -- Run all unit and integration tests. - - ```sh - mvn install # unit tests, maven test wouldn't work in root folder because gapic-generator-java is dependant on test jars of gax-java - bazel test //... # integration tests - ``` - -- Run all unit tests. - - ```sh - mvn install - ``` -- For running unit tests in `gapic-generator-java` submodule, first build all modules with `mvn install -DskipTests`, then `cd` into `gapic-generator-java` submodule for the following commands: - - Run a single or multiple unit tests: - - ```sh - mvn test -Dtest=JavaCodeGeneratorTest - - mvn test "-Dtest=Basic*, !%regex[.*.Unstable.*], !%regex[.*.MyTest.class#one.*|two.*], %regex[#fast.*|slow.*]" - ``` - - - Update all unit test golden files: - - ```sh - mvn test -DupdateUnitGoldens - ``` - - - Update a single unit test golden file, for example `JavaCodeGeneratorTest.java`: - - ```sh - mvn test -DupdateUnitGoldens -Dtest=JavaCodeGeneratorTest - ``` - -- Run a single integration test for API like `Redis`, it generates Java source - code using the Java microgenerator and compares them with the goldens files - in `test/integration/goldens/redis`. - - ```sh - bazel test //test/integration:redis - ``` - -- Update integration test golden files, for example `Redis`. This clobbers all the - files in `test/integration/goldens/redis`. - - ```sh - bazel run //test/integration:update_redis - ``` - -## Showcase Integration Testing - -[GAPIC Showcase](https://github.com/googleapis/gapic-showcase) is an API that demonstrates Generated -API Client (GAPIC) features and common API patterns used by Google. It follows the [Cloud APIs -design guide](https://cloud.google.com/apis/design/). `gapic-generator-java` generates a client for -the Showcase API which can communicate with a local Showcase server to perform integration tests. - -### Requirements - -* Install [Go](https://go.dev) in your `PATH`. - -### Installing the Server - -Using the latest version of showcase is recommended, but backward compatibility between server -versions is not guaranteed. If changing the version of the server, it may also be necessary to -update to a compatible client version in `./WORKSPACE`. - -```shell -$ GAPIC_SHOWCASE_VERSION=0.25.0 -$ go install github.com/googleapis/gapic-showcase/cmd/gapic-showcase@v"$GAPIC_SHOWCASE_VERSION" -$ PATH=$PATH:`go env GOPATH`/bin -$ gapic-showcase --help -> Root command of gapic-showcase -> -> Usage: -> gapic-showcase [command] -> -> Available Commands: -> completion Emits bash a completion for gapic-showcase -> compliance This service is used to test that GAPICs... -> echo This service is used showcase the four main types... -> help Help about any command -> identity A simple identity service. -> messaging A simple messaging service that implements chat... -> run Runs the showcase server -> sequence Sub-command for Service: Sequence -> testing A service to facilitate running discrete sets of... -> -> Flags: -> -h, --help help for gapic-showcase -> -j, --json Print JSON output -> -v, --verbose Print verbose output -> --version version for gapic-showcase -``` - -### Running the Server - -Run the showcase server to allow requests to be sent to it. This opens port `:7469` to send and -receive requests. - -```shell -$ gapic-showcase run -> 2022/11/21 16:22:15 Showcase listening on port: :7469 -> 2022/11/21 16:22:15 Starting endpoint 0: gRPC endpoint -> 2022/11/21 16:22:15 Starting endpoint 1: HTTP/REST endpoint -> 2022/11/21 16:22:15 Starting endpoint multiplexer -> 2022/11/21 16:22:15 Listening for gRPC-fallback connections -> 2022/11/21 16:22:15 Listening for gRPC connections -> 2022/11/21 16:22:15 Listening for REST connections -> 2022/11/21 16:22:15 Fallback server listening on port: :1337 -``` - -### Running the Integration Tests - -Open a new terminal window in the root project directory. - -```shell -$ cd showcase -$ mvn verify -P enable-integration-tests -P enable-golden-tests -``` - -Note: - -* `-P enable-golden-tests` is optional. These tests do not require a local server. - -### Update the Golden Showcase Files - -Open a new terminal window in the root project directory. - -```shell -$ cd showcase -$ mvn compile -P update -``` - -## Running the Plugin under googleapis with local gapic-generator-java - -For running the Plugin with showcase protos and local gapic-generator-java, see above section "Showcase Integration Testing". - -To generate a production GAPIC API: - -1. Clone [googleapis](https://github.com/googleapis/googleapis). - -2. Modify `googleapis/WORKSPACE` to point to local gapic-generator-java - - Normally, googleapis's build pulls in gapic-generator-java from Maven Central. - For a local run, we first need to build a local SNAPSHOT jar of the generator. Then we point googleapis to - both the local SNAPSHOT jar and the local copy of the generator. - - Replace the following section in googleapis - ``` - _gapic_generator_java_version = "2.13.0" - - maven_install( - artifacts = [ - "com.google.api:gapic-generator-java:" + _gapic_generator_java_version, - ], - #Update this False for local development - fail_on_missing_checksum = True, - repositories = [ - "m2Local", - "https://repo.maven.apache.org/maven2/", - ] - ) - - http_archive( - name = "gapic_generator_java", - strip_prefix = "gapic-generator-java-%s" % _gapic_generator_java_version, - urls = ["https://github.com/googleapis/gapic-generator-java/archive/v%s.zip" % _gapic_generator_java_version], - ) - ``` - - to - - ``` - _gapic_generator_java_version = "2.13.1-SNAPSHOT" - - maven_install( - artifacts = [ - "com.google.api:gapic-generator-java:" + _gapic_generator_java_version, - ], - #Update this False for local development - fail_on_missing_checksum = False, - repositories = [ - "m2Local", - "https://repo.maven.apache.org/maven2/", - ] - ) - - local_repository( - name = "gapic_generator_java", - path = "/absolute/path/to/your/local/gapic-generator-java", - ) - ``` - - Note: At the time of writing, the gapic-generator version was `2.13.0`. Update the version to the latest version in the pom.xml - -3. Build the new target. - - You can generate any client library based on the protos within googleapis. - You just need the name of the service within the `java_gapic_assembly_gradle_pkg` - rules within the service's `BUILD.bazel` file. - For instance, to run your local generator on the `speech`'s v2 service, you can - run: - - ``` - bazel build //google/cloud/speech/v2:google-cloud-speech-v2-java - ``` - - Note: If you are running into bazel build issues, you can try to remove gapic-generator-java cached in your local m2 - Try running this command: - ``` - rm -rf ~/.m2/repository/com/google/api/ - ``` - and then rebuild gapic-generator-java (`mvn clean install`). - -## FAQ - -### Error in workspace: workspace() got unexpected keyword argument 'managed_directories' - -Full Error: - -``` -ERROR: Traceback (most recent call last): - File "/home/alicejli/googleapis/WORKSPACE", line 1, column 10, in - workspace( -Error in workspace: workspace() got unexpected keyword argument 'managed_directories' -ERROR: Error computing the main repository mapping: Encountered error while reading extension file 'tools/build_defs/repo/http.bzl': no such package '@bazel_tools//tools/build_defs/repo': error loading package 'external': Could not load //external package -``` - -You may be using the latest version of bazel which this project does not support yet. Try installing bazelisk to force -bazel to use the version specified in `.bazeliskrc` \ No newline at end of file + ``` \ No newline at end of file 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 62b5c05fa1..36d9f1245a 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 @@ -1171,7 +1171,7 @@ private Expr createHttpRuleExpr(HttpRule httpRule, boolean checkAdditionalBindin httpRuleBuilderExpr = MethodInvocationExpr.builder() .setExprReferenceExpr(httpRuleBuilderExpr) - .setMethodName(getHttpVerbSetterFromHttpRule(httpRule)) + .setMethodName(setMethodFormat(getHttpVerbSetterFromHttpRule(httpRule))) .setArguments( ValueExpr.withValue(StringObjectValue.withValue(getURIValueFromHttpRule(httpRule)))) .setReturnType(FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName())) @@ -1229,15 +1229,15 @@ private Map parseCustomHttpRules( private String getHttpVerbSetterFromHttpRule(HttpRule httpRule) { switch (httpRule.getPatternCase().getNumber()) { case 2: - return "setGet"; + return "get"; case 3: - return "setPut"; + return "put"; case 4: - return "setPost"; + return "post"; case 5: - return "setDelete"; + return "delete"; case 6: - return "setPatch"; + return "patch"; default: return null; } diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 764f265ad0..8b51686fd9 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -68,6 +68,9 @@ * REST stub implementation for the Operations service API. * *

This class is for advanced usage and reflects the underlying API directly. + * + *

Note: This OperationsClient was originally auto-generated by the generator. There has been a + * few handwritten changes since then and has not been regenerated. */ public class HttpJsonOperationsStub extends OperationsStub { private static final String LRO_LIST_OPERATIONS = "google.longrunning.Operations.ListOperations"; @@ -352,6 +355,15 @@ protected HttpJsonOperationsStub( backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources()); } + /** + * Parse the HttpRule for the HttpVerb containing the custom URI. + * + *

This ignores the `Custom` HttpRule. Operation proto only supports GET, POST, DELETE and + * Custom requires special logic. + * + * @param httpRule HttpRule to parse + * @return Custom HttpRule's URI value + */ private static String getValueBasedOnPatternCase(HttpRule httpRule) { switch (httpRule.getPatternCase().getNumber()) { case 2: @@ -452,6 +464,12 @@ private static void updateDefaultApiMethodDescriptors( } } + /** + * Wrapper to get a list of the MethodDescriptors similar to `getMethodDescriptors()`. Difference + * is that this gets the modified MethodDescriptors with any customized values + * + * @return List of the custom MethodDescriptors + */ @InternalApi public List getAllMethodDescriptors() { return ImmutableList.of( From f0a16926a76c8156bb8316901e82ab9b784b0d65 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Fri, 24 Feb 2023 13:57:07 -0500 Subject: [PATCH 68/82] chore: Remove a few public constructors --- gapic-generator-java-pom-parent/pom.xml | 4 ++-- .../longrunning/stub/HttpJsonOperationsStub.java | 14 ++------------ .../longrunning/stub/OperationsStubSettings.java | 9 +-------- .../stub/HttpJsonOperationsStubTest.java | 10 ++++++++-- 4 files changed, 13 insertions(+), 24 deletions(-) diff --git a/gapic-generator-java-pom-parent/pom.xml b/gapic-generator-java-pom-parent/pom.xml index 7aca226c82..eefddb3394 100644 --- a/gapic-generator-java-pom-parent/pom.xml +++ b/gapic-generator-java-pom-parent/pom.xml @@ -26,8 +26,8 @@ 1.3.2 - 1.52.1 - 1.15.0 + 1.53.0 + 1.16.0 2.10.1 31.1-jre 3.21.12 diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 8b51686fd9..f3b0a7bb84 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -237,18 +237,8 @@ public static final HttpJsonOperationsStub create( new HashMap<>()); } - public static final HttpJsonOperationsStub create( - OperationsStubSettings settings, Map customHttpBindings) - throws IOException { - return new HttpJsonOperationsStub(settings, ClientContext.create(settings), customHttpBindings); - } - - public static final HttpJsonOperationsStub create( - ClientContext clientContext, Map customHttpBindings) throws IOException { - return new HttpJsonOperationsStub( - OperationsStubSettings.newBuilder().build(), clientContext, customHttpBindings); - } - + // We choose to only override these two constructors + // The generator can generate these two combinations with custom HttpRules public static final HttpJsonOperationsStub create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java index daec574a6e..5f327a1091 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/OperationsStubSettings.java @@ -31,7 +31,6 @@ import static com.google.api.gax.httpjson.longrunning.OperationsClient.ListOperationsPagedResponse; -import com.google.api.HttpRule; import com.google.api.core.ApiFunction; import com.google.api.core.ApiFuture; import com.google.api.gax.core.GaxProperties; @@ -65,9 +64,7 @@ import com.google.longrunning.Operation; import com.google.protobuf.Empty; import java.io.IOException; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.threeten.bp.Duration; // AUTO-GENERATED DOCUMENTATION AND CLASS. @@ -190,14 +187,10 @@ public UnaryCallSettings cancelOperationSettings( } public OperationsStub createStub() throws IOException { - return createStub(new HashMap<>()); - } - - public OperationsStub createStub(Map customHttpBindings) throws IOException { if (getTransportChannelProvider() .getTransportName() .equals(HttpJsonTransportChannel.getHttpJsonTransportName())) { - return HttpJsonOperationsStub.create(this, customHttpBindings); + return HttpJsonOperationsStub.create(this); } throw new UnsupportedOperationException( String.format( diff --git a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java index 8ad87a4734..81f0b9e5fe 100644 --- a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java +++ b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java @@ -35,11 +35,14 @@ import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.httpjson.ApiMethodDescriptor; import com.google.api.gax.httpjson.ProtoMessageRequestFormatter; +import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.testing.FakeCallContext; import com.google.common.collect.ImmutableMap; import com.google.longrunning.CancelOperationRequest; import com.google.longrunning.DeleteOperationRequest; import com.google.longrunning.GetOperationRequest; import com.google.longrunning.ListOperationsRequest; +import com.google.protobuf.TypeRegistry; import java.util.List; import org.junit.BeforeClass; import org.junit.Test; @@ -52,9 +55,12 @@ public class HttpJsonOperationsStubTest { public static void setUp() throws Exception { httpJsonOperationsStub = HttpJsonOperationsStub.create( - OperationsStubSettings.newBuilder() - .setCredentialsProvider(NoCredentialsProvider.create()) + ClientContext.newBuilder() + .setCredentials(NoCredentialsProvider.create().getCredentials()) + .setDefaultCallContext(FakeCallContext.createDefault()) .build(), + new HttpJsonOperationsCallableFactory(), + TypeRegistry.newBuilder().build(), ImmutableMap.of( "google.longrunning.Operations.ListOperations", HttpRule.newBuilder() From 85bcf9004882cabd3d20bb7cbb60cc6f1157ce7e Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Fri, 24 Feb 2023 15:36:52 -0500 Subject: [PATCH 69/82] chore: test ci From 7af9882e7014319c08f0145664177e0269369282 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Mon, 27 Feb 2023 18:36:08 -0500 Subject: [PATCH 70/82] chore: Remove the cache for java 8 --- .github/workflows/ci-maven.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci-maven.yaml b/.github/workflows/ci-maven.yaml index 4c209508dd..e614dea160 100644 --- a/.github/workflows/ci-maven.yaml +++ b/.github/workflows/ci-maven.yaml @@ -106,7 +106,6 @@ jobs: with: java-version: 8 distribution: temurin - cache: maven - run: java -version - name: Run tests in Java 8 with the source compiled in Java 11 for gapic-generator-java shell: bash From 0c4eec309a11be454412908e0f43f5e2c27cad7e Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 28 Feb 2023 14:21:00 -0500 Subject: [PATCH 71/82] chore: Update from PR feedback --- .../HttpJsonServiceStubClassComposer.java | 84 ++++-------------- .../ProtoMessageRequestFormatter.java | 6 -- .../stub/HttpJsonOperationsStub.java | 87 ++++++++----------- .../longrunning/OperationsClientTest.java | 22 +++++ .../stub/HttpJsonOperationsStubTest.java | 61 +++++++------ 5 files changed, 104 insertions(+), 156 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 36d9f1245a..d5a5afd27e 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 @@ -1097,8 +1097,7 @@ protected List createOperationsStubInitExpr( // If the Service contains custom HttpRules for Operations, we pass a map of the custom rules to // the Operations Client - Map operationCustomHttpRules = - parseCustomHttpRules(context, x -> x.getSelector().contains(LRO_NAME_PREFIX)); + Map operationCustomHttpRules = parseOperationsCustomHttpRules(context); if (operationCustomHttpRules.size() > 0) { Expr operationCustomHttpBindingsBuilderExpr = MethodInvocationExpr.builder() @@ -1151,16 +1150,9 @@ protected List createOperationsStubInitExpr( .build()); } - /** - * Build an Expr that creates an HttpRule. Creates a builder and adds the http verb, custom path, - * and any additional bindings. - * - *

`additional_bindings` can only be nested one layer deep, so we only check once - * - * @param httpRule HttpRule to be re-created for the library to send over - * @param checkAdditionalBindings Boolean to check if we parse for any `additional_bindings` - * @return Expr with the HttpRule built - */ + // Build an Expr that creates an HttpRule. Creates a builder and adds the http verb, custom path, + // and any additional bindings. + // `additional_bindings` can only be nested one layer deep, so we only check once private Expr createHttpRuleExpr(HttpRule httpRule, boolean checkAdditionalBindings) { Expr httpRuleBuilderExpr = MethodInvocationExpr.builder() @@ -1171,9 +1163,10 @@ private Expr createHttpRuleExpr(HttpRule httpRule, boolean checkAdditionalBindin httpRuleBuilderExpr = MethodInvocationExpr.builder() .setExprReferenceExpr(httpRuleBuilderExpr) - .setMethodName(setMethodFormat(getHttpVerbSetterFromHttpRule(httpRule))) + .setMethodName(setMethodFormat(httpRule.getPatternCase().toString().toLowerCase())) .setArguments( - ValueExpr.withValue(StringObjectValue.withValue(getURIValueFromHttpRule(httpRule)))) + ValueExpr.withValue( + StringObjectValue.withValue(getOperationsURIValueFromHttpRule(httpRule)))) .setReturnType(FIXED_REST_TYPESTORE.get(HttpRule.class.getSimpleName())) .build(); @@ -1197,16 +1190,10 @@ private Expr createHttpRuleExpr(HttpRule httpRule, boolean checkAdditionalBindin return httpRuleBuilderExpr; } - /** - * Parses the Service Yaml file's for custom HttpRules. Filter the rules based on a predicate to - * match for certain custom rules. - * - * @param context GapicContext that contains the Service Yaml information - * @param predicate HttpRule predicate to filter for certain rules - * @return Map contains KV pairing of (HttpRule Selector -> HttpRule object) - */ - private Map parseCustomHttpRules( - GapicContext context, Predicate predicate) { + // Parses the Service Yaml file's for custom HttpRules. Filter the HttpRules for ones that match + // Operations + private Map parseOperationsCustomHttpRules(GapicContext context) { + Predicate predicate = x -> x.getSelector().contains(LRO_NAME_PREFIX); com.google.api.Service service = context.serviceYamlProto(); if (service == null || service.getHttp() == null) { return ImmutableMap.of(); @@ -1216,56 +1203,21 @@ private Map parseCustomHttpRules( .collect(Collectors.toMap(HttpRule::getSelector, x -> x)); } - /** - * Parse the HttpRule for the HttpVerb containing the custom URI. Concat the Http Verb to return - * the setting function name. - * - *

This ignores the `Custom` HttpRule. Operation proto only supports GET, POST, DELETE and - * Custom requires special logic. - * - * @param httpRule HttpRule to parse - * @return HttpRule.Builder's setter function name when setting for an HttpVerb - */ - private String getHttpVerbSetterFromHttpRule(HttpRule httpRule) { - switch (httpRule.getPatternCase().getNumber()) { - case 2: - return "get"; - case 3: - return "put"; - case 4: - return "post"; - case 5: - return "delete"; - case 6: - return "patch"; - default: - return null; - } - } - - /** - * Parse the HttpRule for the HttpVerb containing the custom URI. - * - *

This ignores the `Custom` HttpRule. Operation proto only supports GET, POST, DELETE and - * Custom requires special logic. - * - * @param httpRule HttpRule to parse - * @return Custom HttpRule's URI value - */ - private String getURIValueFromHttpRule(HttpRule httpRule) { + // This is meant to be used for the OperationsClient Mixin + // OperationsClient's RPCs are mapped to GET/POST/DELETE and this function only expects those + // HttpVerbs to be used + private String getOperationsURIValueFromHttpRule(HttpRule httpRule) { switch (httpRule.getPatternCase().getNumber()) { case 2: return httpRule.getGet(); - case 3: - return httpRule.getPut(); case 4: return httpRule.getPost(); case 5: return httpRule.getDelete(); - case 6: - return httpRule.getPatch(); default: - return null; + throw new IllegalArgumentException( + "Operations HttpRule should only contain GET/POST/DELETE. Invalid: " + + httpRule.getSelector()); } } diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ProtoMessageRequestFormatter.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ProtoMessageRequestFormatter.java index 883b42c914..fa3480ad23 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ProtoMessageRequestFormatter.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/ProtoMessageRequestFormatter.java @@ -141,12 +141,6 @@ public Builder setPath( return this; } - @BetaApi - public Builder setAdditionalPaths(List rawAdditionalPaths) { - this.rawAdditionalPaths = rawAdditionalPaths; - return this; - } - @BetaApi public Builder setAdditionalPaths(String... rawAdditionalPaths) { this.rawAdditionalPaths = Arrays.asList(rawAdditionalPaths); diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index f3b0a7bb84..835aa9fcd6 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -46,7 +46,6 @@ import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.LongRunningClient; import com.google.api.gax.rpc.UnaryCallable; -import com.google.common.collect.ImmutableList; import com.google.longrunning.CancelOperationRequest; import com.google.longrunning.DeleteOperationRequest; import com.google.longrunning.GetOperationRequest; @@ -61,7 +60,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; // AUTO-GENERATED DOCUMENTATION AND CLASS. /** @@ -205,13 +203,12 @@ public class HttpJsonOperationsStub extends OperationsStub { public static final HttpJsonOperationsStub create(OperationsStubSettings settings) throws IOException { - return new HttpJsonOperationsStub(settings, ClientContext.create(settings), new HashMap<>()); + return new HttpJsonOperationsStub(settings, ClientContext.create(settings)); } public static final HttpJsonOperationsStub create(ClientContext clientContext) throws IOException { - return new HttpJsonOperationsStub( - OperationsStubSettings.newBuilder().build(), clientContext, new HashMap<>()); + return new HttpJsonOperationsStub(OperationsStubSettings.newBuilder().build(), clientContext); } public static final HttpJsonOperationsStub create( @@ -220,8 +217,7 @@ public static final HttpJsonOperationsStub create( OperationsStubSettings.newBuilder().build(), clientContext, callableFactory, - TypeRegistry.getEmptyTypeRegistry(), - new HashMap<>()); + TypeRegistry.getEmptyTypeRegistry()); } public static final HttpJsonOperationsStub create( @@ -230,11 +226,7 @@ public static final HttpJsonOperationsStub create( TypeRegistry typeRegistry) throws IOException { return new HttpJsonOperationsStub( - OperationsStubSettings.newBuilder().build(), - clientContext, - callableFactory, - typeRegistry, - new HashMap<>()); + OperationsStubSettings.newBuilder().build(), clientContext, callableFactory, typeRegistry); } // We choose to only override these two constructors @@ -271,6 +263,16 @@ public static final HttpJsonOperationsStub create( * so that it is easy to make a subclass, but otherwise, the static factory methods should be * preferred. */ + protected HttpJsonOperationsStub(OperationsStubSettings settings, ClientContext clientContext) + throws IOException { + this( + settings, + clientContext, + new HttpJsonOperationsCallableFactory(), + TypeRegistry.getEmptyTypeRegistry(), + new HashMap<>()); + } + protected HttpJsonOperationsStub( OperationsStubSettings settings, ClientContext clientContext, @@ -289,6 +291,15 @@ protected HttpJsonOperationsStub( * so that it is easy to make a subclass, but otherwise, the static factory methods should be * preferred. */ + protected HttpJsonOperationsStub( + OperationsStubSettings settings, + ClientContext clientContext, + HttpJsonStubCallableFactory callableFactory, + TypeRegistry typeRegistry) + throws IOException { + this(settings, clientContext, callableFactory, typeRegistry, new HashMap<>()); + } + protected HttpJsonOperationsStub( OperationsStubSettings settings, ClientContext clientContext, @@ -345,39 +356,26 @@ protected HttpJsonOperationsStub( backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources()); } - /** - * Parse the HttpRule for the HttpVerb containing the custom URI. - * - *

This ignores the `Custom` HttpRule. Operation proto only supports GET, POST, DELETE and - * Custom requires special logic. - * - * @param httpRule HttpRule to parse - * @return Custom HttpRule's URI value - */ + // OperationsClient's RPCs are mapped to GET/POST/DELETE and this function only expects those + // HttpVerbs to be used private static String getValueBasedOnPatternCase(HttpRule httpRule) { switch (httpRule.getPatternCase().getNumber()) { case 2: return httpRule.getGet(); - case 3: - return httpRule.getPut(); case 4: return httpRule.getPost(); case 5: return httpRule.getDelete(); - case 6: - return httpRule.getPatch(); default: - return null; + throw new IllegalArgumentException( + "Operations HttpRule should only contain GET/POST/DELETE. Invalid: " + + httpRule.getSelector()); } } - /** - * This is to allow libraries to customize the Operation MethodDescriptors from the service yaml - * file - * - * @param customOperationHttpBindings Mapping of Mixin RPC to the HttpRule - */ - private static void updateDefaultApiMethodDescriptors( + // This is to allow libraries to customize the Operation MethodDescriptors from the service yaml + // file + private void updateDefaultApiMethodDescriptors( Map customOperationHttpBindings) { if (customOperationHttpBindings.containsKey(LRO_LIST_OPERATIONS)) { listOperationsMethodDescriptor = @@ -392,7 +390,7 @@ private static void updateDefaultApiMethodDescriptors( customOperationHttpBindings.get(LRO_LIST_OPERATIONS) .getAdditionalBindingsList().stream() .map(HttpJsonOperationsStub::getValueBasedOnPatternCase) - .collect(Collectors.toList())) + .toArray(String[]::new)) .build()) .build(); } @@ -410,7 +408,7 @@ private static void updateDefaultApiMethodDescriptors( customOperationHttpBindings.get(LRO_GET_OPERATION) .getAdditionalBindingsList().stream() .map(HttpJsonOperationsStub::getValueBasedOnPatternCase) - .collect(Collectors.toList())) + .toArray(String[]::new)) .build()) .build(); } @@ -429,7 +427,7 @@ private static void updateDefaultApiMethodDescriptors( customOperationHttpBindings.get(LRO_DELETE_OPERATION) .getAdditionalBindingsList().stream() .map(HttpJsonOperationsStub::getValueBasedOnPatternCase) - .collect(Collectors.toList())) + .toArray(String[]::new)) .build()) .build(); } @@ -448,27 +446,12 @@ private static void updateDefaultApiMethodDescriptors( customOperationHttpBindings.get(LRO_CANCEL_OPERATION) .getAdditionalBindingsList().stream() .map(HttpJsonOperationsStub::getValueBasedOnPatternCase) - .collect(Collectors.toList())) + .toArray(String[]::new)) .build()) .build(); } } - /** - * Wrapper to get a list of the MethodDescriptors similar to `getMethodDescriptors()`. Difference - * is that this gets the modified MethodDescriptors with any customized values - * - * @return List of the custom MethodDescriptors - */ - @InternalApi - public List getAllMethodDescriptors() { - return ImmutableList.of( - listOperationsMethodDescriptor, - getOperationMethodDescriptor, - deleteOperationMethodDescriptor, - cancelOperationMethodDescriptor); - } - @InternalApi public static List getMethodDescriptors() { List methodDescriptors = new ArrayList<>(); diff --git a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java index 1240ba742b..fe72589873 100644 --- a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java +++ b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java @@ -29,22 +29,28 @@ */ package com.google.api.gax.httpjson.longrunning; +import com.google.api.HttpRule; import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.httpjson.GaxHttpJsonProperties; import com.google.api.gax.httpjson.longrunning.OperationsClient.ListOperationsPagedResponse; +import com.google.api.gax.httpjson.longrunning.stub.HttpJsonOperationsCallableFactory; import com.google.api.gax.httpjson.longrunning.stub.HttpJsonOperationsStub; 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.ClientContext; import com.google.api.gax.rpc.InvalidArgumentException; import com.google.api.gax.rpc.StatusCode; +import com.google.api.gax.rpc.testing.FakeCallContext; import com.google.api.gax.rpc.testing.FakeStatusCode; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.longrunning.ListOperationsResponse; import com.google.longrunning.Operation; import com.google.protobuf.Any; import com.google.protobuf.Empty; +import com.google.protobuf.TypeRegistry; import java.io.IOException; import java.util.Arrays; import java.util.List; @@ -60,6 +66,22 @@ public class OperationsClientTest { @BeforeClass public static void startStaticServer() throws IOException { + HttpJsonOperationsStub.create( + ClientContext.newBuilder() + .setCredentials(NoCredentialsProvider.create().getCredentials()) + .setDefaultCallContext(FakeCallContext.createDefault()) + .build(), + new HttpJsonOperationsCallableFactory(), + TypeRegistry.newBuilder().build(), + ImmutableMap.of( + "google.longrunning.Operations.ListOperations", + HttpRule.newBuilder().setGet("/v1/{name=**}/operations").build(), + "google.longrunning.Operations.GetOperation", + HttpRule.newBuilder().setGet("/v1/{name=**/operations/*}").build(), + "google.longrunning.Operations.DeleteOperation", + HttpRule.newBuilder().setDelete("/v1/{name=**/operations/*}").build(), + "google.longrunning.Operations.CancelOperation", + HttpRule.newBuilder().setPost("/v1/{name=**/operations/*}:cancel").build())); mockService = new MockHttpService( HttpJsonOperationsStub.getMethodDescriptors(), OperationsSettings.getDefaultEndpoint()); diff --git a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java index 81f0b9e5fe..dd46248b77 100644 --- a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java +++ b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java @@ -49,45 +49,42 @@ public class HttpJsonOperationsStubTest { - private static HttpJsonOperationsStub httpJsonOperationsStub; - @BeforeClass public static void setUp() throws Exception { - httpJsonOperationsStub = - HttpJsonOperationsStub.create( - ClientContext.newBuilder() - .setCredentials(NoCredentialsProvider.create().getCredentials()) - .setDefaultCallContext(FakeCallContext.createDefault()) + HttpJsonOperationsStub.create( + ClientContext.newBuilder() + .setCredentials(NoCredentialsProvider.create().getCredentials()) + .setDefaultCallContext(FakeCallContext.createDefault()) + .build(), + new HttpJsonOperationsCallableFactory(), + TypeRegistry.newBuilder().build(), + ImmutableMap.of( + "google.longrunning.Operations.ListOperations", + HttpRule.newBuilder() + .setGet("testList") + .addAdditionalBindings(HttpRule.newBuilder().setGet("testList2")) + .build(), + "google.longrunning.Operations.GetOperation", + HttpRule.newBuilder() + .setGet("testGet") + .addAdditionalBindings(HttpRule.newBuilder().setGet("testGet2")) + .build(), + "google.longrunning.Operations.DeleteOperation", + HttpRule.newBuilder() + .setDelete("testDelete") + .addAdditionalBindings(HttpRule.newBuilder().setDelete("testDelete2")) .build(), - new HttpJsonOperationsCallableFactory(), - TypeRegistry.newBuilder().build(), - ImmutableMap.of( - "google.longrunning.Operations.ListOperations", - HttpRule.newBuilder() - .setGet("testList") - .addAdditionalBindings(HttpRule.newBuilder().setGet("testList2")) - .build(), - "google.longrunning.Operations.GetOperation", - HttpRule.newBuilder() - .setGet("testGet") - .addAdditionalBindings(HttpRule.newBuilder().setGet("testGet2")) - .build(), - "google.longrunning.Operations.DeleteOperation", - HttpRule.newBuilder() - .setDelete("testDelete") - .addAdditionalBindings(HttpRule.newBuilder().setDelete("testDelete2")) - .build(), - "google.longrunning.Operations.CancelOperation", - HttpRule.newBuilder() - .setPost("testCancel") - .addAdditionalBindings(HttpRule.newBuilder().setPost("testCancel2")) - .build())); + "google.longrunning.Operations.CancelOperation", + HttpRule.newBuilder() + .setPost("testCancel") + .addAdditionalBindings(HttpRule.newBuilder().setPost("testCancel2")) + .build())); } @Test public void testMethodDescriptorsURI() { List apiMethodDescriptorList = - httpJsonOperationsStub.getAllMethodDescriptors(); + HttpJsonOperationsStub.getMethodDescriptors(); assertThat(apiMethodDescriptorList.get(0).getRequestFormatter().getPathTemplate().toRawString()) .isEqualTo("testList"); assertThat(apiMethodDescriptorList.get(1).getRequestFormatter().getPathTemplate().toRawString()) @@ -103,7 +100,7 @@ public void testMethodDescriptorsAdditionalBindings() { // getAllMethodDescriptors() returns the MethodDescriptors in specific order // The order is: List, Get, Delete, Cancel List apiMethodDescriptorList = - httpJsonOperationsStub.getAllMethodDescriptors(); + HttpJsonOperationsStub.getMethodDescriptors(); ProtoMessageRequestFormatter listOperationsRequestProtoMessageRequestFormatter = (ProtoMessageRequestFormatter) From da232d2a2f04820dcfea45747d8adcfc299310ef Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 28 Feb 2023 14:26:54 -0500 Subject: [PATCH 72/82] chore: Update comments --- .../rest/HttpJsonServiceStubClassComposer.java | 12 ++++-------- .../longrunning/stub/HttpJsonOperationsStub.java | 9 +++------ .../httpjson/longrunning/OperationsClientTest.java | 2 ++ 3 files changed, 9 insertions(+), 14 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 d5a5afd27e..7bd7bf85ad 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 @@ -1150,9 +1150,7 @@ protected List createOperationsStubInitExpr( .build()); } - // Build an Expr that creates an HttpRule. Creates a builder and adds the http verb, custom path, - // and any additional bindings. - // `additional_bindings` can only be nested one layer deep, so we only check once + /* Build an Expr that creates an HttpRule. Creates a builder and adds the http verb, custom path, and any additional bindings. `additional_bindings` can only be nested one layer deep, so we only check once */ private Expr createHttpRuleExpr(HttpRule httpRule, boolean checkAdditionalBindings) { Expr httpRuleBuilderExpr = MethodInvocationExpr.builder() @@ -1163,6 +1161,7 @@ private Expr createHttpRuleExpr(HttpRule httpRule, boolean checkAdditionalBindin httpRuleBuilderExpr = MethodInvocationExpr.builder() .setExprReferenceExpr(httpRuleBuilderExpr) + // toLowerCase as the PatternCase result is all uppercase .setMethodName(setMethodFormat(httpRule.getPatternCase().toString().toLowerCase())) .setArguments( ValueExpr.withValue( @@ -1190,8 +1189,7 @@ private Expr createHttpRuleExpr(HttpRule httpRule, boolean checkAdditionalBindin return httpRuleBuilderExpr; } - // Parses the Service Yaml file's for custom HttpRules. Filter the HttpRules for ones that match - // Operations + /* Parses the Service Yaml file's for custom HttpRules. Filter the HttpRules for ones that match Operations */ private Map parseOperationsCustomHttpRules(GapicContext context) { Predicate predicate = x -> x.getSelector().contains(LRO_NAME_PREFIX); com.google.api.Service service = context.serviceYamlProto(); @@ -1203,9 +1201,7 @@ private Map parseOperationsCustomHttpRules(GapicContext contex .collect(Collectors.toMap(HttpRule::getSelector, x -> x)); } - // This is meant to be used for the OperationsClient Mixin - // OperationsClient's RPCs are mapped to GET/POST/DELETE and this function only expects those - // HttpVerbs to be used + /* This is meant to be used for the OperationsClient Mixin OperationsClient's RPCs are mapped to GET/POST/DELETE and this function only expects those HttpVerbs to be used */ private String getOperationsURIValueFromHttpRule(HttpRule httpRule) { switch (httpRule.getPatternCase().getNumber()) { case 2: diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 835aa9fcd6..fff8d07929 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -229,8 +229,7 @@ public static final HttpJsonOperationsStub create( OperationsStubSettings.newBuilder().build(), clientContext, callableFactory, typeRegistry); } - // We choose to only override these two constructors - // The generator can generate these two combinations with custom HttpRules + /* We choose to only override these two create methods. The generator can generate these two combinations with custom HttpRules */ public static final HttpJsonOperationsStub create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, @@ -356,8 +355,7 @@ protected HttpJsonOperationsStub( backgroundResources = new BackgroundResourceAggregation(clientContext.getBackgroundResources()); } - // OperationsClient's RPCs are mapped to GET/POST/DELETE and this function only expects those - // HttpVerbs to be used + /* OperationsClient's RPCs are mapped to GET/POST/DELETE and this function only expects those HttpVerbs to be used */ private static String getValueBasedOnPatternCase(HttpRule httpRule) { switch (httpRule.getPatternCase().getNumber()) { case 2: @@ -373,8 +371,7 @@ private static String getValueBasedOnPatternCase(HttpRule httpRule) { } } - // This is to allow libraries to customize the Operation MethodDescriptors from the service yaml - // file + /* This is to allow libraries to customize the Operation MethodDescriptors from the service yaml file */ private void updateDefaultApiMethodDescriptors( Map customOperationHttpBindings) { if (customOperationHttpBindings.containsKey(LRO_LIST_OPERATIONS)) { diff --git a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java index fe72589873..f3bf0d1041 100644 --- a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java +++ b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java @@ -66,6 +66,8 @@ public class OperationsClientTest { @BeforeClass public static void startStaticServer() throws IOException { + // We run this to ensure that the static MethodDescriptors have the default values + // and are not modified by any other test that ran HttpJsonOperationsStub.create( ClientContext.newBuilder() .setCredentials(NoCredentialsProvider.create().getCredentials()) From 1f40c112100e73acd93a0532edd2cee748d5572d Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 28 Feb 2023 14:28:02 -0500 Subject: [PATCH 73/82] chore: Fix sonar issue --- .../gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index fff8d07929..b89103b922 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -372,7 +372,7 @@ private static String getValueBasedOnPatternCase(HttpRule httpRule) { } /* This is to allow libraries to customize the Operation MethodDescriptors from the service yaml file */ - private void updateDefaultApiMethodDescriptors( + private static void updateDefaultApiMethodDescriptors( Map customOperationHttpBindings) { if (customOperationHttpBindings.containsKey(LRO_LIST_OPERATIONS)) { listOperationsMethodDescriptor = From 8f7aed04dcbe371ee97e19788705f830dc698919 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 28 Feb 2023 16:33:55 -0500 Subject: [PATCH 74/82] chore: Fix comment --- .../gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index b89103b922..bba93ce1f3 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -229,7 +229,7 @@ public static final HttpJsonOperationsStub create( OperationsStubSettings.newBuilder().build(), clientContext, callableFactory, typeRegistry); } - /* We choose to only override these two create methods. The generator can generate these two combinations with custom HttpRules */ + /* We choose to only overload these two create methods below. The generator can generate these two combinations with custom HttpRules */ public static final HttpJsonOperationsStub create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, From 31932b1826d59c7a8451aaed94620f03b7618305 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 7 Mar 2023 16:43:54 -0500 Subject: [PATCH 75/82] chore: Update to have multiple additional_bindings --- .../rest/goldens/HttpJsonEchoStub.golden | 22 +++++++++++++++---- .../src/test/resources/showcase_v1beta1.yaml | 12 ++++++---- .../stub/HttpJsonOperationsStub.java | 5 ++--- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden index 4d328c7dca..18904bdfbe 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/HttpJsonEchoStub.golden @@ -364,7 +364,11 @@ public class HttpJsonEchoStub extends EchoStub { .setPost("/v1beta1/{name=operations/**}:cancel") .addAdditionalBindings( HttpRule.newBuilder() - .setPost("/v1/{name=operations/**}:cancel") + .setPost("/v1beta2/{name=operations/**}:cancel") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setPost("/v1beta3/{name=operations/**}:cancel") .build()) .build()) .put( @@ -372,21 +376,31 @@ public class HttpJsonEchoStub extends EchoStub { HttpRule.newBuilder() .setDelete("/v1beta1/{name=operations/**}") .addAdditionalBindings( - HttpRule.newBuilder().setDelete("/v1/{name=operations/**}").build()) + HttpRule.newBuilder() + .setDelete("/v1beta2/{name=operations/**}") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setDelete("/v1beta3/{name=operations/**}") + .build()) .build()) .put( "google.longrunning.Operations.GetOperation", HttpRule.newBuilder() .setGet("/v1beta1/{name=operations/**}") .addAdditionalBindings( - HttpRule.newBuilder().setGet("/v1/{name=operations/**}").build()) + HttpRule.newBuilder().setGet("/v1beta2/{name=operations/**}").build()) + .addAdditionalBindings( + HttpRule.newBuilder().setGet("/v1beta3/{name=operations/**}").build()) .build()) .put( "google.longrunning.Operations.ListOperations", HttpRule.newBuilder() .setGet("/v1beta1/operations") .addAdditionalBindings( - HttpRule.newBuilder().setGet("/v1/operations").build()) + HttpRule.newBuilder().setGet("/v1beta2/operations").build()) + .addAdditionalBindings( + HttpRule.newBuilder().setGet("/v1beta3/operations").build()) .build()) .build()); diff --git a/gapic-generator-java/src/test/resources/showcase_v1beta1.yaml b/gapic-generator-java/src/test/resources/showcase_v1beta1.yaml index a4fcf6e638..321758a4ea 100644 --- a/gapic-generator-java/src/test/resources/showcase_v1beta1.yaml +++ b/gapic-generator-java/src/test/resources/showcase_v1beta1.yaml @@ -78,16 +78,20 @@ http: - selector: google.longrunning.Operations.ListOperations get: '/v1beta1/operations' additional_bindings: - - get: '/v1/operations' + - get: '/v1beta2/operations' + - get: '/v1beta3/operations' - selector: google.longrunning.Operations.GetOperation get: '/v1beta1/{name=operations/**}' additional_bindings: - - get: '/v1/{name=operations/**}' + - get: '/v1beta2/{name=operations/**}' + - get: '/v1beta3/{name=operations/**}' - selector: google.longrunning.Operations.DeleteOperation delete: '/v1beta1/{name=operations/**}' additional_bindings: - - delete: '/v1/{name=operations/**}' + - delete: '/v1beta2/{name=operations/**}' + - delete: '/v1beta3/{name=operations/**}' - selector: google.longrunning.Operations.CancelOperation post: '/v1beta1/{name=operations/**}:cancel' additional_bindings: - - post: '/v1/{name=operations/**}:cancel' \ No newline at end of file + - post: '/v1beta2/{name=operations/**}:cancel' + - post: '/v1beta3/{name=operations/**}:cancel' \ No newline at end of file diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index bba93ce1f3..fc810a6f50 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -299,13 +299,12 @@ protected HttpJsonOperationsStub( this(settings, clientContext, callableFactory, typeRegistry, new HashMap<>()); } - protected HttpJsonOperationsStub( + private HttpJsonOperationsStub( OperationsStubSettings settings, ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, TypeRegistry typeRegistry, - Map customHttpBindings) - throws IOException { + Map customHttpBindings) { updateDefaultApiMethodDescriptors(customHttpBindings); HttpJsonCallSettings From 4f6e39c242f5f4d04241160827b222dd94a76b8b Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 8 Mar 2023 17:13:59 -0500 Subject: [PATCH 76/82] chore: Update grpcrest golden test to include httprule --- .../grpcrest/GrpcRestTestProtoLoader.java | 12 ++++- .../grpcrest/goldens/HttpJsonEchoStub.golden | 53 ++++++++++++++++++- .../stub/HttpJsonOperationsStub.java | 27 ---------- 3 files changed, 63 insertions(+), 29 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 1e3b057170..f91d3d36e8 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 @@ -14,6 +14,7 @@ package com.google.api.generator.gapic.composer.grpcrest; +import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -26,6 +27,7 @@ import com.google.api.generator.gapic.model.Transport; import com.google.api.generator.gapic.protoparser.Parser; import com.google.api.generator.gapic.protoparser.ServiceConfigParser; +import com.google.api.generator.gapic.protoparser.ServiceYamlParser; import com.google.longrunning.OperationsProto; import com.google.protobuf.Descriptors.FileDescriptor; import com.google.protobuf.Descriptors.ServiceDescriptor; @@ -58,6 +60,13 @@ public GapicContext parseShowcaseEcho() { ServiceDescriptor echoServiceDescriptor = echoFileDescriptor.getServices().get(0); assertEquals("Echo", echoServiceDescriptor.getName()); + String serviceYamlFileName = "showcase_v1beta1.yaml"; + Path serviceYamlPath = Paths.get(getTestFilesDirectory(), serviceYamlFileName); + Optional serviceYamlOpt = + ServiceYamlParser.parse(serviceYamlPath.toString()); + assertThat(serviceYamlOpt.isPresent()).isTrue(); + com.google.api.Service service = serviceYamlOpt.get(); + Map messageTypes = Parser.parseMessages(echoFileDescriptor); messageTypes.putAll(Parser.parseMessages(OperationsProto.getDescriptor())); messageTypes.putAll(Parser.parseMessages(StructProto.getDescriptor())); @@ -66,7 +75,7 @@ public GapicContext parseShowcaseEcho() { Set outputResourceNames = new HashSet<>(); List services = Parser.parseService( - echoFileDescriptor, messageTypes, resourceNames, Optional.empty(), outputResourceNames); + echoFileDescriptor, messageTypes, resourceNames, serviceYamlOpt, outputResourceNames); String jsonFilename = "showcase_grpc_service_config.json"; Path jsonPath = Paths.get(getTestFilesDirectory(), jsonFilename); @@ -79,6 +88,7 @@ public GapicContext parseShowcaseEcho() { .setResourceNames(resourceNames) .setServices(services) .setServiceConfig(config) + .setServiceYamlProto(service) .setHelperResourceNames(outputResourceNames) .setTransport(getTransport()) .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 d027d9ed10..f0323ff116 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 @@ -3,6 +3,7 @@ package com.google.showcase.grpcrest.v1beta1.stub; import static com.google.showcase.grpcrest.v1beta1.EchoClient.PagedExpandPagedResponse; import static com.google.showcase.grpcrest.v1beta1.EchoClient.SimplePagedExpandPagedResponse; +import com.google.api.HttpRule; import com.google.api.core.BetaApi; import com.google.api.core.InternalApi; import com.google.api.gax.core.BackgroundResource; @@ -21,6 +22,7 @@ import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.OperationCallable; import com.google.api.gax.rpc.ServerStreamingCallable; import com.google.api.gax.rpc.UnaryCallable; +import com.google.common.collect.ImmutableMap; import com.google.longrunning.Operation; import com.google.protobuf.TypeRegistry; import com.google.showcase.grpcrest.v1beta1.BlockRequest; @@ -382,7 +384,56 @@ public class HttpJsonEchoStub extends EchoStub { throws IOException { this.callableFactory = callableFactory; this.httpJsonOperationsStub = - HttpJsonOperationsStub.create(clientContext, callableFactory, typeRegistry); + HttpJsonOperationsStub.create( + clientContext, + callableFactory, + typeRegistry, + ImmutableMap.builder() + .put( + "google.longrunning.Operations.CancelOperation", + HttpRule.newBuilder() + .setPost("/v1beta1/{name=operations/**}:cancel") + .addAdditionalBindings( + HttpRule.newBuilder() + .setPost("/v1beta2/{name=operations/**}:cancel") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setPost("/v1beta3/{name=operations/**}:cancel") + .build()) + .build()) + .put( + "google.longrunning.Operations.DeleteOperation", + HttpRule.newBuilder() + .setDelete("/v1beta1/{name=operations/**}") + .addAdditionalBindings( + HttpRule.newBuilder() + .setDelete("/v1beta2/{name=operations/**}") + .build()) + .addAdditionalBindings( + HttpRule.newBuilder() + .setDelete("/v1beta3/{name=operations/**}") + .build()) + .build()) + .put( + "google.longrunning.Operations.GetOperation", + HttpRule.newBuilder() + .setGet("/v1beta1/{name=operations/**}") + .addAdditionalBindings( + HttpRule.newBuilder().setGet("/v1beta2/{name=operations/**}").build()) + .addAdditionalBindings( + HttpRule.newBuilder().setGet("/v1beta3/{name=operations/**}").build()) + .build()) + .put( + "google.longrunning.Operations.ListOperations", + HttpRule.newBuilder() + .setGet("/v1beta1/operations") + .addAdditionalBindings( + HttpRule.newBuilder().setGet("/v1beta2/operations").build()) + .addAdditionalBindings( + HttpRule.newBuilder().setGet("/v1beta3/operations").build()) + .build()) + .build()); HttpJsonCallSettings echoTransportSettings = HttpJsonCallSettings.newBuilder() diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index fc810a6f50..750ae7a4c3 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -229,20 +229,6 @@ public static final HttpJsonOperationsStub create( OperationsStubSettings.newBuilder().build(), clientContext, callableFactory, typeRegistry); } - /* We choose to only overload these two create methods below. The generator can generate these two combinations with custom HttpRules */ - public static final HttpJsonOperationsStub create( - ClientContext clientContext, - HttpJsonStubCallableFactory callableFactory, - Map customHttpBindings) - throws IOException { - return new HttpJsonOperationsStub( - OperationsStubSettings.newBuilder().build(), - clientContext, - callableFactory, - TypeRegistry.getEmptyTypeRegistry(), - customHttpBindings); - } - public static final HttpJsonOperationsStub create( ClientContext clientContext, HttpJsonStubCallableFactory callableFactory, @@ -272,19 +258,6 @@ protected HttpJsonOperationsStub(OperationsStubSettings settings, ClientContext new HashMap<>()); } - protected HttpJsonOperationsStub( - OperationsStubSettings settings, - ClientContext clientContext, - Map customHttpBindings) - throws IOException { - this( - settings, - clientContext, - new HttpJsonOperationsCallableFactory(), - TypeRegistry.getEmptyTypeRegistry(), - customHttpBindings); - } - /** * Constructs an instance of HttpJsonOperationsStub, using the given settings. This is protected * so that it is easy to make a subclass, but otherwise, the static factory methods should be From 9a4f43767ad2755251c47e1ad78d13372b67bfac Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 9 Mar 2023 16:16:59 -0500 Subject: [PATCH 77/82] chore: HttpJsonOperationsStub's MethodDescriptors are not static --- .../stub/HttpJsonOperationsStub.java | 119 +++++++++--------- .../longrunning/OperationsClientTest.java | 36 +++--- .../stub/HttpJsonOperationsStubTest.java | 91 ++++++++------ 3 files changed, 133 insertions(+), 113 deletions(-) diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 750ae7a4c3..321ee9141f 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -46,6 +46,7 @@ import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.LongRunningClient; import com.google.api.gax.rpc.UnaryCallable; +import com.google.common.collect.ImmutableList; import com.google.longrunning.CancelOperationRequest; import com.google.longrunning.DeleteOperationRequest; import com.google.longrunning.GetOperationRequest; @@ -55,7 +56,6 @@ import com.google.protobuf.Empty; 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; @@ -78,7 +78,7 @@ public class HttpJsonOperationsStub extends OperationsStub { private static final String LRO_CANCEL_OPERATION = "google.longrunning.Operations.CancelOperation"; - private static ApiMethodDescriptor + private ApiMethodDescriptor listOperationsMethodDescriptor = ApiMethodDescriptor.newBuilder() .setFullMethodName("google.longrunning.Operations/ListOperations") @@ -112,7 +112,7 @@ public class HttpJsonOperationsStub extends OperationsStub { .build()) .build(); - private static ApiMethodDescriptor getOperationMethodDescriptor = + private ApiMethodDescriptor getOperationMethodDescriptor = ApiMethodDescriptor.newBuilder() .setFullMethodName("google.longrunning.Operations/GetOperation") .setHttpMethod(HttpMethods.GET) @@ -141,55 +141,53 @@ public class HttpJsonOperationsStub extends OperationsStub { GetOperationRequest.newBuilder().setName(compoundOperationId).build()) .build(); - private static ApiMethodDescriptor - deleteOperationMethodDescriptor = - ApiMethodDescriptor.newBuilder() - .setFullMethodName("google.longrunning.Operations/DeleteOperation") - .setHttpMethod(HttpMethods.DELETE) - .setRequestFormatter( - ProtoMessageRequestFormatter.newBuilder() - .setPath( - "/v1/{name=**/operations/*}", - request -> { - Map fields = new HashMap<>(); - ProtoRestSerializer serializer = - ProtoRestSerializer.create(); - serializer.putPathParam(fields, "name", request.getName()); - return fields; - }) - .setQueryParamsExtractor(request -> new HashMap<>()) - .setRequestBodyExtractor(request -> null) - .build()) - .setResponseParser( - ProtoMessageResponseParser.newBuilder() - .setDefaultInstance(Empty.getDefaultInstance()) - .build()) - .build(); + private ApiMethodDescriptor deleteOperationMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.longrunning.Operations/DeleteOperation") + .setHttpMethod(HttpMethods.DELETE) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/{name=**/operations/*}", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "name", request.getName()); + return fields; + }) + .setQueryParamsExtractor(request -> new HashMap<>()) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Empty.getDefaultInstance()) + .build()) + .build(); - private static ApiMethodDescriptor - cancelOperationMethodDescriptor = - ApiMethodDescriptor.newBuilder() - .setFullMethodName("google.longrunning.Operations/CancelOperation") - .setHttpMethod(HttpMethods.POST) - .setRequestFormatter( - ProtoMessageRequestFormatter.newBuilder() - .setPath( - "/v1/{name=**/operations/*}:cancel", - request -> { - Map fields = new HashMap<>(); - ProtoRestSerializer serializer = - ProtoRestSerializer.create(); - serializer.putPathParam(fields, "name", request.getName()); - return fields; - }) - .setQueryParamsExtractor(request -> new HashMap<>()) - .setRequestBodyExtractor(request -> null) - .build()) - .setResponseParser( - ProtoMessageResponseParser.newBuilder() - .setDefaultInstance(Empty.getDefaultInstance()) - .build()) - .build(); + private ApiMethodDescriptor cancelOperationMethodDescriptor = + ApiMethodDescriptor.newBuilder() + .setFullMethodName("google.longrunning.Operations/CancelOperation") + .setHttpMethod(HttpMethods.POST) + .setRequestFormatter( + ProtoMessageRequestFormatter.newBuilder() + .setPath( + "/v1/{name=**/operations/*}:cancel", + request -> { + Map fields = new HashMap<>(); + ProtoRestSerializer serializer = + ProtoRestSerializer.create(); + serializer.putPathParam(fields, "name", request.getName()); + return fields; + }) + .setQueryParamsExtractor(request -> new HashMap<>()) + .setRequestBodyExtractor(request -> null) + .build()) + .setResponseParser( + ProtoMessageResponseParser.newBuilder() + .setDefaultInstance(Empty.getDefaultInstance()) + .build()) + .build(); private final UnaryCallable listOperationsCallable; private final UnaryCallable @@ -344,7 +342,7 @@ private static String getValueBasedOnPatternCase(HttpRule httpRule) { } /* This is to allow libraries to customize the Operation MethodDescriptors from the service yaml file */ - private static void updateDefaultApiMethodDescriptors( + private void updateDefaultApiMethodDescriptors( Map customOperationHttpBindings) { if (customOperationHttpBindings.containsKey(LRO_LIST_OPERATIONS)) { listOperationsMethodDescriptor = @@ -421,14 +419,19 @@ private static void updateDefaultApiMethodDescriptors( } } + /* This function returns the list of method descriptors (custom or default) */ + @InternalApi + public List getAllMethodDescriptors() { + return ImmutableList.of( + listOperationsMethodDescriptor, + getOperationMethodDescriptor, + deleteOperationMethodDescriptor, + cancelOperationMethodDescriptor); + } + @InternalApi public static List getMethodDescriptors() { - List methodDescriptors = new ArrayList<>(); - methodDescriptors.add(listOperationsMethodDescriptor); - methodDescriptors.add(getOperationMethodDescriptor); - methodDescriptors.add(deleteOperationMethodDescriptor); - methodDescriptors.add(cancelOperationMethodDescriptor); - return methodDescriptors; + return ImmutableList.of(); } @Override diff --git a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java index f3bf0d1041..f902387685 100644 --- a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java +++ b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java @@ -68,25 +68,27 @@ public class OperationsClientTest { public static void startStaticServer() throws IOException { // We run this to ensure that the static MethodDescriptors have the default values // and are not modified by any other test that ran - HttpJsonOperationsStub.create( - ClientContext.newBuilder() - .setCredentials(NoCredentialsProvider.create().getCredentials()) - .setDefaultCallContext(FakeCallContext.createDefault()) - .build(), - new HttpJsonOperationsCallableFactory(), - TypeRegistry.newBuilder().build(), - ImmutableMap.of( - "google.longrunning.Operations.ListOperations", - HttpRule.newBuilder().setGet("/v1/{name=**}/operations").build(), - "google.longrunning.Operations.GetOperation", - HttpRule.newBuilder().setGet("/v1/{name=**/operations/*}").build(), - "google.longrunning.Operations.DeleteOperation", - HttpRule.newBuilder().setDelete("/v1/{name=**/operations/*}").build(), - "google.longrunning.Operations.CancelOperation", - HttpRule.newBuilder().setPost("/v1/{name=**/operations/*}:cancel").build())); + HttpJsonOperationsStub httpJsonOperationsStub = + HttpJsonOperationsStub.create( + ClientContext.newBuilder() + .setCredentials(NoCredentialsProvider.create().getCredentials()) + .setDefaultCallContext(FakeCallContext.createDefault()) + .build(), + new HttpJsonOperationsCallableFactory(), + TypeRegistry.newBuilder().build(), + ImmutableMap.of( + "google.longrunning.Operations.ListOperations", + HttpRule.newBuilder().setGet("/v1/{name=**}/operations").build(), + "google.longrunning.Operations.GetOperation", + HttpRule.newBuilder().setGet("/v1/{name=**/operations/*}").build(), + "google.longrunning.Operations.DeleteOperation", + HttpRule.newBuilder().setDelete("/v1/{name=**/operations/*}").build(), + "google.longrunning.Operations.CancelOperation", + HttpRule.newBuilder().setPost("/v1/{name=**/operations/*}:cancel").build())); mockService = new MockHttpService( - HttpJsonOperationsStub.getMethodDescriptors(), OperationsSettings.getDefaultEndpoint()); + httpJsonOperationsStub.getAllMethodDescriptors(), + OperationsSettings.getDefaultEndpoint()); OperationsSettings settings = OperationsSettings.newBuilder() .setTransportChannelProvider( diff --git a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java index dd46248b77..a7bf1d0f17 100644 --- a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java +++ b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java @@ -43,48 +43,34 @@ import com.google.longrunning.GetOperationRequest; import com.google.longrunning.ListOperationsRequest; import com.google.protobuf.TypeRegistry; +import java.io.IOException; import java.util.List; -import org.junit.BeforeClass; import org.junit.Test; public class HttpJsonOperationsStubTest { - @BeforeClass - public static void setUp() throws Exception { - HttpJsonOperationsStub.create( - ClientContext.newBuilder() - .setCredentials(NoCredentialsProvider.create().getCredentials()) - .setDefaultCallContext(FakeCallContext.createDefault()) - .build(), - new HttpJsonOperationsCallableFactory(), - TypeRegistry.newBuilder().build(), - ImmutableMap.of( - "google.longrunning.Operations.ListOperations", - HttpRule.newBuilder() - .setGet("testList") - .addAdditionalBindings(HttpRule.newBuilder().setGet("testList2")) - .build(), - "google.longrunning.Operations.GetOperation", - HttpRule.newBuilder() - .setGet("testGet") - .addAdditionalBindings(HttpRule.newBuilder().setGet("testGet2")) - .build(), - "google.longrunning.Operations.DeleteOperation", - HttpRule.newBuilder() - .setDelete("testDelete") - .addAdditionalBindings(HttpRule.newBuilder().setDelete("testDelete2")) - .build(), - "google.longrunning.Operations.CancelOperation", - HttpRule.newBuilder() - .setPost("testCancel") - .addAdditionalBindings(HttpRule.newBuilder().setPost("testCancel2")) - .build())); - } - @Test - public void testMethodDescriptorsURI() { + public void testMethodDescriptorsURI() throws IOException { + HttpJsonOperationsStub httpJsonOperationsStub = + HttpJsonOperationsStub.create( + ClientContext.newBuilder() + .setCredentials(NoCredentialsProvider.create().getCredentials()) + .setDefaultCallContext(FakeCallContext.createDefault()) + .build(), + new HttpJsonOperationsCallableFactory(), + TypeRegistry.newBuilder().build(), + ImmutableMap.of( + "google.longrunning.Operations.ListOperations", + HttpRule.newBuilder().setGet("testList").build(), + "google.longrunning.Operations.GetOperation", + HttpRule.newBuilder().setGet("testGet").build(), + "google.longrunning.Operations.DeleteOperation", + HttpRule.newBuilder().setDelete("testDelete").build(), + "google.longrunning.Operations.CancelOperation", + HttpRule.newBuilder().setPost("testCancel").build())); + // The order is: List, Get, Delete, Cancel List apiMethodDescriptorList = - HttpJsonOperationsStub.getMethodDescriptors(); + httpJsonOperationsStub.getAllMethodDescriptors(); assertThat(apiMethodDescriptorList.get(0).getRequestFormatter().getPathTemplate().toRawString()) .isEqualTo("testList"); assertThat(apiMethodDescriptorList.get(1).getRequestFormatter().getPathTemplate().toRawString()) @@ -96,11 +82,40 @@ public void testMethodDescriptorsURI() { } @Test - public void testMethodDescriptorsAdditionalBindings() { - // getAllMethodDescriptors() returns the MethodDescriptors in specific order + public void testMethodDescriptorsAdditionalBindings() throws IOException { + // We set a random URI in this OperationsStub, otherwise PathTemplate won't compile + HttpJsonOperationsStub httpJsonOperationsStub = + HttpJsonOperationsStub.create( + ClientContext.newBuilder() + .setCredentials(NoCredentialsProvider.create().getCredentials()) + .setDefaultCallContext(FakeCallContext.createDefault()) + .build(), + new HttpJsonOperationsCallableFactory(), + TypeRegistry.newBuilder().build(), + ImmutableMap.of( + "google.longrunning.Operations.ListOperations", + HttpRule.newBuilder() + .setGet("test") + .addAdditionalBindings(HttpRule.newBuilder().setGet("testList2")) + .build(), + "google.longrunning.Operations.GetOperation", + HttpRule.newBuilder() + .setGet("test") + .addAdditionalBindings(HttpRule.newBuilder().setGet("testGet2")) + .build(), + "google.longrunning.Operations.DeleteOperation", + HttpRule.newBuilder() + .setDelete("test") + .addAdditionalBindings(HttpRule.newBuilder().setDelete("testDelete2")) + .build(), + "google.longrunning.Operations.CancelOperation", + HttpRule.newBuilder() + .setPost("test") + .addAdditionalBindings(HttpRule.newBuilder().setPost("testCancel2")) + .build())); // The order is: List, Get, Delete, Cancel List apiMethodDescriptorList = - HttpJsonOperationsStub.getMethodDescriptors(); + httpJsonOperationsStub.getAllMethodDescriptors(); ProtoMessageRequestFormatter listOperationsRequestProtoMessageRequestFormatter = (ProtoMessageRequestFormatter) From 350b811a2c68c8b146acd57310cb84cde18cbcab Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 9 Mar 2023 16:42:10 -0500 Subject: [PATCH 78/82] chore: Add unit tests for HttpJson Operations logic --- .../HttpJsonServiceStubClassComposer.java | 4 +- .../HttpJsonServiceStubClassComposerTest.java | 75 +++++++++++++++++++ 2 files changed, 77 insertions(+), 2 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 7bd7bf85ad..c1be8dc67b 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 @@ -1190,7 +1190,7 @@ private Expr createHttpRuleExpr(HttpRule httpRule, boolean checkAdditionalBindin } /* Parses the Service Yaml file's for custom HttpRules. Filter the HttpRules for ones that match Operations */ - private Map parseOperationsCustomHttpRules(GapicContext context) { + Map parseOperationsCustomHttpRules(GapicContext context) { Predicate predicate = x -> x.getSelector().contains(LRO_NAME_PREFIX); com.google.api.Service service = context.serviceYamlProto(); if (service == null || service.getHttp() == null) { @@ -1202,7 +1202,7 @@ private Map parseOperationsCustomHttpRules(GapicContext contex } /* This is meant to be used for the OperationsClient Mixin OperationsClient's RPCs are mapped to GET/POST/DELETE and this function only expects those HttpVerbs to be used */ - private String getOperationsURIValueFromHttpRule(HttpRule httpRule) { + String getOperationsURIValueFromHttpRule(HttpRule httpRule) { switch (httpRule.getPatternCase().getNumber()) { case 2: return httpRule.getGet(); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java index a9b86203f6..cccdd49faf 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java @@ -14,6 +14,11 @@ package com.google.api.generator.gapic.composer.rest; +import static org.junit.Assert.assertThrows; + +import com.google.api.CustomHttpPattern; +import com.google.api.Http; +import com.google.api.HttpRule; import com.google.api.generator.engine.ast.TypeNode; import com.google.api.generator.engine.writer.JavaWriterVisitor; import com.google.api.generator.gapic.model.Field; @@ -23,9 +28,12 @@ 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 com.google.common.collect.ImmutableList; import com.google.common.truth.Truth; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.List; +import java.util.Map; import org.junit.Before; import org.junit.Test; @@ -109,4 +117,71 @@ public void getBindingFieldMethodName_shouldReturnGetFieldIfTheFieldIsNotInLastP String actual = composer.getBindingFieldMethodName(httpBinding, 4, 1, "Value"); Truth.assertThat(actual).isEqualTo("getValue"); } + + @Test + public void parseOperationsCustomHttpRules_shouldReturnMapIfContextContainsValidServiceYaml() { + List httpRuleList = + ImmutableList.of( + HttpRule.newBuilder().setSelector("google.longrunning.Operations.Get").setGet("testGet").build(), + HttpRule.newBuilder().setSelector("google.longrunning.Operations.Post").setPost("testPost").build(), + HttpRule.newBuilder().setSelector("google.longrunning.Operations.Delete").setDelete("testDelete").build()); + GapicContext contextServiceYaml = RestTestProtoLoader.instance().parseCompliance(); + contextServiceYaml = + contextServiceYaml + .toBuilder() + .setServiceYamlProto( + com.google.api.Service.newBuilder() + .setHttp(Http.newBuilder().addAllRules(httpRuleList)) + .build()) + .build(); + Map httpRuleMap = composer.parseOperationsCustomHttpRules(contextServiceYaml); + Truth.assertThat(httpRuleMap.isEmpty()).isFalse(); + Truth.assertThat(httpRuleMap.size()).isEqualTo(httpRuleList.size()); + } + + @Test + public void parseOperationsCustomHttpRules_shouldReturnEmptyMapIfContextHasInvalidServiceYaml() { + GapicContext contextNullServiceYaml = RestTestProtoLoader.instance().parseCompliance(); + contextNullServiceYaml = contextNullServiceYaml.toBuilder().setServiceYamlProto(null).build(); + Map httpRuleMapNull = + composer.parseOperationsCustomHttpRules(contextNullServiceYaml); + Truth.assertThat(httpRuleMapNull.isEmpty()).isTrue(); + + GapicContext contextEmptyServiceYaml = RestTestProtoLoader.instance().parseCompliance(); + contextNullServiceYaml = + contextEmptyServiceYaml + .toBuilder() + .setServiceYamlProto(com.google.api.Service.newBuilder().build()) + .build(); + Map httpRuleMapEmpty = + composer.parseOperationsCustomHttpRules(contextNullServiceYaml); + Truth.assertThat(httpRuleMapEmpty.isEmpty()).isTrue(); + } + + @Test + public void testGetOperationsURIValueFromHttpRule() { + HttpRule getHttpRule = HttpRule.newBuilder().setGet("Get").build(); + Truth.assertThat(composer.getOperationsURIValueFromHttpRule(getHttpRule)).isEqualTo("Get"); + HttpRule postHttpRule = HttpRule.newBuilder().setPost("Post").build(); + Truth.assertThat(composer.getOperationsURIValueFromHttpRule(postHttpRule)).isEqualTo("Post"); + HttpRule deleteHttpRule = HttpRule.newBuilder().setDelete("Delete").build(); + Truth.assertThat(composer.getOperationsURIValueFromHttpRule(deleteHttpRule)) + .isEqualTo("Delete"); + + HttpRule patchHttpRule = HttpRule.newBuilder().setPatch("Patch").build(); + assertThrows( + IllegalArgumentException.class, + () -> composer.getOperationsURIValueFromHttpRule(patchHttpRule)); + HttpRule putHttpRule = HttpRule.newBuilder().setPut("Put").build(); + assertThrows( + IllegalArgumentException.class, + () -> composer.getOperationsURIValueFromHttpRule(putHttpRule)); + HttpRule customHttpRule = + HttpRule.newBuilder() + .setCustom(CustomHttpPattern.newBuilder().setPath("Custom").build()) + .build(); + assertThrows( + IllegalArgumentException.class, + () -> composer.getOperationsURIValueFromHttpRule(customHttpRule)); + } } From 1d5d9673677e503936aa9df0338595a59348ab47 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 9 Mar 2023 17:30:55 -0500 Subject: [PATCH 79/82] chore: Resolve lint issues --- .../HttpJsonServiceStubClassComposerTest.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java index cccdd49faf..9892b251f7 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/HttpJsonServiceStubClassComposerTest.java @@ -122,9 +122,18 @@ public void getBindingFieldMethodName_shouldReturnGetFieldIfTheFieldIsNotInLastP public void parseOperationsCustomHttpRules_shouldReturnMapIfContextContainsValidServiceYaml() { List httpRuleList = ImmutableList.of( - HttpRule.newBuilder().setSelector("google.longrunning.Operations.Get").setGet("testGet").build(), - HttpRule.newBuilder().setSelector("google.longrunning.Operations.Post").setPost("testPost").build(), - HttpRule.newBuilder().setSelector("google.longrunning.Operations.Delete").setDelete("testDelete").build()); + HttpRule.newBuilder() + .setSelector("google.longrunning.Operations.Get") + .setGet("testGet") + .build(), + HttpRule.newBuilder() + .setSelector("google.longrunning.Operations.Post") + .setPost("testPost") + .build(), + HttpRule.newBuilder() + .setSelector("google.longrunning.Operations.Delete") + .setDelete("testDelete") + .build()); GapicContext contextServiceYaml = RestTestProtoLoader.instance().parseCompliance(); contextServiceYaml = contextServiceYaml From c15e2b5e5ef89d58aa2324bed204615c988c238b Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 9 Mar 2023 17:53:36 -0500 Subject: [PATCH 80/82] chore: Clean up test code --- .../longrunning/OperationsClientTest.java | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java index f902387685..c0a3696675 100644 --- a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java +++ b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/OperationsClientTest.java @@ -29,7 +29,6 @@ */ package com.google.api.gax.httpjson.longrunning; -import com.google.api.HttpRule; import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.httpjson.GaxHttpJsonProperties; import com.google.api.gax.httpjson.longrunning.OperationsClient.ListOperationsPagedResponse; @@ -44,7 +43,6 @@ import com.google.api.gax.rpc.StatusCode; import com.google.api.gax.rpc.testing.FakeCallContext; import com.google.api.gax.rpc.testing.FakeStatusCode; -import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.longrunning.ListOperationsResponse; import com.google.longrunning.Operation; @@ -66,8 +64,6 @@ public class OperationsClientTest { @BeforeClass public static void startStaticServer() throws IOException { - // We run this to ensure that the static MethodDescriptors have the default values - // and are not modified by any other test that ran HttpJsonOperationsStub httpJsonOperationsStub = HttpJsonOperationsStub.create( ClientContext.newBuilder() @@ -75,16 +71,7 @@ public static void startStaticServer() throws IOException { .setDefaultCallContext(FakeCallContext.createDefault()) .build(), new HttpJsonOperationsCallableFactory(), - TypeRegistry.newBuilder().build(), - ImmutableMap.of( - "google.longrunning.Operations.ListOperations", - HttpRule.newBuilder().setGet("/v1/{name=**}/operations").build(), - "google.longrunning.Operations.GetOperation", - HttpRule.newBuilder().setGet("/v1/{name=**/operations/*}").build(), - "google.longrunning.Operations.DeleteOperation", - HttpRule.newBuilder().setDelete("/v1/{name=**/operations/*}").build(), - "google.longrunning.Operations.CancelOperation", - HttpRule.newBuilder().setPost("/v1/{name=**/operations/*}:cancel").build())); + TypeRegistry.newBuilder().build()); mockService = new MockHttpService( httpJsonOperationsStub.getAllMethodDescriptors(), From 2c489ff3b40d7fc82aaa99abd9453238210683d1 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Fri, 10 Mar 2023 15:19:51 -0500 Subject: [PATCH 81/82] chore: Resolve pr comments --- .../grpcrest/GrpcRestTestProtoLoader.java | 2 +- .../composer/rest/RestTestProtoLoader.java | 2 +- ...howcase_v1beta1.yaml => echo_v1beta1.yaml} | 0 .../stub/HttpJsonOperationsStub.java | 15 ++++--- .../stub/HttpJsonOperationsStubTest.java | 44 ++++++++++++------- 5 files changed, 39 insertions(+), 24 deletions(-) rename gapic-generator-java/src/test/resources/{showcase_v1beta1.yaml => echo_v1beta1.yaml} (100%) 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 f91d3d36e8..c94dfa3d9b 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 @@ -60,7 +60,7 @@ public GapicContext parseShowcaseEcho() { ServiceDescriptor echoServiceDescriptor = echoFileDescriptor.getServices().get(0); assertEquals("Echo", echoServiceDescriptor.getName()); - String serviceYamlFileName = "showcase_v1beta1.yaml"; + String serviceYamlFileName = "echo_v1beta1.yaml"; Path serviceYamlPath = Paths.get(getTestFilesDirectory(), serviceYamlFileName); Optional serviceYamlOpt = ServiceYamlParser.parse(serviceYamlPath.toString()); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java index 572a018a97..fe76bb2b16 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/RestTestProtoLoader.java @@ -89,7 +89,7 @@ public GapicContext parseEcho() { ServiceDescriptor echoServiceDescriptor = echoFileDescriptor.getServices().get(0); assertThat(echoServiceDescriptor.getName()).isEqualTo("Echo"); - String serviceYamlFileName = "showcase_v1beta1.yaml"; + String serviceYamlFileName = "echo_v1beta1.yaml"; Path serviceYamlPath = Paths.get(getTestFilesDirectory(), serviceYamlFileName); Optional serviceYamlOpt = ServiceYamlParser.parse(serviceYamlPath.toString()); diff --git a/gapic-generator-java/src/test/resources/showcase_v1beta1.yaml b/gapic-generator-java/src/test/resources/echo_v1beta1.yaml similarity index 100% rename from gapic-generator-java/src/test/resources/showcase_v1beta1.yaml rename to gapic-generator-java/src/test/resources/echo_v1beta1.yaml diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 321ee9141f..8cee790871 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -326,7 +326,7 @@ private HttpJsonOperationsStub( } /* OperationsClient's RPCs are mapped to GET/POST/DELETE and this function only expects those HttpVerbs to be used */ - private static String getValueBasedOnPatternCase(HttpRule httpRule) { + private String getValueBasedOnPatternCase(HttpRule httpRule) { switch (httpRule.getPatternCase().getNumber()) { case 2: return httpRule.getGet(); @@ -356,7 +356,7 @@ private void updateDefaultApiMethodDescriptors( .setAdditionalPaths( customOperationHttpBindings.get(LRO_LIST_OPERATIONS) .getAdditionalBindingsList().stream() - .map(HttpJsonOperationsStub::getValueBasedOnPatternCase) + .map(this::getValueBasedOnPatternCase) .toArray(String[]::new)) .build()) .build(); @@ -374,7 +374,7 @@ private void updateDefaultApiMethodDescriptors( .setAdditionalPaths( customOperationHttpBindings.get(LRO_GET_OPERATION) .getAdditionalBindingsList().stream() - .map(HttpJsonOperationsStub::getValueBasedOnPatternCase) + .map(this::getValueBasedOnPatternCase) .toArray(String[]::new)) .build()) .build(); @@ -393,7 +393,7 @@ private void updateDefaultApiMethodDescriptors( .setAdditionalPaths( customOperationHttpBindings.get(LRO_DELETE_OPERATION) .getAdditionalBindingsList().stream() - .map(HttpJsonOperationsStub::getValueBasedOnPatternCase) + .map(this::getValueBasedOnPatternCase) .toArray(String[]::new)) .build()) .build(); @@ -412,14 +412,17 @@ private void updateDefaultApiMethodDescriptors( .setAdditionalPaths( customOperationHttpBindings.get(LRO_CANCEL_OPERATION) .getAdditionalBindingsList().stream() - .map(HttpJsonOperationsStub::getValueBasedOnPatternCase) + .map(this::getValueBasedOnPatternCase) .toArray(String[]::new)) .build()) .build(); } } - /* This function returns the list of method descriptors (custom or default) */ + /* + This function returns the list of method descriptors (custom or default). + This is meant to be called only for tests. + */ @InternalApi public List getAllMethodDescriptors() { return ImmutableList.of( diff --git a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java index a7bf1d0f17..b695188c04 100644 --- a/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java +++ b/gax-java/gax-httpjson/src/test/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStubTest.java @@ -51,6 +51,10 @@ public class HttpJsonOperationsStubTest { @Test public void testMethodDescriptorsURI() throws IOException { + String operationListURI = "testList"; + String operationGetURI = "testGet"; + String operationDeleteURI = "testDelete"; + String operationCancelURI = "testCancel"; HttpJsonOperationsStub httpJsonOperationsStub = HttpJsonOperationsStub.create( ClientContext.newBuilder() @@ -61,29 +65,33 @@ public void testMethodDescriptorsURI() throws IOException { TypeRegistry.newBuilder().build(), ImmutableMap.of( "google.longrunning.Operations.ListOperations", - HttpRule.newBuilder().setGet("testList").build(), + HttpRule.newBuilder().setGet(operationListURI).build(), "google.longrunning.Operations.GetOperation", - HttpRule.newBuilder().setGet("testGet").build(), + HttpRule.newBuilder().setGet(operationGetURI).build(), "google.longrunning.Operations.DeleteOperation", - HttpRule.newBuilder().setDelete("testDelete").build(), + HttpRule.newBuilder().setDelete(operationDeleteURI).build(), "google.longrunning.Operations.CancelOperation", - HttpRule.newBuilder().setPost("testCancel").build())); + HttpRule.newBuilder().setPost(operationCancelURI).build())); // The order is: List, Get, Delete, Cancel List apiMethodDescriptorList = httpJsonOperationsStub.getAllMethodDescriptors(); assertThat(apiMethodDescriptorList.get(0).getRequestFormatter().getPathTemplate().toRawString()) - .isEqualTo("testList"); + .isEqualTo(operationListURI); assertThat(apiMethodDescriptorList.get(1).getRequestFormatter().getPathTemplate().toRawString()) - .isEqualTo("testGet"); + .isEqualTo(operationGetURI); assertThat(apiMethodDescriptorList.get(2).getRequestFormatter().getPathTemplate().toRawString()) - .isEqualTo("testDelete"); + .isEqualTo(operationDeleteURI); assertThat(apiMethodDescriptorList.get(3).getRequestFormatter().getPathTemplate().toRawString()) - .isEqualTo("testCancel"); + .isEqualTo(operationCancelURI); } @Test public void testMethodDescriptorsAdditionalBindings() throws IOException { // We set a random URI in this OperationsStub, otherwise PathTemplate won't compile + String operationListAdditionalBindingURI = "testList2"; + String operationGetAdditionalBindingURI = "testGet2"; + String operationDeleteAdditionalBindingURI = "testDelete2"; + String operationCancelAdditionalBindingURI = "testCancel2"; HttpJsonOperationsStub httpJsonOperationsStub = HttpJsonOperationsStub.create( ClientContext.newBuilder() @@ -96,22 +104,26 @@ public void testMethodDescriptorsAdditionalBindings() throws IOException { "google.longrunning.Operations.ListOperations", HttpRule.newBuilder() .setGet("test") - .addAdditionalBindings(HttpRule.newBuilder().setGet("testList2")) + .addAdditionalBindings( + HttpRule.newBuilder().setGet(operationListAdditionalBindingURI)) .build(), "google.longrunning.Operations.GetOperation", HttpRule.newBuilder() .setGet("test") - .addAdditionalBindings(HttpRule.newBuilder().setGet("testGet2")) + .addAdditionalBindings( + HttpRule.newBuilder().setGet(operationGetAdditionalBindingURI)) .build(), "google.longrunning.Operations.DeleteOperation", HttpRule.newBuilder() .setDelete("test") - .addAdditionalBindings(HttpRule.newBuilder().setDelete("testDelete2")) + .addAdditionalBindings( + HttpRule.newBuilder().setDelete(operationDeleteAdditionalBindingURI)) .build(), "google.longrunning.Operations.CancelOperation", HttpRule.newBuilder() .setPost("test") - .addAdditionalBindings(HttpRule.newBuilder().setPost("testCancel2")) + .addAdditionalBindings( + HttpRule.newBuilder().setPost(operationCancelAdditionalBindingURI)) .build())); // The order is: List, Get, Delete, Cancel List apiMethodDescriptorList = @@ -127,7 +139,7 @@ public void testMethodDescriptorsAdditionalBindings() throws IOException { .getAdditionalPathTemplates() .get(0) .toRawString()) - .isEqualTo("testList2"); + .isEqualTo(operationListAdditionalBindingURI); ProtoMessageRequestFormatter getOperationRequestProtoMessageRequestFormatter = (ProtoMessageRequestFormatter) @@ -139,7 +151,7 @@ public void testMethodDescriptorsAdditionalBindings() throws IOException { .getAdditionalPathTemplates() .get(0) .toRawString()) - .isEqualTo("testGet2"); + .isEqualTo(operationGetAdditionalBindingURI); ProtoMessageRequestFormatter deleteOperationRequestProtoMessageRequestFormatter = (ProtoMessageRequestFormatter) @@ -151,7 +163,7 @@ public void testMethodDescriptorsAdditionalBindings() throws IOException { .getAdditionalPathTemplates() .get(0) .toRawString()) - .isEqualTo("testDelete2"); + .isEqualTo(operationDeleteAdditionalBindingURI); ProtoMessageRequestFormatter cancelOperationRequestProtoMessageRequestFormatter = (ProtoMessageRequestFormatter) @@ -163,6 +175,6 @@ public void testMethodDescriptorsAdditionalBindings() throws IOException { .getAdditionalPathTemplates() .get(0) .toRawString()) - .isEqualTo("testCancel2"); + .isEqualTo(operationCancelAdditionalBindingURI); } } From 78be800e65b7b08ec5737e0fd679d25bed7c2f77 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Fri, 10 Mar 2023 15:33:16 -0500 Subject: [PATCH 82/82] chore: Add VisibleForTesting annotation --- .../gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java index 8cee790871..eb53b71ba6 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/longrunning/stub/HttpJsonOperationsStub.java @@ -46,6 +46,7 @@ import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.LongRunningClient; import com.google.api.gax.rpc.UnaryCallable; +import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; import com.google.longrunning.CancelOperationRequest; import com.google.longrunning.DeleteOperationRequest; @@ -423,6 +424,7 @@ private void updateDefaultApiMethodDescriptors( This function returns the list of method descriptors (custom or default). This is meant to be called only for tests. */ + @VisibleForTesting @InternalApi public List getAllMethodDescriptors() { return ImmutableList.of(