From ab57eb4b8a0480f9cb71b422856d49dd0d89b0ae Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Mon, 5 Feb 2024 17:07:34 -0500 Subject: [PATCH 01/34] chore: Update the tests --- .../comment/SettingsCommentComposer.java | 3 -- ...tractServiceStubSettingsClassComposer.java | 41 ----------------- .../DeprecatedServiceStubSettings.golden | 18 -------- .../grpc/goldens/EchoStubSettings.golden | 18 -------- .../LoggingServiceV2StubSettings.golden | 18 -------- .../grpc/goldens/PublisherStubSettings.golden | 18 -------- .../grpcrest/goldens/EchoStubSettings.golden | 18 -------- .../goldens/WickedStubSettings.golden | 18 -------- .../goldens/ComplianceStubSettings.golden | 18 -------- .../com/google/api/gax/rpc/ClientContext.java | 11 ++--- .../com/google/api/gax/rpc/StubSettings.java | 46 ++++++++++++++----- .../google/api/gax/rpc/ClientContextTest.java | 12 +++-- .../v1beta1/stub/ComplianceStubSettings.java | 18 -------- .../v1beta1/stub/EchoStubSettings.java | 18 -------- .../v1beta1/stub/IdentityStubSettings.java | 18 -------- .../v1beta1/stub/MessagingStubSettings.java | 18 -------- .../stub/SequenceServiceStubSettings.java | 18 -------- .../v1beta1/stub/TestingStubSettings.java | 18 -------- 18 files changed, 45 insertions(+), 302 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/SettingsCommentComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/SettingsCommentComposer.java index aaad982c66..649ee62e77 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/SettingsCommentComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/comment/SettingsCommentComposer.java @@ -52,9 +52,6 @@ public class SettingsCommentComposer { private static final String CLASS_HEADER_DEFAULTS_RETRIES_DESCRIPTION = "Retries are configured for idempotent methods but not for non-idempotent methods."; - public static final CommentStatement GET_ENDPOINT_COMMENT = - toSimpleComment( - "Returns the endpoint set by the user or the the service's default endpoint."); public static final CommentStatement DEFAULT_SCOPES_COMMENT = toSimpleComment("The default scopes of the service."); diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java index 4b0c88c3b4..158206e9e9 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java @@ -1007,7 +1007,6 @@ private List createClassMethods( javaMethods.addAll( createMethodSettingsGetterMethods(methodSettingsMemberVarExprs, deprecatedSettingVarNames)); javaMethods.add(createCreateStubMethod(service, typeStore)); - javaMethods.add(createGetEndpointMethod()); javaMethods.addAll(createDefaultHelperAndGetterMethods(service, typeStore)); javaMethods.addAll( createNewBuilderMethods( @@ -1021,45 +1020,6 @@ private List createClassMethods( return javaMethods; } - // Helper method to create the getEndpoint method in the ServiceStubSettings class - private MethodDefinition createGetEndpointMethod() { - Expr getEndpointExpr = - MethodInvocationExpr.builder() - .setMethodName("getEndpoint") - .setExprReferenceExpr( - ValueExpr.withValue( - SuperObjectValue.withType( - TypeNode.withReference(ConcreteReference.withClazz(StubSettings.class))))) - .setReturnType(TypeNode.STRING) - .build(); - Expr isNotNullCheck = - RelationalOperationExpr.notEqualToWithExprs(getEndpointExpr, ValueExpr.createNullExpr()); - - IfStatement ifStatement = - IfStatement.builder() - .setConditionExpr(isNotNullCheck) - .setBody(ImmutableList.of(ExprStatement.withExpr(ReturnExpr.withExpr(getEndpointExpr)))) - .build(); - - Expr getDefaultEndpointExpr = - MethodInvocationExpr.builder() - .setMethodName("getDefaultEndpoint") - .setReturnType(TypeNode.STRING) - .build(); - ReturnExpr returnExpr = ReturnExpr.withExpr(getDefaultEndpointExpr); - - return MethodDefinition.builder() - .setHeaderCommentStatements(SettingsCommentComposer.GET_ENDPOINT_COMMENT) - .setScope(ScopeNode.PUBLIC) - .setIsStatic(false) - .setAnnotations(ImmutableList.of(AnnotationNode.OVERRIDE)) - .setReturnType(TypeNode.STRING) - .setName("getEndpoint") - .setBody(ImmutableList.of(ifStatement)) - .setReturnExpr(returnExpr) - .build(); - } - private static List createMethodSettingsGetterMethods( Map methodSettingsMemberVarExprs, final Set deprecatedSettingVarNames) { @@ -1505,7 +1465,6 @@ private List createNestedClassMethods( nestedClassMethods.addAll( createNestedClassSettingsBuilderGetterMethods( nestedMethodSettingsMemberVarExprs, nestedDeprecatedSettingVarNames)); - nestedClassMethods.add(createGetEndpointMethod()); nestedClassMethods.add(createNestedClassBuildMethod(service, typeStore)); return nestedClassMethods; } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden index a8fc7de851..ab6dfbce50 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden @@ -102,15 +102,6 @@ public class DeprecatedServiceStubSettings extends StubSettings { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -638,15 +629,6 @@ public class EchoStubSettings extends StubSettings { return collideNameSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public EchoStubSettings build() throws IOException { return new EchoStubSettings(this); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden index 7d42753c2b..2c22b3b16e 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden @@ -422,15 +422,6 @@ public class LoggingServiceV2StubSettings extends StubSettings { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ @Override public String getServiceName() { @@ -812,15 +803,6 @@ public class PublisherStubSettings extends StubSettings { return detachSubscriptionSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public PublisherStubSettings build() throws IOException { return new PublisherStubSettings(this); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden index e3b473d84b..8291e6add9 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden @@ -301,15 +301,6 @@ public class EchoStubSettings extends StubSettings { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -698,15 +689,6 @@ public class EchoStubSettings extends StubSettings { return updateCaseSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public EchoStubSettings build() throws IOException { return new EchoStubSettings(this); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden index e5831824c0..0672cecabf 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden @@ -99,15 +99,6 @@ public class WickedStubSettings extends StubSettings { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -285,15 +276,6 @@ public class WickedStubSettings extends StubSettings { return persuadeEvilPlanSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public WickedStubSettings build() throws IOException { return new WickedStubSettings(this); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden index abc4a1a750..1182d37f7d 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden @@ -131,15 +131,6 @@ public class ComplianceStubSettings extends StubSettings "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -418,15 +409,6 @@ public class ComplianceStubSettings extends StubSettings return verifyEnumSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public ComplianceStubSettings build() throws IOException { return new ComplianceStubSettings(this); diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java index 409dbbada1..1f019d3a52 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java @@ -161,15 +161,12 @@ public static ClientContext create(StubSettings settings) throws IOException { Credentials credentials = settings.getCredentialsProvider().getCredentials(); boolean usingGDCH = credentials instanceof GdchCredentials; + // EndpointContext endpointContext = - EndpointContext.newBuilder() + settings + .getEndpointContext() + .toBuilder() .setServiceName(settings.getServiceName()) - .setUniverseDomain(settings.getUniverseDomain()) - .setClientSettingsEndpoint(settings.getUserSetEndpoint()) - .setTransportChannelProviderEndpoint( - settings.getTransportChannelProvider().getEndpoint()) - .setMtlsEndpoint(settings.getMtlsEndpoint()) - .setSwitchToMtlsEndpointAllowed(settings.getSwitchToMtlsEndpointAllowed()) .setUsingGDCH(usingGDCH) .build(); String endpoint = endpointContext.resolvedEndpoint(); diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index 962443e5d2..aa91ca06fc 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -82,6 +82,7 @@ public abstract class StubSettings> { // Track if deprecated setExecutorProvider is called private boolean deprecatedExecutorProviderSet; private final String universeDomain; + @Nonnull private final EndpointContext endpointContext; /** * Indicate when creating transport whether it is allowed to use mTLS endpoint instead of the @@ -110,6 +111,11 @@ protected StubSettings(Builder builder) { this.deprecatedExecutorProviderSet = builder.deprecatedExecutorProviderSet; this.gdchApiAudience = builder.gdchApiAudience; this.universeDomain = builder.universeDomain; + try { + this.endpointContext = builder.endpointContextBuilder.build(); + } catch (IOException e) { + throw new RuntimeException(e); + } } /** @deprecated Please use {@link #getBackgroundExecutorProvider()}. */ @@ -150,22 +156,17 @@ public String getServiceName() { } public final String getUniverseDomain() { - return universeDomain; + return endpointContext.resolvedUniverseDomain(); } public String getEndpoint() { - return endpoint; + return endpointContext.resolvedEndpoint(); } - /** - * This is an internal api meant to either return the user set endpoint or null. The difference - * between this method and {@link #getEndpoint()}} is that {@link #getEndpoint()} is reimplemented - * by the child class and will return the default service endpoint if the user did not set an - * endpoint (does not return null). - */ + // Intended for Internal Use and is the EndpointContext to be passed to all the Callables @InternalApi - String getUserSetEndpoint() { - return endpoint; + final EndpointContext getEndpointContext() { + return endpointContext; } public final String getMtlsEndpoint() { @@ -249,6 +250,7 @@ public abstract static class Builder< @Nonnull private ApiTracerFactory tracerFactory; private boolean deprecatedExecutorProviderSet; private String universeDomain; + @Nonnull private EndpointContext.Builder endpointContextBuilder; /** * Indicate when creating transport whether it is allowed to use mTLS endpoint instead of the @@ -277,6 +279,7 @@ protected Builder(StubSettings settings) { this.deprecatedExecutorProviderSet = settings.deprecatedExecutorProviderSet; this.gdchApiAudience = settings.gdchApiAudience; this.universeDomain = settings.universeDomain; + this.endpointContextBuilder = settings.endpointContext.toBuilder(); } /** Get Quota Project ID from Client Context * */ @@ -314,6 +317,7 @@ protected Builder(ClientContext clientContext) { this.deprecatedExecutorProviderSet = false; this.gdchApiAudience = null; this.universeDomain = null; + this.endpointContextBuilder = EndpointContext.newBuilder(); } else { ExecutorProvider fixedExecutorProvider = FixedExecutorProvider.create(clientContext.getExecutor()); @@ -338,6 +342,12 @@ protected Builder(ClientContext clientContext) { this.quotaProjectId = getQuotaProjectIdFromClientContext(clientContext); this.gdchApiAudience = clientContext.getGdchApiAudience(); this.universeDomain = clientContext.getUniverseDomain(); + this.endpointContextBuilder = + EndpointContext.newBuilder() + .setServiceName(serviceName) + .setClientSettingsEndpoint(this.endpoint) + .setMtlsEndpoint(this.mtlsEndpoint) + .setUniverseDomain(universeDomain); } } @@ -427,6 +437,9 @@ protected B setInternalHeaderProvider(HeaderProvider internalHeaderProvider) { */ public B setTransportChannelProvider(TransportChannelProvider transportChannelProvider) { this.transportChannelProvider = transportChannelProvider; + this.endpointContextBuilder = + this.endpointContextBuilder.setTransportChannelProviderEndpoint( + this.transportChannelProvider.getEndpoint()); return self(); } @@ -452,6 +465,7 @@ public B setClock(ApiClock clock) { public B setUniverseDomain(String universeDomain) { this.universeDomain = universeDomain; + this.endpointContextBuilder = this.endpointContextBuilder.setUniverseDomain(universeDomain); return self(); } @@ -461,16 +475,24 @@ public B setEndpoint(String endpoint) { if (this.endpoint != null && this.mtlsEndpoint == null) { this.mtlsEndpoint = this.endpoint.replace("googleapis.com", "mtls.googleapis.com"); } + this.endpointContextBuilder = + this.endpointContextBuilder + .setClientSettingsEndpoint(endpoint) + .setSwitchToMtlsEndpointAllowed(false) + .setMtlsEndpoint(this.mtlsEndpoint); return self(); } protected B setSwitchToMtlsEndpointAllowed(boolean switchToMtlsEndpointAllowed) { this.switchToMtlsEndpointAllowed = switchToMtlsEndpointAllowed; + this.endpointContextBuilder = + this.endpointContextBuilder.setSwitchToMtlsEndpointAllowed(switchToMtlsEndpointAllowed); return self(); } public B setMtlsEndpoint(String mtlsEndpoint) { this.mtlsEndpoint = mtlsEndpoint; + this.endpointContextBuilder = this.endpointContextBuilder.setMtlsEndpoint(mtlsEndpoint); return self(); } @@ -556,11 +578,11 @@ public ApiClock getClock() { } public String getEndpoint() { - return endpoint; + return endpointContextBuilder.clientSettingsEndpoint(); } public String getMtlsEndpoint() { - return mtlsEndpoint; + return endpointContextBuilder.mtlsEndpoint(); } /** Gets the QuotaProjectId that was previously set on this Builder. */ diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientContextTest.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientContextTest.java index cad4a7869a..2f82489528 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientContextTest.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientContextTest.java @@ -976,6 +976,7 @@ public void testCreateClientContext_SetEndpointViaClientSettings() throws IOExce @Test public void testCreateClientContext_SetEndpointViaTransportChannelProvider() throws IOException { + String transportChannelProviderEndpoint = "transport.endpoint.com"; TransportChannelProvider transportChannelProvider = new FakeTransportProvider( FakeTransportChannel.create(new FakeChannel()), @@ -983,7 +984,7 @@ public void testCreateClientContext_SetEndpointViaTransportChannelProvider() thr true, null, null, - DEFAULT_ENDPOINT); + transportChannelProviderEndpoint); StubSettings settings = new FakeStubSettings.Builder() .setEndpoint(null) @@ -995,8 +996,7 @@ public void testCreateClientContext_SetEndpointViaTransportChannelProvider() thr FixedCredentialsProvider.create(Mockito.mock(Credentials.class))); ClientSettings clientSettings = clientSettingsBuilder.build(); ClientContext clientContext = ClientContext.create(clientSettings); - // ClientContext.getEndpoint() currently always refers to the ClientSettingsEndpoint value - assertThat(clientContext.getEndpoint()).isEqualTo(null); + assertThat(clientContext.getEndpoint()).isEqualTo(transportChannelProviderEndpoint); assertThat(clientContext.getUniverseDomain()).isEqualTo(DEFAULT_UNIVERSE_DOMAIN); } @@ -1024,8 +1024,10 @@ public void testCreateClientContext_SetEndpointViaClientSettingsAndTransportChan FixedCredentialsProvider.create(Mockito.mock(Credentials.class))); ClientSettings clientSettings = clientSettingsBuilder.build(); ClientContext clientContext = ClientContext.create(clientSettings); - // ClientContext.getEndpoint() currently always refers to the ClientSettingsEndpoint value - assertThat(clientContext.getEndpoint()).isEqualTo(clientSettingsEndpoint); + // ClientContext.getEndpoint() is the resolved endpoint. If both the client settings + // and transport channel provider's endpoints are set, the resolved endpoint will be + // the transport channel provider's endpoint. + assertThat(clientContext.getEndpoint()).isEqualTo(transportChannelProviderEndpoint); assertThat(clientContext.getUniverseDomain()).isEqualTo(DEFAULT_UNIVERSE_DOMAIN); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java index e6b5127084..f55cf80db7 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java @@ -273,15 +273,6 @@ public ComplianceStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -717,15 +708,6 @@ public UnaryCallSettings.Builder getIamPolicySettin return testIamPermissionsSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public ComplianceStubSettings build() throws IOException { return new ComplianceStubSettings(this); diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java index 4f6166ee64..450c23822c 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java @@ -432,15 +432,6 @@ public EchoStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -924,15 +915,6 @@ public UnaryCallSettings.Builder getIamPolicySettin return testIamPermissionsSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public EchoStubSettings build() throws IOException { return new EchoStubSettings(this); diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java index 76d9956cf0..09a5c8ef2a 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java @@ -303,15 +303,6 @@ public IdentityStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -674,15 +665,6 @@ public UnaryCallSettings.Builder getIamPolicySettin return testIamPermissionsSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public IdentityStubSettings build() throws IOException { return new IdentityStubSettings(this); diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java index e80223ce69..f57828ac91 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java @@ -445,15 +445,6 @@ public MessagingStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -998,15 +989,6 @@ public UnaryCallSettings.Builder getIamPolicySettin return testIamPermissionsSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public MessagingStubSettings build() throws IOException { return new MessagingStubSettings(this); diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java index 596c8f8474..5194f9d39b 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java @@ -268,15 +268,6 @@ public SequenceServiceStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -671,15 +662,6 @@ public UnaryCallSettings.Builder getIamPolicySettin return testIamPermissionsSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public SequenceServiceStubSettings build() throws IOException { return new SequenceServiceStubSettings(this); diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java index 7c951511f1..30ba208142 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java @@ -385,15 +385,6 @@ public TestingStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -795,15 +786,6 @@ public UnaryCallSettings.Builder getIamPolicySettin return testIamPermissionsSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public TestingStubSettings build() throws IOException { return new TestingStubSettings(this); From 8ec9ad0efabd904f0a9069c40ccb66e75f99e030 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 6 Feb 2024 10:32:26 -0500 Subject: [PATCH 02/34] chore: Add serviceName to StubSettings --- ...tractServiceStubSettingsClassComposer.java | 34 ++++---- .../DeprecatedServiceStubSettings.golden | 6 ++ .../grpc/goldens/EchoStubSettings.golden | 6 ++ .../LoggingServiceV2StubSettings.golden | 4 +- .../grpc/goldens/PublisherStubSettings.golden | 4 +- .../grpcrest/goldens/EchoStubSettings.golden | 7 ++ .../goldens/WickedStubSettings.golden | 6 ++ .../goldens/ComplianceStubSettings.golden | 6 ++ .../google/api/gax/grpc/GrpcCallContext.java | 5 ++ .../api/gax/httpjson/HttpJsonCallContext.java | 5 ++ .../google/api/gax/rpc/ApiCallContext.java | 2 + .../com/google/api/gax/rpc/ClientContext.java | 11 +-- .../google/api/gax/rpc/ClientSettings.java | 7 ++ .../com/google/api/gax/rpc/StubSettings.java | 24 +++--- .../google/api/gax/tracing/MethodName.java | 2 +- .../google/api/gax/rpc/ClientContextTest.java | 3 +- .../api/gax/rpc/ClientSettingsTest.java | 8 +- .../api/gax/rpc/testing/FakeCallContext.java | 5 ++ .../api/gax/rpc/testing/FakeStubSettings.java | 5 -- .../v1beta1/stub/ComplianceStubSettings.java | 7 ++ .../v1beta1/stub/EchoStubSettings.java | 7 ++ .../v1beta1/stub/IdentityStubSettings.java | 7 ++ .../v1beta1/stub/MessagingStubSettings.java | 7 ++ .../stub/SequenceServiceStubSettings.java | 7 ++ .../v1beta1/stub/TestingStubSettings.java | 7 ++ .../v1beta1/it/ITEndpointContext.java | 83 ++++++++++++++++--- .../stub/ConnectionServiceStubSettings.java | 23 +---- .../v1/stub/TetherStubSettings.java | 22 +---- .../v1/stub/AssetServiceStubSettings.java | 23 +---- .../data/v2/stub/BigtableStubSettings.java | 22 +---- .../v1small/stub/AddressesStubSettings.java | 22 +---- .../stub/RegionOperationsStubSettings.java | 22 +---- .../v1/stub/IamCredentialsStubSettings.java | 23 +---- .../iam/v1/stub/IAMPolicyStubSettings.java | 22 +---- .../KeyManagementServiceStubSettings.java | 22 +---- .../v1/stub/LibraryServiceStubSettings.java | 23 +---- .../v2/stub/ConfigServiceV2StubSettings.java | 22 +---- .../v2/stub/LoggingServiceV2StubSettings.java | 22 +---- .../v2/stub/MetricsServiceV2StubSettings.java | 22 +---- .../pubsub/v1/stub/PublisherStubSettings.java | 22 +---- .../v1/stub/SchemaServiceStubSettings.java | 22 +---- .../v1/stub/SubscriberStubSettings.java | 22 +---- .../v1beta1/stub/CloudRedisStubSettings.java | 23 +---- .../storage/v2/stub/StorageStubSettings.java | 22 +---- 44 files changed, 257 insertions(+), 419 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java index 158206e9e9..108edebea3 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java @@ -97,7 +97,6 @@ import com.google.api.generator.gapic.model.Service; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.base.Preconditions; -import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; @@ -1141,21 +1140,18 @@ private List createDefaultHelperAndGetterMethods( TypeNode returnType; // Create the getServiceName method. - if (!Strings.isNullOrEmpty(service.hostServiceName())) { - returnType = TypeNode.STRING; - javaMethods.add( - MethodDefinition.builder() - .setHeaderCommentStatements( - SettingsCommentComposer.DEFAULT_SERVICE_NAME_METHOD_COMMENT) - .setIsOverride(true) - .setScope(ScopeNode.PUBLIC) - .setIsStatic(false) - .setReturnType(returnType) - .setName("getServiceName") - .setReturnExpr( - ValueExpr.withValue(StringObjectValue.withValue(service.hostServiceName()))) - .build()); - } + returnType = TypeNode.STRING; + javaMethods.add( + MethodDefinition.builder() + .setHeaderCommentStatements(SettingsCommentComposer.DEFAULT_SERVICE_NAME_METHOD_COMMENT) + .setIsOverride(false) + .setScope(ScopeNode.PUBLIC) + .setIsStatic(true) + .setReturnType(returnType) + .setName("getServiceName") + .setReturnExpr( + ValueExpr.withValue(StringObjectValue.withValue(service.hostServiceName()))) + .build()); // Create the defaultExecutorProviderBuilder method. returnType = @@ -1910,6 +1906,12 @@ protected MethodDefinition createNestedClassCreateDefaultMethod( ValueExpr.withValue( PrimitiveValue.builder().setType(TypeNode.BOOLEAN).setValue("true").build())) .build()); + bodyExprs.add( + MethodInvocationExpr.builder() + .setExprReferenceExpr(builderVarExpr) + .setMethodName("setServiceName") + .setArguments(MethodInvocationExpr.builder().setMethodName("getServiceName").build()) + .build()); bodyStatements.addAll( bodyExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); bodyStatements.add(EMPTY_LINE_STATEMENT); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden index ab6dfbce50..eedfbfb78b 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden @@ -102,6 +102,11 @@ public class DeprecatedServiceStubSettings extends StubSettings { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } + /** Returns the default service name. */ + public static String getServiceName() { + return ""; + } + /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -486,6 +491,7 @@ public class EchoStubSettings extends StubSettings { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden index 2c22b3b16e..b5284bb083 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden @@ -423,8 +423,7 @@ public class LoggingServiceV2StubSettings extends StubSettings { } /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "pubsub"; } @@ -669,6 +668,7 @@ public class PublisherStubSettings extends StubSettings { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden index 8291e6add9..c6e0cc1cab 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden @@ -301,6 +301,11 @@ public class EchoStubSettings extends StubSettings { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } + /** Returns the default service name. */ + public static String getServiceName() { + return ""; + } + /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -514,6 +519,7 @@ public class EchoStubSettings extends StubSettings { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -526,6 +532,7 @@ public class EchoStubSettings extends StubSettings { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden index 0672cecabf..5916012380 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden @@ -99,6 +99,11 @@ public class WickedStubSettings extends StubSettings { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } + /** Returns the default service name. */ + public static String getServiceName() { + return ""; + } + /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -233,6 +238,7 @@ public class WickedStubSettings extends StubSettings { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden index 1182d37f7d..c0e2014a15 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden @@ -131,6 +131,11 @@ public class ComplianceStubSettings extends StubSettings "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } + /** Returns the default service name. */ + public static String getServiceName() { + return ""; + } + /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -304,6 +309,7 @@ public class ComplianceStubSettings extends StubSettings builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } diff --git a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java index 886beda4ec..71f3add482 100644 --- a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java +++ b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java @@ -225,6 +225,11 @@ public GrpcCallContext withEndpointContext(EndpointContext endpointContext) { endpointContext); } + @Override + public EndpointContext getEndpointContext() { + return endpointContext; + } + @Override public GrpcCallContext withTimeout(@Nullable Duration timeout) { // Default RetrySettings use 0 for RPC timeout. Treat that as disabled timeouts. diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java index 890c205a61..62d0bb102a 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java @@ -264,6 +264,11 @@ public HttpJsonCallContext withEndpointContext(EndpointContext endpointContext) endpointContext); } + @Override + public EndpointContext getEndpointContext() { + return endpointContext; + } + @Override public HttpJsonCallContext withTimeout(Duration timeout) { // Default RetrySettings use 0 for RPC timeout. Treat that as disabled timeouts. diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ApiCallContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ApiCallContext.java index e650564826..f35930c82b 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ApiCallContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ApiCallContext.java @@ -66,6 +66,8 @@ public interface ApiCallContext extends RetryingContext { /** Returns a new ApiCallContext with the given Endpoint Context. */ ApiCallContext withEndpointContext(EndpointContext endpointContext); + EndpointContext getEndpointContext(); + /** * Returns a new ApiCallContext with the given timeout set. * diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java index 1f019d3a52..4594448c35 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java @@ -161,14 +161,9 @@ public static ClientContext create(StubSettings settings) throws IOException { Credentials credentials = settings.getCredentialsProvider().getCredentials(); boolean usingGDCH = credentials instanceof GdchCredentials; - // + // GDC-H is determined by the Credentials passed in EndpointContext endpointContext = - settings - .getEndpointContext() - .toBuilder() - .setServiceName(settings.getServiceName()) - .setUsingGDCH(usingGDCH) - .build(); + settings.getEndpointContext().toBuilder().setUsingGDCH(usingGDCH).build(); String endpoint = endpointContext.resolvedEndpoint(); String settingsGdchApiAudience = settings.getGdchApiAudience(); @@ -267,7 +262,7 @@ public static ClientContext create(StubSettings settings) throws IOException { .setInternalHeaders(ImmutableMap.copyOf(settings.getInternalHeaderProvider().getHeaders())) .setClock(clock) .setDefaultCallContext(defaultCallContext) - .setServiceName(settings.getServiceName()) + .setServiceName(endpointContext.serviceName()) .setUniverseDomain(settings.getUniverseDomain()) .setEndpoint(settings.getEndpoint()) .setQuotaProjectId(settings.getQuotaProjectId()) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientSettings.java index 25929756f5..fb366687b3 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientSettings.java @@ -31,6 +31,7 @@ import com.google.api.core.ApiClock; import com.google.api.core.ApiFunction; +import com.google.api.core.InternalApi; import com.google.api.gax.core.CredentialsProvider; import com.google.api.gax.core.ExecutorProvider; import com.google.common.base.MoreObjects; @@ -252,6 +253,12 @@ public B setUniverseDomain(String universeDomain) { return self(); } + @InternalApi + public B setServiceName(String serviceName) { + stubSettings.setServiceName(serviceName); + return self(); + } + public B setEndpoint(String endpoint) { stubSettings.setEndpoint(endpoint); return self(); diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index aa91ca06fc..c2b23b046c 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -148,13 +148,6 @@ public final ApiClock getClock() { return clock; } - // Intended for Internal Use and Overriden by generated ServiceStubSettings classes. - // Meant to be shared between StubSettings and ClientContext. - @InternalApi - public String getServiceName() { - return ""; - } - public final String getUniverseDomain() { return endpointContext.resolvedUniverseDomain(); } @@ -343,11 +336,7 @@ protected Builder(ClientContext clientContext) { this.gdchApiAudience = clientContext.getGdchApiAudience(); this.universeDomain = clientContext.getUniverseDomain(); this.endpointContextBuilder = - EndpointContext.newBuilder() - .setServiceName(serviceName) - .setClientSettingsEndpoint(this.endpoint) - .setMtlsEndpoint(this.mtlsEndpoint) - .setUniverseDomain(universeDomain); + clientContext.getDefaultCallContext().getEndpointContext().toBuilder(); } } @@ -463,6 +452,17 @@ public B setClock(ApiClock clock) { return self(); } + /** + * This is intended to be used by the generated Client StubSettings' classes. Explicitly setting + * this value may result in unintended client behavior. + */ + @InternalApi + public B setServiceName(String serviceName) { + this.serviceName = serviceName; + this.endpointContextBuilder = this.endpointContextBuilder.setServiceName(serviceName); + return self(); + } + public B setUniverseDomain(String universeDomain) { this.universeDomain = universeDomain; this.endpointContextBuilder = this.endpointContextBuilder.setUniverseDomain(universeDomain); diff --git a/gax-java/gax/src/main/java/com/google/api/gax/tracing/MethodName.java b/gax-java/gax/src/main/java/com/google/api/gax/tracing/MethodName.java index 1581c0ed38..554af20316 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/tracing/MethodName.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/tracing/MethodName.java @@ -43,7 +43,7 @@ public abstract class MethodName { * Creates a new instance of the RPC method name. * * @param serviceName The name of the service. In general this will be GAPIC generated service - * name {@link StubSettings#getServiceName()}. However, in some cases, when the GAPIC + * name {@link StubSettings#defaultServiceName()}. However, in some cases, when the GAPIC * generated service is wrapped, this will be overridden to specify the manually written * wrapper's name. * @param methodName The name of the logical operation being traced. diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientContextTest.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientContextTest.java index 2f82489528..293e8535b3 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientContextTest.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientContextTest.java @@ -798,7 +798,8 @@ public void testCreateClientContext_withGdchCredentialNoAudienceNoEndpoint() thr Credentials creds = getMockGdchCredentials(); CredentialsProvider provider = FixedCredentialsProvider.create(creds); - StubSettings settings = new FakeStubSettings.Builder().setGdchApiAudience(null).build(); + StubSettings settings = + new FakeStubSettings.Builder().setGdchApiAudience(null).setServiceName("test").build(); FakeClientSettings.Builder clientSettingsBuilder = new FakeClientSettings.Builder(settings); clientSettingsBuilder.setCredentialsProvider(provider); clientSettingsBuilder.setTransportChannelProvider(transportChannelProvider); diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientSettingsTest.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientSettingsTest.java index b39d59cbd5..bbbda6f93a 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientSettingsTest.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientSettingsTest.java @@ -205,7 +205,9 @@ public void testBuilder() throws Exception { public void testBuilderFromClientContext() throws Exception { final String QUOTA_PROJECT_ID_FROM_CONTEXT = "some_quota_project_id_from_context"; ApiClock clock = Mockito.mock(ApiClock.class); - ApiCallContext callContext = FakeCallContext.createDefault(); + EndpointContext endpointContext = Mockito.mock(EndpointContext.class); + ApiCallContext callContext = + FakeCallContext.createDefault().withEndpointContext(endpointContext); Map headers = Collections.singletonMap("spiffykey", "spiffyvalue"); Watchdog watchdog = Watchdog.create( @@ -442,7 +444,9 @@ public Credentials getCredentials() throws IOException { @Test public void testBuilderFromClientContext_QuotaProjectId() { - ApiCallContext callContext = FakeCallContext.createDefault(); + EndpointContext endpointContext = Mockito.mock(EndpointContext.class); + ApiCallContext callContext = + FakeCallContext.createDefault().withEndpointContext(endpointContext); ClientContext clientContextQuotaOnly = ClientContext.newBuilder() diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeCallContext.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeCallContext.java index e7c6c90b1e..58c1f05e35 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeCallContext.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeCallContext.java @@ -299,6 +299,11 @@ public FakeCallContext withEndpointContext(EndpointContext endpointContext) { endpointContext); } + @Override + public EndpointContext getEndpointContext() { + return endpointContext; + } + public FakeCallContext withChannel(FakeChannel channel) { return new FakeCallContext( this.credentials, diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeStubSettings.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeStubSettings.java index c5f0cc81f4..2c41d75a47 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeStubSettings.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeStubSettings.java @@ -41,11 +41,6 @@ private FakeStubSettings(Builder builder) throws IOException { super(builder); } - @Override - public String getServiceName() { - return "test"; - } - @Override public StubSettings.Builder toBuilder() { return new Builder(this); diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java index f55cf80db7..1ebbbfeeb5 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java @@ -273,6 +273,11 @@ public ComplianceStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } + /** Returns the default service name. */ + public static String getServiceName() { + return ""; + } + /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -518,6 +523,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -530,6 +536,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java index 450c23822c..ae758aeede 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java @@ -432,6 +432,11 @@ public EchoStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } + /** Returns the default service name. */ + public static String getServiceName() { + return ""; + } + /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -698,6 +703,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -710,6 +716,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java index 09a5c8ef2a..fd24d379fe 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java @@ -303,6 +303,11 @@ public IdentityStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } + /** Returns the default service name. */ + public static String getServiceName() { + return ""; + } + /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -526,6 +531,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -538,6 +544,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java index f57828ac91..830da9b821 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java @@ -445,6 +445,11 @@ public MessagingStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } + /** Returns the default service name. */ + public static String getServiceName() { + return ""; + } + /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -734,6 +739,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -746,6 +752,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java index 5194f9d39b..9fe432e421 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java @@ -268,6 +268,11 @@ public SequenceServiceStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } + /** Returns the default service name. */ + public static String getServiceName() { + return ""; + } + /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -509,6 +514,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -521,6 +527,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java index 30ba208142..a1d8859686 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java @@ -385,6 +385,11 @@ public TestingStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } + /** Returns the default service name. */ + public static String getServiceName() { + return ""; + } + /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); @@ -614,6 +619,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -626,6 +632,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java index c7589f8e0d..b1592acc9e 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java @@ -1,6 +1,7 @@ package com.google.showcase.v1beta1.it; import com.google.api.gax.core.NoCredentialsProvider; +import com.google.auth.oauth2.GoogleCredentials; import com.google.common.truth.Truth; import com.google.showcase.v1beta1.EchoClient; import com.google.showcase.v1beta1.EchoSettings; @@ -17,7 +18,8 @@ * endpoint and universe domain values. */ public class ITEndpointContext { - public static final String SHOWCASE_DEFAULT_ENDPOINT = "localhost:7469"; + + private static final String DEFAULT_ENDPOINT = "test.googleapis.com:443"; // Default (no configuration) // This test is very similar to `endpointResolution_userConfiguration`. This test is kept @@ -29,16 +31,17 @@ public void endpointResolution_default() throws InterruptedException, IOExceptio // This is not how a client is created by default: // 1. The default usage is EchoClient.create(), but for showcase tests run in CI, the // client must be supplied with Credentials. - // 2. The default configuration does not set an endpoint. Showcase clients do not have - // a serviceName (and this cannot be configured by the user). Set the endpoint - // to simulate the endpointContext creating it with a proper serviceName. + // 2. Configure the serviceName. Normally this should be configured by the user at all, + // but showcase clients do not have a serviceName. EchoSettings echoSettings = EchoSettings.newBuilder() .setCredentialsProvider(NoCredentialsProvider.create()) - .setEndpoint(SHOWCASE_DEFAULT_ENDPOINT) + .setServiceName("test") .build(); echoClient = EchoClient.create(echoSettings); - Truth.assertThat(echoClient.getSettings().getEndpoint()).isEqualTo(SHOWCASE_DEFAULT_ENDPOINT); + Truth.assertThat(echoClient.getSettings().getEndpoint()).isEqualTo(DEFAULT_ENDPOINT); + Truth.assertThat(echoClient.getSettings().getUniverseDomain()) + .isEqualTo(GoogleCredentials.GOOGLE_DEFAULT_UNIVERSE); } finally { if (echoClient != null) { echoClient.close(); @@ -50,17 +53,75 @@ public void endpointResolution_default() throws InterruptedException, IOExceptio // User configuration @Test - public void endpointResolution_userConfiguration() throws InterruptedException, IOException { + public void endpointResolution_userSetEndpoint() throws InterruptedException, IOException { String customEndpoint = "test.com:123"; EchoClient echoClient = null; try { EchoSettings echoSettings = EchoSettings.newBuilder() .setCredentialsProvider(NoCredentialsProvider.create()) + .setServiceName("test") + .setEndpoint(customEndpoint) + .build(); + echoClient = EchoClient.create(echoSettings); + Truth.assertThat(echoClient.getSettings().getEndpoint()).isEqualTo(customEndpoint); + Truth.assertThat(echoClient.getSettings().getUniverseDomain()) + .isEqualTo(GoogleCredentials.GOOGLE_DEFAULT_UNIVERSE); + } finally { + if (echoClient != null) { + echoClient.close(); + echoClient.awaitTermination( + TestClientInitializer.AWAIT_TERMINATION_SECONDS, TimeUnit.SECONDS); + } + } + } + + @Test + public void endpointResolution_userSetUniverseDomain() throws IOException, InterruptedException { + String customUniverseDomain = "random.com"; + EchoClient echoClient = null; + try { + EchoSettings echoSettings = + EchoSettings.newBuilder() + .setCredentialsProvider(NoCredentialsProvider.create()) + .setServiceName("test") + .setUniverseDomain(customUniverseDomain) + .build(); + echoClient = EchoClient.create(echoSettings); + // If user configured the universe domain, the endpoint is constructed from it + Truth.assertThat(echoClient.getSettings().getEndpoint()).isEqualTo("test.random.com:443"); + Truth.assertThat(echoClient.getSettings().getUniverseDomain()) + .isEqualTo(customUniverseDomain); + } finally { + if (echoClient != null) { + echoClient.close(); + echoClient.awaitTermination( + TestClientInitializer.AWAIT_TERMINATION_SECONDS, TimeUnit.SECONDS); + } + } + } + + @Test + public void endpointResolution_userSetEndpointAndUniverseDomain() + throws IOException, InterruptedException { + String customEndpoint = "custom.endpoint.com:443"; + String customUniverseDomain = "random.com"; + EchoClient echoClient = null; + try { + EchoSettings echoSettings = + EchoSettings.newBuilder() + .setCredentialsProvider(NoCredentialsProvider.create()) + .setServiceName("test") .setEndpoint(customEndpoint) + .setUniverseDomain(customUniverseDomain) .build(); echoClient = EchoClient.create(echoSettings); + // Custom Endpoint sets the endpoint for the client to use Truth.assertThat(echoClient.getSettings().getEndpoint()).isEqualTo(customEndpoint); + // The universe domain doesn't match the endpoint. The call will fail validation when RPC is + // called. + Truth.assertThat(echoClient.getSettings().getUniverseDomain()) + .isEqualTo(customUniverseDomain); } finally { if (echoClient != null) { echoClient.close(); @@ -72,14 +133,16 @@ public void endpointResolution_userConfiguration() throws InterruptedException, // Default in Builder (no configuration) @Test - public void endpointResolution_defaultBuilder() { + public void endpointResolution_defaultViaBuilder() { EchoSettings.Builder echoSettingsBuilder = EchoSettings.newBuilder(); - Truth.assertThat(echoSettingsBuilder.getEndpoint()).isEqualTo(SHOWCASE_DEFAULT_ENDPOINT); + // The getter in the builder returns the user set value. No configuration + // means the getter will return null + Truth.assertThat(echoSettingsBuilder.getEndpoint()).isEqualTo(null); } // User configuration in Builder @Test - public void endpointResolution_userConfigurationBuilder() { + public void endpointResolution_userConfigurationViaBuilder() { String customEndpoint = "test.com:123"; EchoSettings.Builder echoSettingsBuilder = EchoSettings.newBuilder().setEndpoint(customEndpoint); diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java index df9e8abec0..c71a7f38b7 100644 --- a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java @@ -182,18 +182,8 @@ public ConnectionServiceStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "apigeeconnect"; } @@ -360,6 +350,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -372,6 +363,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -407,15 +399,6 @@ public Builder applyToAllUnaryMethods( return listConnectionsSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public ConnectionServiceStubSettings build() throws IOException { return new ConnectionServiceStubSettings(this); diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java index e4b77f5681..4d3ed42f0c 100644 --- a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java @@ -102,18 +102,8 @@ public TetherStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "apigeeconnect"; } @@ -240,6 +230,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -268,15 +259,6 @@ public StreamingCallSettings.Builder egressSettin return egressSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public TetherStubSettings build() throws IOException { return new TetherStubSettings(this); diff --git a/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java b/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java index 5575d68f9c..781f8afa74 100644 --- a/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java +++ b/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java @@ -571,18 +571,8 @@ public AssetServiceStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "cloudasset"; } @@ -974,6 +964,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -986,6 +977,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -1298,15 +1290,6 @@ public UnaryCallSettings.Builder deleteSavedQuer return batchGetEffectiveIamPoliciesSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public AssetServiceStubSettings build() throws IOException { return new AssetServiceStubSettings(this); diff --git a/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java b/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java index 1ac218894e..dc0e98be1e 100644 --- a/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java +++ b/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java @@ -166,18 +166,8 @@ public BigtableStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "bigtable"; } @@ -396,6 +386,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -495,15 +486,6 @@ public UnaryCallSettings.Builder mutateRowS return readModifyWriteRowSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public BigtableStubSettings build() throws IOException { return new BigtableStubSettings(this); diff --git a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java index e76bd8781b..e2a221ac9e 100644 --- a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java +++ b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java @@ -289,18 +289,8 @@ public AddressesStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "compute"; } @@ -476,6 +466,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -606,15 +597,6 @@ public UnaryCallSettings.Builder insertSettings return listSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public AddressesStubSettings build() throws IOException { return new AddressesStubSettings(this); diff --git a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java index 4bd1ca0422..68a086bb32 100644 --- a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java +++ b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java @@ -114,18 +114,8 @@ public RegionOperationsStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "compute"; } @@ -279,6 +269,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -322,15 +313,6 @@ public UnaryCallSettings.Builder waitSett return waitSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public RegionOperationsStubSettings build() throws IOException { return new RegionOperationsStubSettings(this); diff --git a/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java b/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java index 4fc0a8271d..d28d807c3b 100644 --- a/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java +++ b/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java @@ -140,18 +140,8 @@ public IamCredentialsStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "iamcredentials"; } @@ -338,6 +328,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -350,6 +341,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -415,15 +407,6 @@ public UnaryCallSettings.Builder signJwtSetting return signJwtSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public IamCredentialsStubSettings build() throws IOException { return new IamCredentialsStubSettings(this); diff --git a/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java b/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java index 783ae66465..d1adf31688 100644 --- a/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java +++ b/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java @@ -119,18 +119,8 @@ public IAMPolicyStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "iam-meta-api"; } @@ -277,6 +267,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -331,15 +322,6 @@ public UnaryCallSettings.Builder getIamPolicySettin return testIamPermissionsSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public IAMPolicyStubSettings build() throws IOException { return new IAMPolicyStubSettings(this); diff --git a/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java b/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java index 8fe5b31ad0..1a4d8f6501 100644 --- a/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java +++ b/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java @@ -639,18 +639,8 @@ public KeyManagementServiceStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "cloudkms"; } @@ -989,6 +979,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -1304,15 +1295,6 @@ public UnaryCallSettings.Builder getLocationSettin return testIamPermissionsSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public KeyManagementServiceStubSettings build() throws IOException { return new KeyManagementServiceStubSettings(this); diff --git a/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java b/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java index 3fe8079552..a21cc8c32e 100644 --- a/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java +++ b/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java @@ -306,18 +306,8 @@ public LibraryServiceStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "library-example"; } @@ -561,6 +551,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -573,6 +564,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -709,15 +701,6 @@ public UnaryCallSettings.Builder moveBookSettings() { return moveBookSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public LibraryServiceStubSettings build() throws IOException { return new LibraryServiceStubSettings(this); diff --git a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java index c1b47d8ba8..422ca44b7c 100644 --- a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java +++ b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java @@ -547,18 +547,8 @@ public ConfigServiceV2Stub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "logging"; } @@ -883,6 +873,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -1209,15 +1200,6 @@ public UnaryCallSettings.Builder copyLogEntrie return copyLogEntriesOperationSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public ConfigServiceV2StubSettings build() throws IOException { return new ConfigServiceV2StubSettings(this); diff --git a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java index e96353717a..27fbef23ee 100644 --- a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java +++ b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java @@ -438,18 +438,8 @@ public LoggingServiceV2Stub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "logging"; } @@ -653,6 +643,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -756,15 +747,6 @@ public UnaryCallSettings.Builder deleteLogSettings() { return tailLogEntriesSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public LoggingServiceV2StubSettings build() throws IOException { return new LoggingServiceV2StubSettings(this); diff --git a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java index e7eefab52b..f474161483 100644 --- a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java +++ b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java @@ -206,18 +206,8 @@ public MetricsServiceV2Stub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "logging"; } @@ -398,6 +388,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -473,15 +464,6 @@ public UnaryCallSettings.Builder deleteLogMetricS return deleteLogMetricSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public MetricsServiceV2StubSettings build() throws IOException { return new MetricsServiceV2StubSettings(this); diff --git a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java index 8df9f1452e..72a852572c 100644 --- a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java +++ b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java @@ -472,18 +472,8 @@ public PublisherStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "pubsub"; } @@ -738,6 +728,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -903,15 +894,6 @@ public UnaryCallSettings.Builder getIamPolicySettin return testIamPermissionsSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public PublisherStubSettings build() throws IOException { return new PublisherStubSettings(this); diff --git a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java index 20b2d7bb39..ed8d64d1f8 100644 --- a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java +++ b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java @@ -331,18 +331,8 @@ public SchemaServiceStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "pubsub"; } @@ -553,6 +543,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -716,15 +707,6 @@ public UnaryCallSettings.Builder getIamPolicySettin return testIamPermissionsSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public SchemaServiceStubSettings build() throws IOException { return new SchemaServiceStubSettings(this); diff --git a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java index a6bb063f13..f151095091 100644 --- a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java +++ b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java @@ -377,18 +377,8 @@ public SubscriberStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "pubsub"; } @@ -680,6 +670,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -897,15 +888,6 @@ public UnaryCallSettings.Builder getIamPolicySettin return testIamPermissionsSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public SubscriberStubSettings build() throws IOException { return new SubscriberStubSettings(this); diff --git a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java index 41af6f4a48..9a048669c8 100644 --- a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java +++ b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java @@ -323,18 +323,8 @@ public CloudRedisStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "redis"; } @@ -611,6 +601,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -623,6 +614,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -1009,15 +1001,6 @@ public UnaryCallSettings.Builder deleteInstanc return rescheduleMaintenanceOperationSettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public CloudRedisStubSettings build() throws IOException { return new CloudRedisStubSettings(this); diff --git a/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java b/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java index 4010f7e96c..9b50a62d9b 100644 --- a/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java +++ b/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java @@ -589,18 +589,8 @@ public StorageStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - /** Returns the default service name. */ - @Override - public String getServiceName() { + public static String getServiceName() { return "storage"; } @@ -933,6 +923,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); + builder.setServiceName(getServiceName()); return initDefaults(builder); } @@ -1273,15 +1264,6 @@ public UnaryCallSettings.Builder getHmacKeyS return updateHmacKeySettings; } - /** Returns the endpoint set by the user or the the service's default endpoint. */ - @Override - public String getEndpoint() { - if (super.getEndpoint() != null) { - return super.getEndpoint(); - } - return getDefaultEndpoint(); - } - @Override public StorageStubSettings build() throws IOException { return new StorageStubSettings(this); From 2f3e49a0cae14059e9a44d93a5a2bd9b26843f37 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 6 Feb 2024 10:40:08 -0500 Subject: [PATCH 03/34] chore: Add clirr checks --- gax-java/gax/clirr-ignored-differences.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gax-java/gax/clirr-ignored-differences.xml b/gax-java/gax/clirr-ignored-differences.xml index c8e68444ff..f4762a06ea 100644 --- a/gax-java/gax/clirr-ignored-differences.xml +++ b/gax-java/gax/clirr-ignored-differences.xml @@ -42,4 +42,16 @@ com/google/api/gax/rpc/ApiCallContext * validateUniverseDomain() + + + 7012 + com/google/api/gax/rpc/ApiCallContext + * getEndpointContext(*) + + + + 7002 + com/google/api/gax/rpc/StubSettings + * getServiceName() + From 0b1a6f146ab15d25aaa52909969f9ac06a561769 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 6 Feb 2024 12:16:43 -0500 Subject: [PATCH 04/34] chore: Add static getDefaultServiceName --- ...tractServiceStubSettingsClassComposer.java | 45 +++++++++++++------ .../DeprecatedServiceStubSettings.golden | 12 ++--- .../grpc/goldens/EchoStubSettings.golden | 12 ++--- .../LoggingServiceV2StubSettings.golden | 10 ++++- .../grpc/goldens/PublisherStubSettings.golden | 10 ++++- .../grpcrest/goldens/EchoStubSettings.golden | 14 +++--- .../goldens/WickedStubSettings.golden | 12 ++--- .../goldens/ComplianceStubSettings.golden | 12 ++--- gax-java/gax/clirr-ignored-differences.xml | 6 --- .../com/google/api/gax/rpc/ClientContext.java | 2 +- .../com/google/api/gax/rpc/StubSettings.java | 6 +++ .../v1beta1/stub/ComplianceStubSettings.java | 14 +++--- .../v1beta1/stub/EchoStubSettings.java | 14 +++--- .../v1beta1/stub/IdentityStubSettings.java | 14 +++--- .../v1beta1/stub/MessagingStubSettings.java | 14 +++--- .../stub/SequenceServiceStubSettings.java | 14 +++--- .../v1beta1/stub/TestingStubSettings.java | 14 +++--- .../stub/ConnectionServiceStubSettings.java | 12 +++-- .../v1/stub/TetherStubSettings.java | 10 ++++- .../v1/stub/AssetServiceStubSettings.java | 12 +++-- .../data/v2/stub/BigtableStubSettings.java | 10 ++++- .../v1small/stub/AddressesStubSettings.java | 10 ++++- .../stub/RegionOperationsStubSettings.java | 10 ++++- .../v1/stub/IamCredentialsStubSettings.java | 12 +++-- .../iam/v1/stub/IAMPolicyStubSettings.java | 10 ++++- .../KeyManagementServiceStubSettings.java | 10 ++++- .../v1/stub/LibraryServiceStubSettings.java | 12 +++-- .../v2/stub/ConfigServiceV2StubSettings.java | 10 ++++- .../v2/stub/LoggingServiceV2StubSettings.java | 10 ++++- .../v2/stub/MetricsServiceV2StubSettings.java | 10 ++++- .../pubsub/v1/stub/PublisherStubSettings.java | 10 ++++- .../v1/stub/SchemaServiceStubSettings.java | 10 ++++- .../v1/stub/SubscriberStubSettings.java | 10 ++++- .../v1beta1/stub/CloudRedisStubSettings.java | 12 +++-- .../storage/v2/stub/StorageStubSettings.java | 10 ++++- 35 files changed, 277 insertions(+), 138 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java index 108edebea3..ea15f8bb62 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java @@ -97,6 +97,7 @@ import com.google.api.generator.gapic.model.Service; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.base.Preconditions; +import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; @@ -1140,18 +1141,21 @@ private List createDefaultHelperAndGetterMethods( TypeNode returnType; // Create the getServiceName method. - returnType = TypeNode.STRING; - javaMethods.add( - MethodDefinition.builder() - .setHeaderCommentStatements(SettingsCommentComposer.DEFAULT_SERVICE_NAME_METHOD_COMMENT) - .setIsOverride(false) - .setScope(ScopeNode.PUBLIC) - .setIsStatic(true) - .setReturnType(returnType) - .setName("getServiceName") - .setReturnExpr( - ValueExpr.withValue(StringObjectValue.withValue(service.hostServiceName()))) - .build()); + if (!Strings.isNullOrEmpty(service.hostServiceName())) { + returnType = TypeNode.STRING; + javaMethods.add( + MethodDefinition.builder() + .setHeaderCommentStatements( + SettingsCommentComposer.DEFAULT_SERVICE_NAME_METHOD_COMMENT) + .setIsOverride(true) + .setScope(ScopeNode.PUBLIC) + .setIsStatic(false) + .setReturnType(returnType) + .setName("getServiceName") + .setReturnExpr( + ValueExpr.withValue(StringObjectValue.withValue(service.hostServiceName()))) + .build()); + } // Create the defaultExecutorProviderBuilder method. returnType = @@ -1173,6 +1177,20 @@ private List createDefaultHelperAndGetterMethods( .build()) .build()); + // Create the getDefaultServiceName method. + returnType = TypeNode.STRING; + javaMethods.add( + MethodDefinition.builder() + .setHeaderCommentStatements( + SettingsCommentComposer.DEFAULT_SERVICE_ENDPOINT_METHOD_COMMENT) + .setScope(ScopeNode.PUBLIC) + .setIsStatic(true) + .setReturnType(returnType) + .setName("getDefaultServiceName") + .setReturnExpr( + ValueExpr.withValue(StringObjectValue.withValue(service.hostServiceName()))) + .build()); + // Create the getDefaultEndpoint method. returnType = TypeNode.STRING; javaMethods.add( @@ -1910,7 +1928,8 @@ protected MethodDefinition createNestedClassCreateDefaultMethod( MethodInvocationExpr.builder() .setExprReferenceExpr(builderVarExpr) .setMethodName("setServiceName") - .setArguments(MethodInvocationExpr.builder().setMethodName("getServiceName").build()) + .setArguments( + MethodInvocationExpr.builder().setMethodName("getDefaultServiceName").build()) .build()); bodyStatements.addAll( bodyExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden index eedfbfb78b..8f9a38625a 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden @@ -102,16 +102,16 @@ public class DeprecatedServiceStubSettings extends StubSettings { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the default service name. */ - public static String getServiceName() { - return ""; - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return ""; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -491,7 +491,7 @@ public class EchoStubSettings extends StubSettings { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden index b5284bb083..d87485f69b 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden @@ -423,7 +423,8 @@ public class LoggingServiceV2StubSettings extends StubSettings { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "pubsub"; } @@ -441,6 +442,11 @@ public class PublisherStubSettings extends StubSettings { return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "pubsub"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "pubsub.googleapis.com:443"; @@ -668,7 +674,7 @@ public class PublisherStubSettings extends StubSettings { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden index c6e0cc1cab..90cc24af2d 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden @@ -301,16 +301,16 @@ public class EchoStubSettings extends StubSettings { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the default service name. */ - public static String getServiceName() { - return ""; - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return ""; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -519,7 +519,7 @@ public class EchoStubSettings extends StubSettings { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -532,7 +532,7 @@ public class EchoStubSettings extends StubSettings { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden index 5916012380..46e2079d3e 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden @@ -99,16 +99,16 @@ public class WickedStubSettings extends StubSettings { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the default service name. */ - public static String getServiceName() { - return ""; - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return ""; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -238,7 +238,7 @@ public class WickedStubSettings extends StubSettings { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden index c0e2014a15..104858a152 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden @@ -131,16 +131,16 @@ public class ComplianceStubSettings extends StubSettings "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the default service name. */ - public static String getServiceName() { - return ""; - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return ""; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -309,7 +309,7 @@ public class ComplianceStubSettings extends StubSettings builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/gax-java/gax/clirr-ignored-differences.xml b/gax-java/gax/clirr-ignored-differences.xml index f4762a06ea..f86c752bce 100644 --- a/gax-java/gax/clirr-ignored-differences.xml +++ b/gax-java/gax/clirr-ignored-differences.xml @@ -48,10 +48,4 @@ com/google/api/gax/rpc/ApiCallContext * getEndpointContext(*) - - - 7002 - com/google/api/gax/rpc/StubSettings - * getServiceName() - diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java index 4594448c35..0706ab5b53 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java @@ -262,7 +262,7 @@ public static ClientContext create(StubSettings settings) throws IOException { .setInternalHeaders(ImmutableMap.copyOf(settings.getInternalHeaderProvider().getHeaders())) .setClock(clock) .setDefaultCallContext(defaultCallContext) - .setServiceName(endpointContext.serviceName()) + .setServiceName(settings.getServiceName()) .setUniverseDomain(settings.getUniverseDomain()) .setEndpoint(settings.getEndpoint()) .setQuotaProjectId(settings.getQuotaProjectId()) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index c2b23b046c..a5db99641d 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -148,6 +148,12 @@ public final ApiClock getClock() { return clock; } + // Meant to be shared between StubSettings and ClientContext. + @InternalApi + public String getServiceName() { + return ""; + } + public final String getUniverseDomain() { return endpointContext.resolvedUniverseDomain(); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java index 1ebbbfeeb5..44f8a7d3e9 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java @@ -273,16 +273,16 @@ public ComplianceStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the default service name. */ - public static String getServiceName() { - return ""; - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return ""; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -523,7 +523,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -536,7 +536,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java index ae758aeede..efd6dc15ee 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java @@ -432,16 +432,16 @@ public EchoStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the default service name. */ - public static String getServiceName() { - return ""; - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return ""; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -703,7 +703,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -716,7 +716,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java index fd24d379fe..53e23bdb67 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java @@ -303,16 +303,16 @@ public IdentityStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the default service name. */ - public static String getServiceName() { - return ""; - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return ""; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -531,7 +531,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -544,7 +544,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java index 830da9b821..7a7eed9fcb 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java @@ -445,16 +445,16 @@ public MessagingStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the default service name. */ - public static String getServiceName() { - return ""; - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return ""; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -739,7 +739,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -752,7 +752,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java index 9fe432e421..95ed94c256 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java @@ -268,16 +268,16 @@ public SequenceServiceStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the default service name. */ - public static String getServiceName() { - return ""; - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return ""; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -514,7 +514,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -527,7 +527,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java index a1d8859686..eab7e18b0f 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java @@ -385,16 +385,16 @@ public TestingStub createStub() throws IOException { "Transport not supported: %s", getTransportChannelProvider().getTransportName())); } - /** Returns the default service name. */ - public static String getServiceName() { - return ""; - } - /** Returns a builder for the default ExecutorProvider for this service. */ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder() { return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return ""; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -619,7 +619,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -632,7 +632,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java index c71a7f38b7..1272ff0df1 100644 --- a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java @@ -183,7 +183,8 @@ public ConnectionServiceStub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "apigeeconnect"; } @@ -192,6 +193,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "apigeeconnect"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "apigeeconnect.googleapis.com:443"; @@ -350,7 +356,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -363,7 +369,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java index 4d3ed42f0c..5e7be6bf3c 100644 --- a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java @@ -103,7 +103,8 @@ public TetherStub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "apigeeconnect"; } @@ -112,6 +113,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "apigeeconnect"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "apigeeconnect.googleapis.com:443"; @@ -230,7 +236,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java b/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java index 781f8afa74..201fad4ec4 100644 --- a/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java +++ b/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java @@ -572,7 +572,8 @@ public AssetServiceStub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "cloudasset"; } @@ -581,6 +582,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "cloudasset"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "cloudasset.googleapis.com:443"; @@ -964,7 +970,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -977,7 +983,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java b/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java index dc0e98be1e..4979108acb 100644 --- a/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java +++ b/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java @@ -167,7 +167,8 @@ public BigtableStub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "bigtable"; } @@ -176,6 +177,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "bigtable"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "bigtable.googleapis.com:443"; @@ -386,7 +392,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java index e2a221ac9e..28283b911a 100644 --- a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java +++ b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java @@ -290,7 +290,8 @@ public AddressesStub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "compute"; } @@ -299,6 +300,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "compute"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "compute.googleapis.com:443"; @@ -466,7 +472,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java index 68a086bb32..9b8b6bc84e 100644 --- a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java +++ b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java @@ -115,7 +115,8 @@ public RegionOperationsStub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "compute"; } @@ -124,6 +125,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "compute"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "compute.googleapis.com:443"; @@ -269,7 +275,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java b/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java index d28d807c3b..7863f670fe 100644 --- a/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java +++ b/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java @@ -141,7 +141,8 @@ public IamCredentialsStub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "iamcredentials"; } @@ -150,6 +151,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "iamcredentials"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "iamcredentials.googleapis.com:443"; @@ -328,7 +334,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -341,7 +347,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java b/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java index d1adf31688..5716195e88 100644 --- a/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java +++ b/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java @@ -120,7 +120,8 @@ public IAMPolicyStub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "iam-meta-api"; } @@ -129,6 +130,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "iam-meta-api"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "iam-meta-api.googleapis.com:443"; @@ -267,7 +273,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java b/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java index 1a4d8f6501..cf7b9b2d07 100644 --- a/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java +++ b/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java @@ -640,7 +640,8 @@ public KeyManagementServiceStub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "cloudkms"; } @@ -649,6 +650,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "cloudkms"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "cloudkms.googleapis.com:443"; @@ -979,7 +985,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java b/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java index a21cc8c32e..eb92ff8203 100644 --- a/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java +++ b/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java @@ -307,7 +307,8 @@ public LibraryServiceStub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "library-example"; } @@ -316,6 +317,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "library-example"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "library-example.googleapis.com:443"; @@ -551,7 +557,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -564,7 +570,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java index 422ca44b7c..61dadec448 100644 --- a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java +++ b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java @@ -548,7 +548,8 @@ public ConfigServiceV2Stub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "logging"; } @@ -557,6 +558,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "logging"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "logging.googleapis.com:443"; @@ -873,7 +879,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java index 27fbef23ee..c09c0bb704 100644 --- a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java +++ b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java @@ -439,7 +439,8 @@ public LoggingServiceV2Stub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "logging"; } @@ -448,6 +449,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "logging"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "logging.googleapis.com:443"; @@ -643,7 +649,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java index f474161483..77edf80962 100644 --- a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java +++ b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java @@ -207,7 +207,8 @@ public MetricsServiceV2Stub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "logging"; } @@ -216,6 +217,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "logging"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "logging.googleapis.com:443"; @@ -388,7 +394,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java index 72a852572c..b1e4b7b04a 100644 --- a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java +++ b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java @@ -473,7 +473,8 @@ public PublisherStub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "pubsub"; } @@ -482,6 +483,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "pubsub"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "pubsub.googleapis.com:443"; @@ -728,7 +734,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java index ed8d64d1f8..e1974d158d 100644 --- a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java +++ b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java @@ -332,7 +332,8 @@ public SchemaServiceStub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "pubsub"; } @@ -341,6 +342,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "pubsub"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "pubsub.googleapis.com:443"; @@ -543,7 +549,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java index f151095091..01361b704f 100644 --- a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java +++ b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java @@ -378,7 +378,8 @@ public SubscriberStub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "pubsub"; } @@ -387,6 +388,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "pubsub"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "pubsub.googleapis.com:443"; @@ -670,7 +676,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java index 9a048669c8..060296dedc 100644 --- a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java +++ b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java @@ -324,7 +324,8 @@ public CloudRedisStub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "redis"; } @@ -333,6 +334,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "redis"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "redis.googleapis.com:443"; @@ -601,7 +607,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -614,7 +620,7 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java b/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java index 9b50a62d9b..52380034f0 100644 --- a/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java +++ b/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java @@ -590,7 +590,8 @@ public StorageStub createStub() throws IOException { } /** Returns the default service name. */ - public static String getServiceName() { + @Override + public String getServiceName() { return "storage"; } @@ -599,6 +600,11 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } + /** Returns the default service endpoint. */ + public static String getDefaultServiceName() { + return "storage"; + } + /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "storage.googleapis.com:443"; @@ -923,7 +929,7 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getServiceName()); + builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } From 18b32ccc3358da12f90d1953126cfb5888269207 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 19 Mar 2024 21:54:13 -0400 Subject: [PATCH 05/34] chore: Build default EndpointContext in CallContext --- .../main/java/com/google/api/gax/grpc/GrpcCallContext.java | 7 ++++++- .../com/google/api/gax/httpjson/HttpJsonCallContext.java | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java index 71f3add482..178a76ad6c 100644 --- a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java +++ b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java @@ -152,7 +152,12 @@ private GrpcCallContext( this.options = Preconditions.checkNotNull(options); this.retrySettings = retrySettings; this.retryableCodes = retryableCodes == null ? null : ImmutableSet.copyOf(retryableCodes); - this.endpointContext = endpointContext; + try { + this.endpointContext = + endpointContext == null ? EndpointContext.newBuilder().build() : endpointContext; + } catch (IOException ex) { + throw new RuntimeException(ex); + } } /** diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java index 62d0bb102a..baac79e7ff 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java @@ -133,7 +133,12 @@ private HttpJsonCallContext( this.retrySettings = defaultRetrySettings; this.retryableCodes = defaultRetryableCodes == null ? null : ImmutableSet.copyOf(defaultRetryableCodes); - this.endpointContext = endpointContext; + try { + this.endpointContext = + endpointContext == null ? EndpointContext.newBuilder().build() : endpointContext; + } catch (IOException ex) { + throw new RuntimeException(ex); + } } /** From 015b7143edce8c4cfcc3ca99ee617039d168ba51 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 19 Mar 2024 22:01:01 -0400 Subject: [PATCH 06/34] chore: Update ITEndpointContext --- .../main/java/com/google/api/gax/grpc/GrpcCallContext.java | 2 +- .../com/google/api/gax/httpjson/HttpJsonCallContext.java | 2 +- .../com/google/showcase/v1beta1/it/ITEndpointContext.java | 5 ----- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java index 178a76ad6c..44060a4b4f 100644 --- a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java +++ b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java @@ -140,7 +140,7 @@ private GrpcCallContext( ApiCallContextOptions options, @Nullable RetrySettings retrySettings, @Nullable Set retryableCodes, - EndpointContext endpointContext) { + @Nullable EndpointContext endpointContext) { this.channel = channel; this.credentials = credentials; this.callOptions = Preconditions.checkNotNull(callOptions); diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java index baac79e7ff..6cad7e9afc 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java @@ -121,7 +121,7 @@ private HttpJsonCallContext( ApiTracer tracer, RetrySettings defaultRetrySettings, Set defaultRetryableCodes, - EndpointContext endpointContext) { + @Nullable EndpointContext endpointContext) { this.channel = channel; this.callOptions = callOptions; this.timeout = timeout; diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java index b1592acc9e..2bc3b4c296 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java @@ -13,17 +13,12 @@ /** * This IT tests the different user configurations allowed and their effects on endpoint and * universe domain resolution. - * - *

This test will be enhanced in the future when the settings are able to return the resolved - * endpoint and universe domain values. */ public class ITEndpointContext { private static final String DEFAULT_ENDPOINT = "test.googleapis.com:443"; // Default (no configuration) - // This test is very similar to `endpointResolution_userConfiguration`. This test is kept - // as future enhancements could allow this test to not have to explicitly set the endpoint. @Test public void endpointResolution_default() throws InterruptedException, IOException { EchoClient echoClient = null; From d192f547d5f33d386832d3f5eb750da8e9135a04 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 20 Mar 2024 14:25:39 -0400 Subject: [PATCH 07/34] chore: Set getDefaultServiceName as private scope --- .../common/AbstractServiceStubSettingsClassComposer.java | 7 ++++++- .../grpc/goldens/DeprecatedServiceStubSettings.golden | 6 ++++-- .../gapic/composer/grpc/goldens/EchoStubSettings.golden | 6 ++++-- .../grpc/goldens/LoggingServiceV2StubSettings.golden | 6 ++++-- .../composer/grpc/goldens/PublisherStubSettings.golden | 6 ++++-- .../composer/grpcrest/goldens/EchoStubSettings.golden | 6 ++++-- .../composer/grpcrest/goldens/WickedStubSettings.golden | 6 ++++-- .../composer/rest/goldens/ComplianceStubSettings.golden | 6 ++++-- .../showcase/v1beta1/stub/ComplianceStubSettings.java | 6 ++++-- .../com/google/showcase/v1beta1/stub/EchoStubSettings.java | 6 ++++-- .../google/showcase/v1beta1/stub/IdentityStubSettings.java | 6 ++++-- .../showcase/v1beta1/stub/MessagingStubSettings.java | 6 ++++-- .../showcase/v1beta1/stub/SequenceServiceStubSettings.java | 6 ++++-- .../google/showcase/v1beta1/stub/TestingStubSettings.java | 6 ++++-- .../v1/stub/ConnectionServiceStubSettings.java | 6 ++++-- .../cloud/apigeeconnect/v1/stub/TetherStubSettings.java | 6 ++++-- .../cloud/asset/v1/stub/AssetServiceStubSettings.java | 6 ++++-- .../cloud/bigtable/data/v2/stub/BigtableStubSettings.java | 6 ++++-- .../cloud/compute/v1small/stub/AddressesStubSettings.java | 6 ++++-- .../compute/v1small/stub/RegionOperationsStubSettings.java | 6 ++++-- .../credentials/v1/stub/IamCredentialsStubSettings.java | 6 ++++-- .../src/com/google/iam/v1/stub/IAMPolicyStubSettings.java | 6 ++++-- .../kms/v1/stub/KeyManagementServiceStubSettings.java | 6 ++++-- .../library/v1/stub/LibraryServiceStubSettings.java | 6 ++++-- .../cloud/logging/v2/stub/ConfigServiceV2StubSettings.java | 6 ++++-- .../logging/v2/stub/LoggingServiceV2StubSettings.java | 6 ++++-- .../logging/v2/stub/MetricsServiceV2StubSettings.java | 6 ++++-- .../google/cloud/pubsub/v1/stub/PublisherStubSettings.java | 6 ++++-- .../cloud/pubsub/v1/stub/SchemaServiceStubSettings.java | 6 ++++-- .../cloud/pubsub/v1/stub/SubscriberStubSettings.java | 6 ++++-- .../cloud/redis/v1beta1/stub/CloudRedisStubSettings.java | 6 ++++-- .../com/google/storage/v2/stub/StorageStubSettings.java | 6 ++++-- 32 files changed, 130 insertions(+), 63 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java index c173e47685..8f72ad3193 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java @@ -50,6 +50,7 @@ import com.google.api.generator.engine.ast.AnnotationNode; import com.google.api.generator.engine.ast.AnonymousClassExpr; import com.google.api.generator.engine.ast.AssignmentExpr; +import com.google.api.generator.engine.ast.BlockComment; import com.google.api.generator.engine.ast.CastExpr; import com.google.api.generator.engine.ast.ClassDefinition; import com.google.api.generator.engine.ast.CommentStatement; @@ -1175,12 +1176,16 @@ private List createDefaultHelperAndGetterMethods( MethodDefinition.builder() .setHeaderCommentStatements( SettingsCommentComposer.DEFAULT_SERVICE_ENDPOINT_METHOD_COMMENT) - .setScope(ScopeNode.PUBLIC) + .setScope(ScopeNode.PRIVATE) .setIsStatic(true) .setReturnType(returnType) .setName("getDefaultServiceName") .setReturnExpr( ValueExpr.withValue(StringObjectValue.withValue(service.hostServiceName()))) + .setHeaderCommentStatements( + CommentStatement.withComment( + BlockComment.withComment( + "Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder"))) .build()); // Create the getDefaultEndpoint method. diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden index 1cd5b7edfe..5a4ace6fad 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden @@ -106,8 +106,10 @@ public class DeprecatedServiceStubSettings extends StubSettings { return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return ""; } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden index ac871a233e..7d26f04c64 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden @@ -432,8 +432,10 @@ public class LoggingServiceV2StubSettings extends StubSettings { return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "pubsub"; } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden index 78a2a98ea9..f5698df125 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden @@ -306,8 +306,10 @@ public class EchoStubSettings extends StubSettings { return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return ""; } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden index 12e95f8f3f..8fafbcd03a 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden @@ -104,8 +104,10 @@ public class WickedStubSettings extends StubSettings { return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return ""; } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden index b3830ee070..abce6e4263 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden @@ -136,8 +136,10 @@ public class ComplianceStubSettings extends StubSettings return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return ""; } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java index ac18811ee0..efdfa0f847 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java @@ -278,8 +278,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return ""; } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java index cffce3a732..305464ab63 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java @@ -437,8 +437,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return ""; } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java index 71a2694a33..3791a4af53 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java @@ -308,8 +308,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return ""; } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java index 4b58cff7e8..a7aadd68d9 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java @@ -450,8 +450,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return ""; } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java index 1c9782c064..8c0e852f44 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java @@ -273,8 +273,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return ""; } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java index e06dc6d7c0..a7480253b2 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java @@ -390,8 +390,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return ""; } diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java index 821cf68735..56b708fa4c 100644 --- a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java @@ -193,8 +193,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "apigeeconnect"; } diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java index 22b519a143..2f18051d1d 100644 --- a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java @@ -112,8 +112,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "apigeeconnect"; } diff --git a/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java b/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java index faaa7172ec..9467c8ae96 100644 --- a/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java +++ b/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java @@ -582,8 +582,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "cloudasset"; } diff --git a/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java b/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java index 87c72c1e0b..8a05221831 100644 --- a/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java +++ b/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java @@ -176,8 +176,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "bigtable"; } diff --git a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java index 588b84f2e8..b5a57a6579 100644 --- a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java +++ b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java @@ -299,8 +299,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "compute"; } diff --git a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java index 5b5af86541..052561f26c 100644 --- a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java +++ b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java @@ -124,8 +124,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "compute"; } diff --git a/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java b/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java index 3698e39b00..48b3c97bcc 100644 --- a/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java +++ b/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java @@ -151,8 +151,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "iamcredentials"; } diff --git a/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java b/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java index 1013c9068a..52eb175eb0 100644 --- a/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java +++ b/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java @@ -129,8 +129,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "iam-meta-api"; } diff --git a/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java b/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java index 8c3ff1d939..da8bed6dda 100644 --- a/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java +++ b/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java @@ -649,8 +649,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "cloudkms"; } diff --git a/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java b/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java index 385e37c9ec..058d90ef14 100644 --- a/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java +++ b/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java @@ -317,8 +317,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "library-example"; } diff --git a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java index 9833c7d376..bab8ade45f 100644 --- a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java +++ b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java @@ -557,8 +557,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "logging"; } diff --git a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java index e47e267f3d..7306b42fbb 100644 --- a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java +++ b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java @@ -448,8 +448,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "logging"; } diff --git a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java index 348bf4e98a..9d7abe5bc2 100644 --- a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java +++ b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java @@ -216,8 +216,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "logging"; } diff --git a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java index 08eba273fa..41f7b1d253 100644 --- a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java +++ b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java @@ -482,8 +482,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "pubsub"; } diff --git a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java index 6e8879e8c7..1aa278ca8e 100644 --- a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java +++ b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java @@ -341,8 +341,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "pubsub"; } diff --git a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java index 3f56b081c7..98d567ad3e 100644 --- a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java +++ b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java @@ -387,8 +387,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "pubsub"; } diff --git a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java index ca4fa674f1..f5c45d3db0 100644 --- a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java +++ b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java @@ -334,8 +334,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "redis"; } diff --git a/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java b/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java index 95dfadcc65..8df41f8c61 100644 --- a/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java +++ b/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java @@ -599,8 +599,10 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /** Returns the default service endpoint. */ - public static String getDefaultServiceName() { + /* + * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder + */ + private static String getDefaultServiceName() { return "storage"; } From ef2d11a2703a6209d69299ac59e83eb9556afa9f Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 20 Mar 2024 14:38:30 -0400 Subject: [PATCH 08/34] chore: Add javadoc comments --- .../src/main/java/com/google/api/gax/rpc/ApiCallContext.java | 1 + .../gax/src/main/java/com/google/api/gax/rpc/StubSettings.java | 2 ++ 2 files changed, 3 insertions(+) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ApiCallContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ApiCallContext.java index f35930c82b..e8895c8e84 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ApiCallContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ApiCallContext.java @@ -66,6 +66,7 @@ public interface ApiCallContext extends RetryingContext { /** Returns a new ApiCallContext with the given Endpoint Context. */ ApiCallContext withEndpointContext(EndpointContext endpointContext); + /** Returns the EndpointContext stored in the ApiCallContext */ EndpointContext getEndpointContext(); /** diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index a5db99641d..60b94c26dc 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -154,10 +154,12 @@ public String getServiceName() { return ""; } + /** @return the fully resolved universe domain used by the client */ public final String getUniverseDomain() { return endpointContext.resolvedUniverseDomain(); } + /** @return the fully resolved endpoint used by the client */ public String getEndpoint() { return endpointContext.resolvedEndpoint(); } From 15421461edcd0fadf489d9e8b91556e2b582dda9 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 20 Mar 2024 14:48:01 -0400 Subject: [PATCH 09/34] chore: Add comments for building the EndpointContext --- .../src/main/java/com/google/api/gax/grpc/GrpcCallContext.java | 2 ++ .../java/com/google/api/gax/httpjson/HttpJsonCallContext.java | 2 ++ .../src/main/java/com/google/api/gax/rpc/ClientContext.java | 3 ++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java index 44060a4b4f..791f923940 100644 --- a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java +++ b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java @@ -152,6 +152,8 @@ private GrpcCallContext( this.options = Preconditions.checkNotNull(options); this.retrySettings = retrySettings; this.retryableCodes = retryableCodes == null ? null : ImmutableSet.copyOf(retryableCodes); + // Attempt to create an empty, non-functioning EndpointContext by default (if set to null). + // This will be configured and updated by the client with user configurations. try { this.endpointContext = endpointContext == null ? EndpointContext.newBuilder().build() : endpointContext; diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java index 6cad7e9afc..67ed78302d 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java @@ -133,6 +133,8 @@ private HttpJsonCallContext( this.retrySettings = defaultRetrySettings; this.retryableCodes = defaultRetryableCodes == null ? null : ImmutableSet.copyOf(defaultRetryableCodes); + // Attempt to create an empty, non-functioning EndpointContext by default (if set to null). + // This will be configured and updated by the client with user configurations. try { this.endpointContext = endpointContext == null ? EndpointContext.newBuilder().build() : endpointContext; diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java index 0706ab5b53..da3c72e387 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java @@ -161,7 +161,8 @@ public static ClientContext create(StubSettings settings) throws IOException { Credentials credentials = settings.getCredentialsProvider().getCredentials(); boolean usingGDCH = credentials instanceof GdchCredentials; - // GDC-H is determined by the Credentials passed in + // GDC-H is determined by the Credentials passed in. The Credentials object is resolved here + // and must be set to the EndpointContext. EndpointContext endpointContext = settings.getEndpointContext().toBuilder().setUsingGDCH(usingGDCH).build(); String endpoint = endpointContext.resolvedEndpoint(); From d078f785c2d822f3867b2df6462372b27782e023 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 20 Mar 2024 16:17:59 -0400 Subject: [PATCH 10/34] chore: Add docs for InternalApi --- .../com/google/api/gax/rpc/ClientSettings.java | 4 ++++ .../showcase/v1beta1/it/ITEndpointContext.java | 15 ++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientSettings.java index fb366687b3..a4d5a2a911 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientSettings.java @@ -253,6 +253,10 @@ public B setUniverseDomain(String universeDomain) { return self(); } + /** + * Marked for internal use as it's not intended to be configured by users and is visible solely + * for testing purposes. + */ @InternalApi public B setServiceName(String serviceName) { stubSettings.setServiceName(serviceName); diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java index 2bc3b4c296..e1f42ca78b 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java @@ -13,6 +13,13 @@ /** * This IT tests the different user configurations allowed and their effects on endpoint and * universe domain resolution. + * + *

Inside all of the test cases below, we must explicitly configure serviceName. Normally this + * should not be configured by the user at all, but showcase clients do not have a serviceName. We + * must set this explicitly via the ClientSettings via {@link com.google.api.gax.rpc.ClientSettings.Builder#setServiceName(String)} + * as setting this via {@link com.google.api.gax.rpc.StubSettings.Builder#setServiceName(String)} and passing thee StubSettings + * to the client will result in a null ClientSettings. Specifically, doing `Client.create(stubSettings.createStub())` + * will result in a null ClientSettings when doing `Client.getSettings().get(Endpoint|UniverseDomain)`. */ public class ITEndpointContext { @@ -23,11 +30,9 @@ public class ITEndpointContext { public void endpointResolution_default() throws InterruptedException, IOException { EchoClient echoClient = null; try { - // This is not how a client is created by default: - // 1. The default usage is EchoClient.create(), but for showcase tests run in CI, the - // client must be supplied with Credentials. - // 2. Configure the serviceName. Normally this should be configured by the user at all, - // but showcase clients do not have a serviceName. + // This is not how a client is created by default. The default usage is EchoClient.create(), + // but for showcase tests run in CI, the client must be supplied explicitly supplied with + // NoCredentials. EchoSettings echoSettings = EchoSettings.newBuilder() .setCredentialsProvider(NoCredentialsProvider.create()) From a51d5793285bb1da36ebf8c177a4eb1fe71bbd97 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 20 Mar 2024 16:23:07 -0400 Subject: [PATCH 11/34] chore: Fix docs for Showcase ITs --- .../com/google/showcase/v1beta1/it/ITEndpointContext.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java index e1f42ca78b..2f991a2a03 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java @@ -17,9 +17,10 @@ *

Inside all of the test cases below, we must explicitly configure serviceName. Normally this * should not be configured by the user at all, but showcase clients do not have a serviceName. We * must set this explicitly via the ClientSettings via {@link com.google.api.gax.rpc.ClientSettings.Builder#setServiceName(String)} - * as setting this via {@link com.google.api.gax.rpc.StubSettings.Builder#setServiceName(String)} and passing thee StubSettings + * as setting this via {@link com.google.api.gax.rpc.StubSettings.Builder#setServiceName(String)} and passing the StubSettings * to the client will result in a null ClientSettings. Specifically, doing `Client.create(stubSettings.createStub())` - * will result in a null ClientSettings when doing `Client.getSettings().get(Endpoint|UniverseDomain)`. + * will result in a NPE when doing `Client.getSettings().get(Endpoint|UniverseDomain)` as the ClientSettings is + * null. */ public class ITEndpointContext { From c156716ee08dfb9f2a8c1ec9a65424b0ffc2d056 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 20 Mar 2024 17:00:13 -0400 Subject: [PATCH 12/34] chore: Remove setter from ClientSettings.Builder --- .../google/api/gax/grpc/GrpcCallContext.java | 4 +- .../api/gax/httpjson/HttpJsonCallContext.java | 4 +- .../com/google/api/gax/rpc/ClientContext.java | 4 +- .../google/api/gax/rpc/ClientSettings.java | 11 ---- .../com/google/api/gax/rpc/StubSettings.java | 2 + .../v1beta1/it/ITEndpointContext.java | 64 ++++++++++++++----- 6 files changed, 58 insertions(+), 31 deletions(-) diff --git a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java index 791f923940..232e6aa306 100644 --- a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java +++ b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java @@ -153,7 +153,9 @@ private GrpcCallContext( this.retrySettings = retrySettings; this.retryableCodes = retryableCodes == null ? null : ImmutableSet.copyOf(retryableCodes); // Attempt to create an empty, non-functioning EndpointContext by default (if set to null). - // This will be configured and updated by the client with user configurations. + // This will be configured and updated by the client with user configurations. Attempts to + // use the default endpointContext (not updated with configurations) will result in incorrect + // data back. try { this.endpointContext = endpointContext == null ? EndpointContext.newBuilder().build() : endpointContext; diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java index 67ed78302d..df59bf1803 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java @@ -134,7 +134,9 @@ private HttpJsonCallContext( this.retryableCodes = defaultRetryableCodes == null ? null : ImmutableSet.copyOf(defaultRetryableCodes); // Attempt to create an empty, non-functioning EndpointContext by default (if set to null). - // This will be configured and updated by the client with user configurations. + // This will be configured and updated by the client with user configurations. Attempts to + // use the default endpointContext (not updated with configurations) will result in incorrect + // data back. try { this.endpointContext = endpointContext == null ? EndpointContext.newBuilder().build() : endpointContext; diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java index da3c72e387..5049512169 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java @@ -161,8 +161,8 @@ public static ClientContext create(StubSettings settings) throws IOException { Credentials credentials = settings.getCredentialsProvider().getCredentials(); boolean usingGDCH = credentials instanceof GdchCredentials; - // GDC-H is determined by the Credentials passed in. The Credentials object is resolved here - // and must be set to the EndpointContext. + // Client can determine if the GDC-H is being used via the Credentials. The Credentials object + // is resolved here and must be set to the EndpointContext. EndpointContext endpointContext = settings.getEndpointContext().toBuilder().setUsingGDCH(usingGDCH).build(); String endpoint = endpointContext.resolvedEndpoint(); diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientSettings.java index a4d5a2a911..25929756f5 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientSettings.java @@ -31,7 +31,6 @@ import com.google.api.core.ApiClock; import com.google.api.core.ApiFunction; -import com.google.api.core.InternalApi; import com.google.api.gax.core.CredentialsProvider; import com.google.api.gax.core.ExecutorProvider; import com.google.common.base.MoreObjects; @@ -253,16 +252,6 @@ public B setUniverseDomain(String universeDomain) { return self(); } - /** - * Marked for internal use as it's not intended to be configured by users and is visible solely - * for testing purposes. - */ - @InternalApi - public B setServiceName(String serviceName) { - stubSettings.setServiceName(serviceName); - return self(); - } - public B setEndpoint(String endpoint) { stubSettings.setEndpoint(endpoint); return self(); diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index 60b94c26dc..2903fdced2 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -111,6 +111,8 @@ protected StubSettings(Builder builder) { this.deprecatedExecutorProviderSet = builder.deprecatedExecutorProviderSet; this.gdchApiAudience = builder.gdchApiAudience; this.universeDomain = builder.universeDomain; + // Attempt to build the EndpointContext from the Builder based on all the + // user configurations passed in to the Builder. try { this.endpointContext = builder.endpointContextBuilder.build(); } catch (IOException e) { diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java index 2f991a2a03..e3d42f0492 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java @@ -1,11 +1,13 @@ package com.google.showcase.v1beta1.it; import com.google.api.gax.core.NoCredentialsProvider; +import com.google.api.gax.rpc.ClientContext; import com.google.auth.oauth2.GoogleCredentials; import com.google.common.truth.Truth; import com.google.showcase.v1beta1.EchoClient; import com.google.showcase.v1beta1.EchoSettings; import com.google.showcase.v1beta1.it.util.TestClientInitializer; +import com.google.showcase.v1beta1.stub.EchoStubSettings; import java.io.IOException; import java.util.concurrent.TimeUnit; import org.junit.Test; @@ -13,17 +15,51 @@ /** * This IT tests the different user configurations allowed and their effects on endpoint and * universe domain resolution. - * - *

Inside all of the test cases below, we must explicitly configure serviceName. Normally this - * should not be configured by the user at all, but showcase clients do not have a serviceName. We - * must set this explicitly via the ClientSettings via {@link com.google.api.gax.rpc.ClientSettings.Builder#setServiceName(String)} - * as setting this via {@link com.google.api.gax.rpc.StubSettings.Builder#setServiceName(String)} and passing the StubSettings - * to the client will result in a null ClientSettings. Specifically, doing `Client.create(stubSettings.createStub())` - * will result in a NPE when doing `Client.getSettings().get(Endpoint|UniverseDomain)` as the ClientSettings is - * null. */ public class ITEndpointContext { + /* + * Inside the test cases below, we must explicitly configure serviceName. Normally this should not be + * configured by the user at all, but showcase clients do not have a serviceName. This EchoSettings wrapper will + * set the ServiceName by defaultWithout this ClientSettings wrapper, we must set this explicitly via the ClientSettings + * via {@link com.google.api.gax.rpc.ClientSettings.Builder#setServiceName(String)} as setting this via + * {@link com.google.api.gax.rpc.StubSettings.Builder#setServiceName(String)} and passing the StubSettings + * to the client will result in a null ClientSettings. Specifically, doing `Client.create(stubSettings.createStub())` + * will result in a NPE when doing `Client.getSettings().get(Endpoint|UniverseDomain)` as the ClientSettings is + * null. + */ + private static class ExtendedEchoSettings extends EchoSettings { + + protected ExtendedEchoSettings(Builder settingsBuilder) throws IOException { + super(settingsBuilder); + } + + public static EchoSettings.Builder newBuilder() { + return ExtendedEchoSettings.Builder.createDefault(); + } + + public static class Builder extends EchoSettings.Builder { + protected Builder() throws IOException {} + + private static ExtendedEchoSettings.Builder createDefault() { + return new ExtendedEchoSettings.Builder( + EchoStubSettings.newBuilder().setServiceName("test")); + } + + protected Builder(ClientContext clientContext) { + super(clientContext); + } + + protected Builder(EchoSettings settings) { + super(settings); + } + + protected Builder(EchoStubSettings.Builder stubSettings) { + super(stubSettings); + } + } + } + private static final String DEFAULT_ENDPOINT = "test.googleapis.com:443"; // Default (no configuration) @@ -35,9 +71,8 @@ public void endpointResolution_default() throws InterruptedException, IOExceptio // but for showcase tests run in CI, the client must be supplied explicitly supplied with // NoCredentials. EchoSettings echoSettings = - EchoSettings.newBuilder() + ExtendedEchoSettings.newBuilder() .setCredentialsProvider(NoCredentialsProvider.create()) - .setServiceName("test") .build(); echoClient = EchoClient.create(echoSettings); Truth.assertThat(echoClient.getSettings().getEndpoint()).isEqualTo(DEFAULT_ENDPOINT); @@ -59,9 +94,8 @@ public void endpointResolution_userSetEndpoint() throws InterruptedException, IO EchoClient echoClient = null; try { EchoSettings echoSettings = - EchoSettings.newBuilder() + ExtendedEchoSettings.newBuilder() .setCredentialsProvider(NoCredentialsProvider.create()) - .setServiceName("test") .setEndpoint(customEndpoint) .build(); echoClient = EchoClient.create(echoSettings); @@ -83,9 +117,8 @@ public void endpointResolution_userSetUniverseDomain() throws IOException, Inter EchoClient echoClient = null; try { EchoSettings echoSettings = - EchoSettings.newBuilder() + ExtendedEchoSettings.newBuilder() .setCredentialsProvider(NoCredentialsProvider.create()) - .setServiceName("test") .setUniverseDomain(customUniverseDomain) .build(); echoClient = EchoClient.create(echoSettings); @@ -110,9 +143,8 @@ public void endpointResolution_userSetEndpointAndUniverseDomain() EchoClient echoClient = null; try { EchoSettings echoSettings = - EchoSettings.newBuilder() + ExtendedEchoSettings.newBuilder() .setCredentialsProvider(NoCredentialsProvider.create()) - .setServiceName("test") .setEndpoint(customEndpoint) .setUniverseDomain(customUniverseDomain) .build(); From 55b69e36b47ec1f852112456936b15bd24ebb923 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 20 Mar 2024 17:04:36 -0400 Subject: [PATCH 13/34] chore: Fix docs --- .../java/com/google/showcase/v1beta1/it/ITEndpointContext.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java index e3d42f0492..ecf30ef16d 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java @@ -21,7 +21,7 @@ public class ITEndpointContext { /* * Inside the test cases below, we must explicitly configure serviceName. Normally this should not be * configured by the user at all, but showcase clients do not have a serviceName. This EchoSettings wrapper will - * set the ServiceName by defaultWithout this ClientSettings wrapper, we must set this explicitly via the ClientSettings + * set the ServiceName by default. Without this ClientSettings wrapper, we must set this explicitly via the ClientSettings * via {@link com.google.api.gax.rpc.ClientSettings.Builder#setServiceName(String)} as setting this via * {@link com.google.api.gax.rpc.StubSettings.Builder#setServiceName(String)} and passing the StubSettings * to the client will result in a null ClientSettings. Specifically, doing `Client.create(stubSettings.createStub())` From 030db51a1446db6dc33d808e3cb0c54bbcacf6bc Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 20 Mar 2024 22:58:58 -0400 Subject: [PATCH 14/34] chore: Refactor EndpointContext builder --- .../com/google/api/gax/rpc/StubSettings.java | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index 2903fdced2..1ee540663d 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -436,9 +436,8 @@ protected B setInternalHeaderProvider(HeaderProvider internalHeaderProvider) { */ public B setTransportChannelProvider(TransportChannelProvider transportChannelProvider) { this.transportChannelProvider = transportChannelProvider; - this.endpointContextBuilder = - this.endpointContextBuilder.setTransportChannelProviderEndpoint( - this.transportChannelProvider.getEndpoint()); + this.endpointContextBuilder.setTransportChannelProviderEndpoint( + this.transportChannelProvider.getEndpoint()); return self(); } @@ -469,13 +468,13 @@ public B setClock(ApiClock clock) { @InternalApi public B setServiceName(String serviceName) { this.serviceName = serviceName; - this.endpointContextBuilder = this.endpointContextBuilder.setServiceName(serviceName); + this.endpointContextBuilder.setServiceName(serviceName); return self(); } public B setUniverseDomain(String universeDomain) { this.universeDomain = universeDomain; - this.endpointContextBuilder = this.endpointContextBuilder.setUniverseDomain(universeDomain); + this.endpointContextBuilder.setUniverseDomain(universeDomain); return self(); } @@ -485,24 +484,22 @@ public B setEndpoint(String endpoint) { if (this.endpoint != null && this.mtlsEndpoint == null) { this.mtlsEndpoint = this.endpoint.replace("googleapis.com", "mtls.googleapis.com"); } - this.endpointContextBuilder = - this.endpointContextBuilder - .setClientSettingsEndpoint(endpoint) - .setSwitchToMtlsEndpointAllowed(false) - .setMtlsEndpoint(this.mtlsEndpoint); + this.endpointContextBuilder + .setClientSettingsEndpoint(endpoint) + .setSwitchToMtlsEndpointAllowed(false) + .setMtlsEndpoint(this.mtlsEndpoint); return self(); } protected B setSwitchToMtlsEndpointAllowed(boolean switchToMtlsEndpointAllowed) { this.switchToMtlsEndpointAllowed = switchToMtlsEndpointAllowed; - this.endpointContextBuilder = - this.endpointContextBuilder.setSwitchToMtlsEndpointAllowed(switchToMtlsEndpointAllowed); + this.endpointContextBuilder.setSwitchToMtlsEndpointAllowed(switchToMtlsEndpointAllowed); return self(); } public B setMtlsEndpoint(String mtlsEndpoint) { this.mtlsEndpoint = mtlsEndpoint; - this.endpointContextBuilder = this.endpointContextBuilder.setMtlsEndpoint(mtlsEndpoint); + this.endpointContextBuilder.setMtlsEndpoint(mtlsEndpoint); return self(); } From 4953001349ece90f337d395e822f430736aba73f Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 21 Mar 2024 12:15:33 -0400 Subject: [PATCH 15/34] chore: Remove getDefaultServiceName() --- ...tractServiceStubSettingsClassComposer.java | 26 ------------------- .../DeprecatedServiceStubSettings.golden | 8 ------ .../grpc/goldens/EchoStubSettings.golden | 8 ------ .../LoggingServiceV2StubSettings.golden | 8 ------ .../grpc/goldens/PublisherStubSettings.golden | 8 ------ .../grpcrest/goldens/EchoStubSettings.golden | 9 ------- .../goldens/WickedStubSettings.golden | 8 ------ .../goldens/ComplianceStubSettings.golden | 8 ------ .../com/google/api/gax/rpc/ClientContext.java | 7 ++++- .../com/google/api/gax/rpc/StubSettings.java | 8 ++++-- .../v1beta1/stub/ComplianceStubSettings.java | 9 ------- .../v1beta1/stub/EchoStubSettings.java | 9 ------- .../v1beta1/stub/IdentityStubSettings.java | 9 ------- .../v1beta1/stub/MessagingStubSettings.java | 9 ------- .../stub/SequenceServiceStubSettings.java | 9 ------- .../v1beta1/stub/TestingStubSettings.java | 9 ------- .../stub/ConnectionServiceStubSettings.java | 9 ------- .../v1/stub/TetherStubSettings.java | 8 ------ .../v1/stub/AssetServiceStubSettings.java | 9 ------- .../data/v2/stub/BigtableStubSettings.java | 8 ------ .../v1small/stub/AddressesStubSettings.java | 8 ------ .../stub/RegionOperationsStubSettings.java | 8 ------ .../v1/stub/IamCredentialsStubSettings.java | 9 ------- .../iam/v1/stub/IAMPolicyStubSettings.java | 8 ------ .../KeyManagementServiceStubSettings.java | 8 ------ .../v1/stub/LibraryServiceStubSettings.java | 9 ------- .../v2/stub/ConfigServiceV2StubSettings.java | 8 ------ .../v2/stub/LoggingServiceV2StubSettings.java | 8 ------ .../v2/stub/MetricsServiceV2StubSettings.java | 8 ------ .../pubsub/v1/stub/PublisherStubSettings.java | 8 ------ .../v1/stub/SchemaServiceStubSettings.java | 8 ------ .../v1/stub/SubscriberStubSettings.java | 8 ------ .../v1beta1/stub/CloudRedisStubSettings.java | 9 ------- .../storage/v2/stub/StorageStubSettings.java | 8 ------ 34 files changed, 12 insertions(+), 289 deletions(-) diff --git a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java index 8f72ad3193..f8c00131be 100644 --- a/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java +++ b/gapic-generator-java/src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceStubSettingsClassComposer.java @@ -50,7 +50,6 @@ import com.google.api.generator.engine.ast.AnnotationNode; import com.google.api.generator.engine.ast.AnonymousClassExpr; import com.google.api.generator.engine.ast.AssignmentExpr; -import com.google.api.generator.engine.ast.BlockComment; import com.google.api.generator.engine.ast.CastExpr; import com.google.api.generator.engine.ast.ClassDefinition; import com.google.api.generator.engine.ast.CommentStatement; @@ -1170,24 +1169,6 @@ private List createDefaultHelperAndGetterMethods( .build()) .build()); - // Create the getDefaultServiceName method. - returnType = TypeNode.STRING; - javaMethods.add( - MethodDefinition.builder() - .setHeaderCommentStatements( - SettingsCommentComposer.DEFAULT_SERVICE_ENDPOINT_METHOD_COMMENT) - .setScope(ScopeNode.PRIVATE) - .setIsStatic(true) - .setReturnType(returnType) - .setName("getDefaultServiceName") - .setReturnExpr( - ValueExpr.withValue(StringObjectValue.withValue(service.hostServiceName()))) - .setHeaderCommentStatements( - CommentStatement.withComment( - BlockComment.withComment( - "Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder"))) - .build()); - // Create the getDefaultEndpoint method. returnType = TypeNode.STRING; javaMethods.add( @@ -1921,13 +1902,6 @@ protected MethodDefinition createNestedClassCreateDefaultMethod( ValueExpr.withValue( PrimitiveValue.builder().setType(TypeNode.BOOLEAN).setValue("true").build())) .build()); - bodyExprs.add( - MethodInvocationExpr.builder() - .setExprReferenceExpr(builderVarExpr) - .setMethodName("setServiceName") - .setArguments( - MethodInvocationExpr.builder().setMethodName("getDefaultServiceName").build()) - .build()); bodyStatements.addAll( bodyExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList())); bodyStatements.add(EMPTY_LINE_STATEMENT); diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden index 5a4ace6fad..d5bbe0d893 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/DeprecatedServiceStubSettings.golden @@ -106,13 +106,6 @@ public class DeprecatedServiceStubSettings extends StubSettings { return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return ""; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -492,7 +485,6 @@ public class EchoStubSettings extends StubSettings { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden index 7d26f04c64..264f6da6ff 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpc/goldens/LoggingServiceV2StubSettings.golden @@ -432,13 +432,6 @@ public class LoggingServiceV2StubSettings extends StubSettings { return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "pubsub"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "pubsub.googleapis.com:443"; @@ -674,7 +667,6 @@ public class PublisherStubSettings extends StubSettings { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden index f5698df125..fefa7643ba 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/EchoStubSettings.golden @@ -306,13 +306,6 @@ public class EchoStubSettings extends StubSettings { return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return ""; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -519,7 +512,6 @@ public class EchoStubSettings extends StubSettings { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -532,7 +524,6 @@ public class EchoStubSettings extends StubSettings { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden index 8fafbcd03a..9a376f484a 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/grpcrest/goldens/WickedStubSettings.golden @@ -104,13 +104,6 @@ public class WickedStubSettings extends StubSettings { return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return ""; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -239,7 +232,6 @@ public class WickedStubSettings extends StubSettings { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden index abce6e4263..21420a6a2e 100644 --- a/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden +++ b/gapic-generator-java/src/test/java/com/google/api/generator/gapic/composer/rest/goldens/ComplianceStubSettings.golden @@ -136,13 +136,6 @@ public class ComplianceStubSettings extends StubSettings return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return ""; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -310,7 +303,6 @@ public class ComplianceStubSettings extends StubSettings builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java index 5049512169..3613d9e68a 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java @@ -164,7 +164,12 @@ public static ClientContext create(StubSettings settings) throws IOException { // Client can determine if the GDC-H is being used via the Credentials. The Credentials object // is resolved here and must be set to the EndpointContext. EndpointContext endpointContext = - settings.getEndpointContext().toBuilder().setUsingGDCH(usingGDCH).build(); + settings + .getEndpointContext() + .toBuilder() + .setServiceName(settings.getServiceName()) + .setUsingGDCH(usingGDCH) + .build(); String endpoint = endpointContext.resolvedEndpoint(); String settingsGdchApiAudience = settings.getGdchApiAudience(); diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index 1ee540663d..cca7de0246 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -150,10 +150,14 @@ public final ApiClock getClock() { return clock; } - // Meant to be shared between StubSettings and ClientContext. + /** + * Marked with Internal Api as it's meant to be shared between StubSettings and ClientContext. + * + * @return the configured serviceName or an empty String otherwise. + */ @InternalApi public String getServiceName() { - return ""; + return serviceName; } /** @return the fully resolved universe domain used by the client */ diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java index efdfa0f847..70cc559f7e 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/ComplianceStubSettings.java @@ -278,13 +278,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return ""; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -523,7 +516,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -536,7 +528,6 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java index 305464ab63..1e659ed8d7 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/EchoStubSettings.java @@ -437,13 +437,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return ""; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -703,7 +696,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -716,7 +708,6 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java index 3791a4af53..dd33ed84fb 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/IdentityStubSettings.java @@ -308,13 +308,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return ""; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -531,7 +524,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -544,7 +536,6 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java index a7aadd68d9..276255c45e 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/MessagingStubSettings.java @@ -450,13 +450,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return ""; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -739,7 +732,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -752,7 +744,6 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java index 8c0e852f44..78f7af2c99 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/SequenceServiceStubSettings.java @@ -273,13 +273,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return ""; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -514,7 +507,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -527,7 +519,6 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java index a7480253b2..f03f92651c 100644 --- a/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java +++ b/showcase/gapic-showcase/src/main/java/com/google/showcase/v1beta1/stub/TestingStubSettings.java @@ -390,13 +390,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return ""; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "localhost:7469"; @@ -619,7 +612,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -632,7 +624,6 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java index 56b708fa4c..413e4a74e3 100644 --- a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/ConnectionServiceStubSettings.java @@ -193,13 +193,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "apigeeconnect"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "apigeeconnect.googleapis.com:443"; @@ -356,7 +349,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -369,7 +361,6 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java index 2f18051d1d..f12b23a81d 100644 --- a/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java +++ b/test/integration/goldens/apigeeconnect/src/com/google/cloud/apigeeconnect/v1/stub/TetherStubSettings.java @@ -112,13 +112,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "apigeeconnect"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "apigeeconnect.googleapis.com:443"; @@ -236,7 +229,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java b/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java index 9467c8ae96..1133cadb5c 100644 --- a/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java +++ b/test/integration/goldens/asset/src/com/google/cloud/asset/v1/stub/AssetServiceStubSettings.java @@ -582,13 +582,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "cloudasset"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "cloudasset.googleapis.com:443"; @@ -970,7 +963,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -983,7 +975,6 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java b/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java index 8a05221831..410c6637d6 100644 --- a/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java +++ b/test/integration/goldens/bigtable/src/com/google/cloud/bigtable/data/v2/stub/BigtableStubSettings.java @@ -176,13 +176,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "bigtable"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "bigtable.googleapis.com:443"; @@ -392,7 +385,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java index b5a57a6579..fdc5e7201d 100644 --- a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java +++ b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/AddressesStubSettings.java @@ -299,13 +299,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "compute"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "compute.googleapis.com:443"; @@ -472,7 +465,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java index 052561f26c..3d8580ad27 100644 --- a/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java +++ b/test/integration/goldens/compute/src/com/google/cloud/compute/v1small/stub/RegionOperationsStubSettings.java @@ -124,13 +124,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "compute"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "compute.googleapis.com:443"; @@ -275,7 +268,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java b/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java index 48b3c97bcc..d8b9ff9466 100644 --- a/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java +++ b/test/integration/goldens/credentials/src/com/google/cloud/iam/credentials/v1/stub/IamCredentialsStubSettings.java @@ -151,13 +151,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "iamcredentials"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "iamcredentials.googleapis.com:443"; @@ -334,7 +327,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -347,7 +339,6 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java b/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java index 52eb175eb0..f44ac7c363 100644 --- a/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java +++ b/test/integration/goldens/iam/src/com/google/iam/v1/stub/IAMPolicyStubSettings.java @@ -129,13 +129,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "iam-meta-api"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "iam-meta-api.googleapis.com:443"; @@ -273,7 +266,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java b/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java index da8bed6dda..2dc17089fc 100644 --- a/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java +++ b/test/integration/goldens/kms/src/com/google/cloud/kms/v1/stub/KeyManagementServiceStubSettings.java @@ -649,13 +649,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "cloudkms"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "cloudkms.googleapis.com:443"; @@ -985,7 +978,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java b/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java index 058d90ef14..eca61c2fb1 100644 --- a/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java +++ b/test/integration/goldens/library/src/com/google/cloud/example/library/v1/stub/LibraryServiceStubSettings.java @@ -317,13 +317,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "library-example"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "library-example.googleapis.com:443"; @@ -557,7 +550,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -570,7 +562,6 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java index bab8ade45f..c4f2a621a4 100644 --- a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java +++ b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/ConfigServiceV2StubSettings.java @@ -557,13 +557,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "logging"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "logging.googleapis.com:443"; @@ -879,7 +872,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java index 7306b42fbb..f994abe376 100644 --- a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java +++ b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/LoggingServiceV2StubSettings.java @@ -448,13 +448,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "logging"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "logging.googleapis.com:443"; @@ -649,7 +642,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java index 9d7abe5bc2..f8df3e6015 100644 --- a/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java +++ b/test/integration/goldens/logging/src/com/google/cloud/logging/v2/stub/MetricsServiceV2StubSettings.java @@ -216,13 +216,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "logging"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "logging.googleapis.com:443"; @@ -394,7 +387,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java index 41f7b1d253..11baddd298 100644 --- a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java +++ b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java @@ -482,13 +482,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "pubsub"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "pubsub.googleapis.com:443"; @@ -734,7 +727,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java index 1aa278ca8e..95a895f419 100644 --- a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java +++ b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java @@ -341,13 +341,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "pubsub"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "pubsub.googleapis.com:443"; @@ -549,7 +542,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java index 98d567ad3e..18e54d37b1 100644 --- a/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java +++ b/test/integration/goldens/pubsub/src/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java @@ -387,13 +387,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "pubsub"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "pubsub.googleapis.com:443"; @@ -676,7 +669,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java index f5c45d3db0..1d5130e20b 100644 --- a/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java +++ b/test/integration/goldens/redis/src/com/google/cloud/redis/v1beta1/stub/CloudRedisStubSettings.java @@ -334,13 +334,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "redis"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "redis.googleapis.com:443"; @@ -607,7 +600,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } @@ -620,7 +612,6 @@ private static Builder createHttpJsonDefault() { builder.setInternalHeaderProvider(defaultHttpJsonApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } diff --git a/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java b/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java index 8df41f8c61..11482952a2 100644 --- a/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java +++ b/test/integration/goldens/storage/src/com/google/storage/v2/stub/StorageStubSettings.java @@ -599,13 +599,6 @@ public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuild return InstantiatingExecutorProvider.newBuilder(); } - /* - * Similar to {@link #getServiceName()} but is static. Intended to be set from inside the StubSettings.Builder - */ - private static String getDefaultServiceName() { - return "storage"; - } - /** Returns the default service endpoint. */ public static String getDefaultEndpoint() { return "storage.googleapis.com:443"; @@ -929,7 +922,6 @@ private static Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - builder.setServiceName(getDefaultServiceName()); return initDefaults(builder); } From 1ff41366a300ef5fe4f48209f221dc93c32d48c5 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 21 Mar 2024 12:34:38 -0400 Subject: [PATCH 16/34] chore: Update ITEndpointContext --- .../com/google/api/gax/rpc/StubSettings.java | 14 ++++++++----- .../v1beta1/it/ITEndpointContext.java | 20 ++++++++++--------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index cca7de0246..b6d19d3641 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -71,7 +71,7 @@ public abstract class StubSettings> { private final HeaderProvider internalHeaderProvider; private final TransportChannelProvider transportChannelProvider; private final ApiClock clock; - private final String serviceName; + @Nonnull private final String serviceName; private final String endpoint; private final String mtlsEndpoint; private final String quotaProjectId; @@ -152,8 +152,11 @@ public final ApiClock getClock() { /** * Marked with Internal Api as it's meant to be shared between StubSettings and ClientContext. + * GAPICs will override this implementation with the correct serviceName. This implementation is + * for other use cases (i.e Testing) which may set the ServiceName directly to the StubSettings + * and not the overridden implementation (i.e. FakeStubSettings) * - * @return the configured serviceName or an empty String otherwise. + * @return Returns the configured serviceName or empty string ("") if not configured. */ @InternalApi public String getServiceName() { @@ -247,7 +250,7 @@ public abstract static class Builder< private HeaderProvider internalHeaderProvider; private TransportChannelProvider transportChannelProvider; private ApiClock clock; - private String serviceName; + @Nonnull private String serviceName; private String endpoint; private String mtlsEndpoint; private String quotaProjectId; @@ -314,7 +317,7 @@ protected Builder(ClientContext clientContext) { this.headerProvider = new NoHeaderProvider(); this.internalHeaderProvider = new NoHeaderProvider(); this.clock = NanoClock.getDefaultClock(); - this.serviceName = null; + this.serviceName = ""; this.endpoint = null; this.mtlsEndpoint = null; this.quotaProjectId = null; @@ -470,7 +473,8 @@ public B setClock(ApiClock clock) { * this value may result in unintended client behavior. */ @InternalApi - public B setServiceName(String serviceName) { + public B setServiceName(@Nonnull String serviceName) { + Preconditions.checkNotNull(serviceName, "Service Name cannot be null"); this.serviceName = serviceName; this.endpointContextBuilder.setServiceName(serviceName); return self(); diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java index ecf30ef16d..0cdb65ef97 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java @@ -7,6 +7,7 @@ import com.google.showcase.v1beta1.EchoClient; import com.google.showcase.v1beta1.EchoSettings; import com.google.showcase.v1beta1.it.util.TestClientInitializer; +import com.google.showcase.v1beta1.stub.EchoStub; import com.google.showcase.v1beta1.stub.EchoStubSettings; import java.io.IOException; import java.util.concurrent.TimeUnit; @@ -18,15 +19,16 @@ */ public class ITEndpointContext { - /* - * Inside the test cases below, we must explicitly configure serviceName. Normally this should not be - * configured by the user at all, but showcase clients do not have a serviceName. This EchoSettings wrapper will - * set the ServiceName by default. Without this ClientSettings wrapper, we must set this explicitly via the ClientSettings - * via {@link com.google.api.gax.rpc.ClientSettings.Builder#setServiceName(String)} as setting this via - * {@link com.google.api.gax.rpc.StubSettings.Builder#setServiceName(String)} and passing the StubSettings - * to the client will result in a null ClientSettings. Specifically, doing `Client.create(stubSettings.createStub())` - * will result in a NPE when doing `Client.getSettings().get(Endpoint|UniverseDomain)` as the ClientSettings is - * null. + /** + * Inside the test cases below, we must explicitly configure serviceName. Normally this should not + * be configured by the user at all, but showcase clients do not have a serviceName. The + * ExtendSettings wrapper will set the ServiceName via an _enhanced_ ClientSettings. + * + *

Without this ClientSettings wrapper, we must set this explicitly via {@link + * com.google.api.gax.rpc.StubSettings.Builder#setServiceName(String)} and pass the StubSettings + * to the client. However, this will result in a null ClientSettings (See {@link + * EchoClient#create(EchoStub)}). Passing the stub to the Client will result in a NPE when doing + * `Client.getSettings().get(Endpoint|UniverseDomain)` as the ClientSettings is stored as null. */ private static class ExtendedEchoSettings extends EchoSettings { From 42be5137d1e1630fe5a41af68a57172432971339 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 21 Mar 2024 13:40:31 -0400 Subject: [PATCH 17/34] chore: Update javadoc and comments --- .../main/java/com/google/api/gax/rpc/ClientContext.java | 7 +++++-- .../main/java/com/google/api/gax/tracing/MethodName.java | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java index 3613d9e68a..fbdd552648 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java @@ -161,8 +161,11 @@ public static ClientContext create(StubSettings settings) throws IOException { Credentials credentials = settings.getCredentialsProvider().getCredentials(); boolean usingGDCH = credentials instanceof GdchCredentials; - // Client can determine if the GDC-H is being used via the Credentials. The Credentials object - // is resolved here and must be set to the EndpointContext. + // Add two additional fields to the EndpointContext: 1. ServiceName and 2. usingGDCH field. + // The serviceName is overwritten in the child subclasses (GAPIC libraries will override the + // default StubSettings' serviceName). Client can determine if the GDC-H is being used via the + // Credentials. The Credentials object is resolved here and must be passed to the + // EndpointContext. EndpointContext endpointContext = settings .getEndpointContext() diff --git a/gax-java/gax/src/main/java/com/google/api/gax/tracing/MethodName.java b/gax-java/gax/src/main/java/com/google/api/gax/tracing/MethodName.java index 554af20316..1581c0ed38 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/tracing/MethodName.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/tracing/MethodName.java @@ -43,7 +43,7 @@ public abstract class MethodName { * Creates a new instance of the RPC method name. * * @param serviceName The name of the service. In general this will be GAPIC generated service - * name {@link StubSettings#defaultServiceName()}. However, in some cases, when the GAPIC + * name {@link StubSettings#getServiceName()}. However, in some cases, when the GAPIC * generated service is wrapped, this will be overridden to specify the manually written * wrapper's name. * @param methodName The name of the logical operation being traced. From 18fb9abda5de9b29900476f34e71a376728a9104 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Thu, 21 Mar 2024 17:34:53 -0400 Subject: [PATCH 18/34] chore: Remove @Nullable annotation from getServiceName --- .../gax/src/main/java/com/google/api/gax/rpc/ClientContext.java | 1 - 1 file changed, 1 deletion(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java index fbdd552648..2ac4455cd2 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java @@ -101,7 +101,6 @@ public abstract class ClientContext { public abstract Duration getStreamWatchdogCheckInterval(); // Package-Private scope for internal use only. Shared between StubSettings and ClientContext - @Nullable abstract String getServiceName(); @Nullable From c5887ac1814570a7f53647dd7083867fc04b2472 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Mon, 25 Mar 2024 10:39:37 -0400 Subject: [PATCH 19/34] chore: Fix broken tests --- .../main/java/com/google/api/gax/rpc/ClientContext.java | 1 + .../main/java/com/google/api/gax/rpc/StubSettings.java | 6 ++---- .../com/google/api/gax/rpc/testing/FakeCallContext.java | 8 +++++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java index 2ac4455cd2..fbdd552648 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java @@ -101,6 +101,7 @@ public abstract class ClientContext { public abstract Duration getStreamWatchdogCheckInterval(); // Package-Private scope for internal use only. Shared between StubSettings and ClientContext + @Nullable abstract String getServiceName(); @Nullable diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index b6d19d3641..fccf077a6b 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -155,8 +155,6 @@ public final ApiClock getClock() { * GAPICs will override this implementation with the correct serviceName. This implementation is * for other use cases (i.e Testing) which may set the ServiceName directly to the StubSettings * and not the overridden implementation (i.e. FakeStubSettings) - * - * @return Returns the configured serviceName or empty string ("") if not configured. */ @InternalApi public String getServiceName() { @@ -250,7 +248,7 @@ public abstract static class Builder< private HeaderProvider internalHeaderProvider; private TransportChannelProvider transportChannelProvider; private ApiClock clock; - @Nonnull private String serviceName; + @Nullable private String serviceName; private String endpoint; private String mtlsEndpoint; private String quotaProjectId; @@ -317,7 +315,7 @@ protected Builder(ClientContext clientContext) { this.headerProvider = new NoHeaderProvider(); this.internalHeaderProvider = new NoHeaderProvider(); this.clock = NanoClock.getDefaultClock(); - this.serviceName = ""; + this.serviceName = null; this.endpoint = null; this.mtlsEndpoint = null; this.quotaProjectId = null; diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeCallContext.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeCallContext.java index 58c1f05e35..747eab8981 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeCallContext.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeCallContext.java @@ -44,6 +44,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import java.io.IOException; import java.util.List; import java.util.Map; import java.util.Set; @@ -87,7 +88,12 @@ private FakeCallContext( this.tracer = tracer; this.retrySettings = retrySettings; this.retryableCodes = retryableCodes == null ? null : ImmutableSet.copyOf(retryableCodes); - this.endpointContext = endpointContext; + try { + this.endpointContext = + endpointContext == null ? EndpointContext.newBuilder().build() : endpointContext; + } catch (IOException e) { + throw new RuntimeException(e); + } } public static FakeCallContext createDefault() { From 0d789ba1b7f7edc199561566a34bf70fd1790f66 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 26 Mar 2024 14:07:33 -0400 Subject: [PATCH 20/34] chore: Address PR comments --- .../google/api/gax/grpc/GrpcCallContext.java | 5 -- .../api/gax/httpjson/HttpJsonCallContext.java | 5 -- .../google/api/gax/rpc/ApiCallContext.java | 3 -- .../com/google/api/gax/rpc/ClientContext.java | 25 ++------- .../com/google/api/gax/rpc/StubSettings.java | 50 +++++------------ .../google/api/gax/rpc/ClientContextTest.java | 3 +- .../api/gax/rpc/testing/FakeCallContext.java | 5 -- .../api/gax/rpc/testing/FakeStubSettings.java | 5 ++ .../v1beta1/it/ITEndpointContext.java | 54 ++++++++++++++++--- 9 files changed, 71 insertions(+), 84 deletions(-) diff --git a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java index 232e6aa306..46efb99469 100644 --- a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java +++ b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java @@ -234,11 +234,6 @@ public GrpcCallContext withEndpointContext(EndpointContext endpointContext) { endpointContext); } - @Override - public EndpointContext getEndpointContext() { - return endpointContext; - } - @Override public GrpcCallContext withTimeout(@Nullable Duration timeout) { // Default RetrySettings use 0 for RPC timeout. Treat that as disabled timeouts. diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java index df59bf1803..7535ea6004 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java @@ -273,11 +273,6 @@ public HttpJsonCallContext withEndpointContext(EndpointContext endpointContext) endpointContext); } - @Override - public EndpointContext getEndpointContext() { - return endpointContext; - } - @Override public HttpJsonCallContext withTimeout(Duration timeout) { // Default RetrySettings use 0 for RPC timeout. Treat that as disabled timeouts. diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ApiCallContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ApiCallContext.java index e8895c8e84..e650564826 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ApiCallContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ApiCallContext.java @@ -66,9 +66,6 @@ public interface ApiCallContext extends RetryingContext { /** Returns a new ApiCallContext with the given Endpoint Context. */ ApiCallContext withEndpointContext(EndpointContext endpointContext); - /** Returns the EndpointContext stored in the ApiCallContext */ - EndpointContext getEndpointContext(); - /** * Returns a new ApiCallContext with the given timeout set. * diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java index fbdd552648..db1eb50003 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java @@ -100,10 +100,6 @@ public abstract class ClientContext { @Nonnull public abstract Duration getStreamWatchdogCheckInterval(); - // Package-Private scope for internal use only. Shared between StubSettings and ClientContext - @Nullable - abstract String getServiceName(); - @Nullable public abstract String getUniverseDomain(); @@ -161,18 +157,11 @@ public static ClientContext create(StubSettings settings) throws IOException { Credentials credentials = settings.getCredentialsProvider().getCredentials(); boolean usingGDCH = credentials instanceof GdchCredentials; - // Add two additional fields to the EndpointContext: 1. ServiceName and 2. usingGDCH field. - // The serviceName is overwritten in the child subclasses (GAPIC libraries will override the - // default StubSettings' serviceName). Client can determine if the GDC-H is being used via the - // Credentials. The Credentials object is resolved here and must be passed to the - // EndpointContext. + // Add field to the EndpointContext `usingGDCH` field. Client can determine if the + // GDC-H is being used via the Credentials. The Credentials object is resolved here + // and must be passed to the EndpointContext. EndpointContext endpointContext = - settings - .getEndpointContext() - .toBuilder() - .setServiceName(settings.getServiceName()) - .setUsingGDCH(usingGDCH) - .build(); + settings.getEndpointContext().toBuilder().setUsingGDCH(usingGDCH).build(); String endpoint = endpointContext.resolvedEndpoint(); String settingsGdchApiAudience = settings.getGdchApiAudience(); @@ -271,8 +260,7 @@ public static ClientContext create(StubSettings settings) throws IOException { .setInternalHeaders(ImmutableMap.copyOf(settings.getInternalHeaderProvider().getHeaders())) .setClock(clock) .setDefaultCallContext(defaultCallContext) - .setServiceName(settings.getServiceName()) - .setUniverseDomain(settings.getUniverseDomain()) + .setUniverseDomain(endpointContext.universeDomain()) .setEndpoint(settings.getEndpoint()) .setQuotaProjectId(settings.getQuotaProjectId()) .setStreamWatchdog(watchdog) @@ -338,9 +326,6 @@ public abstract static class Builder { public abstract Builder setDefaultCallContext(ApiCallContext defaultCallContext); - // Package-Private scope for internal use only. Shared between StubSettings and ClientContext - abstract Builder setServiceName(String serviceName); - public abstract Builder setUniverseDomain(String universeDomain); public abstract Builder setEndpoint(String endpoint); diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index fccf077a6b..953b6f5161 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -71,7 +71,6 @@ public abstract class StubSettings> { private final HeaderProvider internalHeaderProvider; private final TransportChannelProvider transportChannelProvider; private final ApiClock clock; - @Nonnull private final String serviceName; private final String endpoint; private final String mtlsEndpoint; private final String quotaProjectId; @@ -100,7 +99,6 @@ protected StubSettings(Builder builder) { this.headerProvider = builder.headerProvider; this.internalHeaderProvider = builder.internalHeaderProvider; this.clock = builder.clock; - this.serviceName = builder.serviceName; this.endpoint = builder.endpoint; this.mtlsEndpoint = builder.mtlsEndpoint; this.switchToMtlsEndpointAllowed = builder.switchToMtlsEndpointAllowed; @@ -114,7 +112,15 @@ protected StubSettings(Builder builder) { // Attempt to build the EndpointContext from the Builder based on all the // user configurations passed in to the Builder. try { - this.endpointContext = builder.endpointContextBuilder.build(); + this.endpointContext = + EndpointContext.newBuilder() + .setServiceName(getServiceName()) + .setClientSettingsEndpoint(builder.endpoint) + .setTransportChannelProviderEndpoint(builder.transportChannelProviderEndpoint) + .setMtlsEndpoint(builder.mtlsEndpoint) + .setSwitchToMtlsEndpointAllowed(builder.switchToMtlsEndpointAllowed) + .setUniverseDomain(builder.universeDomain) + .build(); } catch (IOException e) { throw new RuntimeException(e); } @@ -158,7 +164,7 @@ public final ApiClock getClock() { */ @InternalApi public String getServiceName() { - return serviceName; + return ""; } /** @return the fully resolved universe domain used by the client */ @@ -247,8 +253,8 @@ public abstract static class Builder< private HeaderProvider headerProvider; private HeaderProvider internalHeaderProvider; private TransportChannelProvider transportChannelProvider; + private String transportChannelProviderEndpoint; private ApiClock clock; - @Nullable private String serviceName; private String endpoint; private String mtlsEndpoint; private String quotaProjectId; @@ -258,7 +264,6 @@ public abstract static class Builder< @Nonnull private ApiTracerFactory tracerFactory; private boolean deprecatedExecutorProviderSet; private String universeDomain; - @Nonnull private EndpointContext.Builder endpointContextBuilder; /** * Indicate when creating transport whether it is allowed to use mTLS endpoint instead of the @@ -276,7 +281,6 @@ protected Builder(StubSettings settings) { this.headerProvider = settings.headerProvider; this.internalHeaderProvider = settings.internalHeaderProvider; this.clock = settings.clock; - this.serviceName = settings.serviceName; this.endpoint = settings.endpoint; this.mtlsEndpoint = settings.mtlsEndpoint; this.switchToMtlsEndpointAllowed = settings.switchToMtlsEndpointAllowed; @@ -287,7 +291,6 @@ protected Builder(StubSettings settings) { this.deprecatedExecutorProviderSet = settings.deprecatedExecutorProviderSet; this.gdchApiAudience = settings.gdchApiAudience; this.universeDomain = settings.universeDomain; - this.endpointContextBuilder = settings.endpointContext.toBuilder(); } /** Get Quota Project ID from Client Context * */ @@ -315,7 +318,6 @@ protected Builder(ClientContext clientContext) { this.headerProvider = new NoHeaderProvider(); this.internalHeaderProvider = new NoHeaderProvider(); this.clock = NanoClock.getDefaultClock(); - this.serviceName = null; this.endpoint = null; this.mtlsEndpoint = null; this.quotaProjectId = null; @@ -325,7 +327,6 @@ protected Builder(ClientContext clientContext) { this.deprecatedExecutorProviderSet = false; this.gdchApiAudience = null; this.universeDomain = null; - this.endpointContextBuilder = EndpointContext.newBuilder(); } else { ExecutorProvider fixedExecutorProvider = FixedExecutorProvider.create(clientContext.getExecutor()); @@ -338,7 +339,6 @@ protected Builder(ClientContext clientContext) { this.internalHeaderProvider = FixedHeaderProvider.create(clientContext.getInternalHeaders()); this.clock = clientContext.getClock(); - this.serviceName = clientContext.getServiceName(); this.endpoint = clientContext.getEndpoint(); if (this.endpoint != null) { this.mtlsEndpoint = this.endpoint.replace("googleapis.com", "mtls.googleapis.com"); @@ -350,8 +350,6 @@ protected Builder(ClientContext clientContext) { this.quotaProjectId = getQuotaProjectIdFromClientContext(clientContext); this.gdchApiAudience = clientContext.getGdchApiAudience(); this.universeDomain = clientContext.getUniverseDomain(); - this.endpointContextBuilder = - clientContext.getDefaultCallContext().getEndpointContext().toBuilder(); } } @@ -441,8 +439,7 @@ protected B setInternalHeaderProvider(HeaderProvider internalHeaderProvider) { */ public B setTransportChannelProvider(TransportChannelProvider transportChannelProvider) { this.transportChannelProvider = transportChannelProvider; - this.endpointContextBuilder.setTransportChannelProviderEndpoint( - this.transportChannelProvider.getEndpoint()); + this.transportChannelProviderEndpoint = transportChannelProvider.getEndpoint(); return self(); } @@ -466,21 +463,8 @@ public B setClock(ApiClock clock) { return self(); } - /** - * This is intended to be used by the generated Client StubSettings' classes. Explicitly setting - * this value may result in unintended client behavior. - */ - @InternalApi - public B setServiceName(@Nonnull String serviceName) { - Preconditions.checkNotNull(serviceName, "Service Name cannot be null"); - this.serviceName = serviceName; - this.endpointContextBuilder.setServiceName(serviceName); - return self(); - } - public B setUniverseDomain(String universeDomain) { this.universeDomain = universeDomain; - this.endpointContextBuilder.setUniverseDomain(universeDomain); return self(); } @@ -490,22 +474,16 @@ public B setEndpoint(String endpoint) { if (this.endpoint != null && this.mtlsEndpoint == null) { this.mtlsEndpoint = this.endpoint.replace("googleapis.com", "mtls.googleapis.com"); } - this.endpointContextBuilder - .setClientSettingsEndpoint(endpoint) - .setSwitchToMtlsEndpointAllowed(false) - .setMtlsEndpoint(this.mtlsEndpoint); return self(); } protected B setSwitchToMtlsEndpointAllowed(boolean switchToMtlsEndpointAllowed) { this.switchToMtlsEndpointAllowed = switchToMtlsEndpointAllowed; - this.endpointContextBuilder.setSwitchToMtlsEndpointAllowed(switchToMtlsEndpointAllowed); return self(); } public B setMtlsEndpoint(String mtlsEndpoint) { this.mtlsEndpoint = mtlsEndpoint; - this.endpointContextBuilder.setMtlsEndpoint(mtlsEndpoint); return self(); } @@ -591,11 +569,11 @@ public ApiClock getClock() { } public String getEndpoint() { - return endpointContextBuilder.clientSettingsEndpoint(); + return endpoint; } public String getMtlsEndpoint() { - return endpointContextBuilder.mtlsEndpoint(); + return mtlsEndpoint; } /** Gets the QuotaProjectId that was previously set on this Builder. */ diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientContextTest.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientContextTest.java index 293e8535b3..2f82489528 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientContextTest.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/ClientContextTest.java @@ -798,8 +798,7 @@ public void testCreateClientContext_withGdchCredentialNoAudienceNoEndpoint() thr Credentials creds = getMockGdchCredentials(); CredentialsProvider provider = FixedCredentialsProvider.create(creds); - StubSettings settings = - new FakeStubSettings.Builder().setGdchApiAudience(null).setServiceName("test").build(); + StubSettings settings = new FakeStubSettings.Builder().setGdchApiAudience(null).build(); FakeClientSettings.Builder clientSettingsBuilder = new FakeClientSettings.Builder(settings); clientSettingsBuilder.setCredentialsProvider(provider); clientSettingsBuilder.setTransportChannelProvider(transportChannelProvider); diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeCallContext.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeCallContext.java index 747eab8981..77ae3d1fca 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeCallContext.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeCallContext.java @@ -305,11 +305,6 @@ public FakeCallContext withEndpointContext(EndpointContext endpointContext) { endpointContext); } - @Override - public EndpointContext getEndpointContext() { - return endpointContext; - } - public FakeCallContext withChannel(FakeChannel channel) { return new FakeCallContext( this.credentials, diff --git a/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeStubSettings.java b/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeStubSettings.java index 2c41d75a47..c5f0cc81f4 100644 --- a/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeStubSettings.java +++ b/gax-java/gax/src/test/java/com/google/api/gax/rpc/testing/FakeStubSettings.java @@ -41,6 +41,11 @@ private FakeStubSettings(Builder builder) throws IOException { super(builder); } + @Override + public String getServiceName() { + return "test"; + } + @Override public StubSettings.Builder toBuilder() { return new Builder(this); diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java index 0cdb65ef97..3e54a31cd6 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java @@ -19,16 +19,55 @@ */ public class ITEndpointContext { + private static class ExtendedEchoStubSettings extends EchoStubSettings { + + protected ExtendedEchoStubSettings(Builder settingsBuilder) throws IOException { + super(settingsBuilder); + } + + @Override + public String getServiceName() { + return "test"; + } + + public static ExtendedEchoStubSettings.Builder newBuilder() { + return ExtendedEchoStubSettings.Builder.createDefault(); + } + + public static class Builder extends EchoStubSettings.Builder { + + protected Builder(ClientContext clientContext) { + super(clientContext); + } + + private static ExtendedEchoStubSettings.Builder createDefault() { + Builder builder = new Builder(((ClientContext) null)); + builder.setTransportChannelProvider(defaultTransportChannelProvider()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); + builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setSwitchToMtlsEndpointAllowed(true); + + return builder; + } + + @Override + public ExtendedEchoStubSettings build() throws IOException { + return new ExtendedEchoStubSettings(this); + } + } + } + /** * Inside the test cases below, we must explicitly configure serviceName. Normally this should not * be configured by the user at all, but showcase clients do not have a serviceName. The * ExtendSettings wrapper will set the ServiceName via an _enhanced_ ClientSettings. * - *

Without this ClientSettings wrapper, we must set this explicitly via {@link - * com.google.api.gax.rpc.StubSettings.Builder#setServiceName(String)} and pass the StubSettings - * to the client. However, this will result in a null ClientSettings (See {@link - * EchoClient#create(EchoStub)}). Passing the stub to the Client will result in a NPE when doing - * `Client.getSettings().get(Endpoint|UniverseDomain)` as the ClientSettings is stored as null. + *

Without this ClientSettings wrapper, we must expose a serviceName setter to StubSettings and + * pass the StubSettings to the client. However, this will result in a null ClientSettings (See + * {@link EchoClient#create(EchoStub)}). Passing the stub to the Client will result in a NPE when + * doing `Client.getSettings().get(Endpoint|UniverseDomain)` as the ClientSettings is stored as + * null. */ private static class ExtendedEchoSettings extends EchoSettings { @@ -44,8 +83,7 @@ public static class Builder extends EchoSettings.Builder { protected Builder() throws IOException {} private static ExtendedEchoSettings.Builder createDefault() { - return new ExtendedEchoSettings.Builder( - EchoStubSettings.newBuilder().setServiceName("test")); + return new ExtendedEchoSettings.Builder(ExtendedEchoStubSettings.newBuilder()); } protected Builder(ClientContext clientContext) { @@ -56,7 +94,7 @@ protected Builder(EchoSettings settings) { super(settings); } - protected Builder(EchoStubSettings.Builder stubSettings) { + protected Builder(ExtendedEchoStubSettings.Builder stubSettings) { super(stubSettings); } } From c2271b87983476699a317b7cd533f4b85e63bb63 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 26 Mar 2024 14:43:17 -0400 Subject: [PATCH 21/34] chore: Update javadocs for ITEndpointContext --- .../v1beta1/it/ITEndpointContext.java | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java index 3e54a31cd6..f17467aed4 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java @@ -16,9 +16,18 @@ /** * This IT tests the different user configurations allowed and their effects on endpoint and * universe domain resolution. + * + *

In these tests, the client is not initialized with the default configuration: + * `EchoClient.create()`. For showcase tests run in CI, the client must be supplied explicitly + * supplied with NoCredentials. */ public class ITEndpointContext { + /** + * Inside the test cases below, we must explicitly configure serviceName. Normally this should not + * be configured at all, but showcase clients do not have a serviceName. The ExtendStubSettings + * wrapper return the serviceName by overriding the `getServiceName()` result. + */ private static class ExtendedEchoStubSettings extends EchoStubSettings { protected ExtendedEchoStubSettings(Builder settingsBuilder) throws IOException { @@ -47,7 +56,6 @@ private static ExtendedEchoStubSettings.Builder createDefault() { builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); builder.setSwitchToMtlsEndpointAllowed(true); - return builder; } @@ -59,15 +67,11 @@ public ExtendedEchoStubSettings build() throws IOException { } /** - * Inside the test cases below, we must explicitly configure serviceName. Normally this should not - * be configured by the user at all, but showcase clients do not have a serviceName. The - * ExtendSettings wrapper will set the ServiceName via an _enhanced_ ClientSettings. - * - *

Without this ClientSettings wrapper, we must expose a serviceName setter to StubSettings and - * pass the StubSettings to the client. However, this will result in a null ClientSettings (See - * {@link EchoClient#create(EchoStub)}). Passing the stub to the Client will result in a NPE when - * doing `Client.getSettings().get(Endpoint|UniverseDomain)` as the ClientSettings is stored as - * null. + * Without this ClientSettings wrapper, we must expose a serviceName setter to + * (Client|Stub)Settings and pass the StubSettings to the client. However, this will result in a + * null ClientSettings (See {@link EchoClient#create(EchoStub)}). Passing the stub to the Client + * will result in a NPE when doing `Client.getSettings().get(Endpoint|UniverseDomain)` as the + * ClientSettings is stored as null. */ private static class ExtendedEchoSettings extends EchoSettings { @@ -107,9 +111,6 @@ protected Builder(ExtendedEchoStubSettings.Builder stubSettings) { public void endpointResolution_default() throws InterruptedException, IOException { EchoClient echoClient = null; try { - // This is not how a client is created by default. The default usage is EchoClient.create(), - // but for showcase tests run in CI, the client must be supplied explicitly supplied with - // NoCredentials. EchoSettings echoSettings = ExtendedEchoSettings.newBuilder() .setCredentialsProvider(NoCredentialsProvider.create()) From 9294b7baf99ad6753be333c1860697fbba56e5f7 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 26 Mar 2024 14:58:15 -0400 Subject: [PATCH 22/34] chore: Remove clirr file --- gax-java/gax/clirr-ignored-differences.xml | 6 ------ .../main/java/com/google/api/gax/rpc/StubSettings.java | 9 +++++---- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/gax-java/gax/clirr-ignored-differences.xml b/gax-java/gax/clirr-ignored-differences.xml index f86c752bce..c8e68444ff 100644 --- a/gax-java/gax/clirr-ignored-differences.xml +++ b/gax-java/gax/clirr-ignored-differences.xml @@ -42,10 +42,4 @@ com/google/api/gax/rpc/ApiCallContext * validateUniverseDomain() - - - 7012 - com/google/api/gax/rpc/ApiCallContext - * getEndpointContext(*) - diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index 953b6f5161..29472c4a9a 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -157,10 +157,11 @@ public final ApiClock getClock() { } /** - * Marked with Internal Api as it's meant to be shared between StubSettings and ClientContext. - * GAPICs will override this implementation with the correct serviceName. This implementation is - * for other use cases (i.e Testing) which may set the ServiceName directly to the StubSettings - * and not the overridden implementation (i.e. FakeStubSettings) + * Marked with Internal Api and meant to overriden by the generated subclasses. This getter is used + * to set the serviceName to the EndpointContext. The value in generated StubSettings subclasses + * comes from the proto files. + * + *

This should be effectively treated as an abstract method. */ @InternalApi public String getServiceName() { From 12aa0054b0d7811135240f77ad526e4c969a5d36 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 26 Mar 2024 16:09:07 -0400 Subject: [PATCH 23/34] chore: Update javadocs --- .../com/google/api/gax/grpc/GrpcCallContext.java | 6 ++---- .../api/gax/httpjson/HttpJsonCallContext.java | 6 ++---- .../com/google/api/gax/rpc/ClientContext.java | 15 ++++++++------- .../java/com/google/api/gax/rpc/StubSettings.java | 10 +++++----- 4 files changed, 17 insertions(+), 20 deletions(-) diff --git a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java index 46efb99469..3de00ec671 100644 --- a/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java +++ b/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/GrpcCallContext.java @@ -152,10 +152,8 @@ private GrpcCallContext( this.options = Preconditions.checkNotNull(options); this.retrySettings = retrySettings; this.retryableCodes = retryableCodes == null ? null : ImmutableSet.copyOf(retryableCodes); - // Attempt to create an empty, non-functioning EndpointContext by default (if set to null). - // This will be configured and updated by the client with user configurations. Attempts to - // use the default endpointContext (not updated with configurations) will result in incorrect - // data back. + // Attempt to create an empty, non-functioning EndpointContext by default. The client will have + // a valid EndpointContext with user configurations after the client has been initialized. try { this.endpointContext = endpointContext == null ? EndpointContext.newBuilder().build() : endpointContext; diff --git a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java index 7535ea6004..bb20811058 100644 --- a/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java +++ b/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/HttpJsonCallContext.java @@ -133,10 +133,8 @@ private HttpJsonCallContext( this.retrySettings = defaultRetrySettings; this.retryableCodes = defaultRetryableCodes == null ? null : ImmutableSet.copyOf(defaultRetryableCodes); - // Attempt to create an empty, non-functioning EndpointContext by default (if set to null). - // This will be configured and updated by the client with user configurations. Attempts to - // use the default endpointContext (not updated with configurations) will result in incorrect - // data back. + // Attempt to create an empty, non-functioning EndpointContext by default. The client will have + // a valid EndpointContext with user configurations after the client has been initialized. try { this.endpointContext = endpointContext == null ? EndpointContext.newBuilder().build() : endpointContext; diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java index db1eb50003..e02f5bcca6 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java @@ -155,17 +155,18 @@ public static ClientContext create(StubSettings settings) throws IOException { ExecutorProvider backgroundExecutorProvider = settings.getBackgroundExecutorProvider(); final ScheduledExecutorService backgroundExecutor = backgroundExecutorProvider.getExecutor(); - Credentials credentials = settings.getCredentialsProvider().getCredentials(); - boolean usingGDCH = credentials instanceof GdchCredentials; - // Add field to the EndpointContext `usingGDCH` field. Client can determine if the - // GDC-H is being used via the Credentials. The Credentials object is resolved here - // and must be passed to the EndpointContext. - EndpointContext endpointContext = - settings.getEndpointContext().toBuilder().setUsingGDCH(usingGDCH).build(); + EndpointContext endpointContext = settings.getEndpointContext(); String endpoint = endpointContext.resolvedEndpoint(); String settingsGdchApiAudience = settings.getGdchApiAudience(); + Credentials credentials = settings.getCredentialsProvider().getCredentials(); + boolean usingGDCH = credentials instanceof GdchCredentials; if (usingGDCH) { + // Client can only determine if the GDC-H is being used via the Credentials. The Credentials + // object is resolved in the ClientContext and must be passed to the EndpointContext. Rebuild + // the endpointContext only on GDC-H flows. + endpointContext = endpointContext.toBuilder().setUsingGDCH(true).build(); + endpoint = endpointContext.resolvedEndpoint(); // We recompute the GdchCredentials with the audience String audienceString; if (!Strings.isNullOrEmpty(settingsGdchApiAudience)) { diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index 29472c4a9a..1364792473 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -110,7 +110,7 @@ protected StubSettings(Builder builder) { this.gdchApiAudience = builder.gdchApiAudience; this.universeDomain = builder.universeDomain; // Attempt to build the EndpointContext from the Builder based on all the - // user configurations passed in to the Builder. + // user configurations passed in. try { this.endpointContext = EndpointContext.newBuilder() @@ -157,9 +157,9 @@ public final ApiClock getClock() { } /** - * Marked with Internal Api and meant to overriden by the generated subclasses. This getter is used - * to set the serviceName to the EndpointContext. The value in generated StubSettings subclasses - * comes from the proto files. + * Marked with Internal Api and meant to overriden by the generated subclasses. This getter is + * used to set the serviceName to the EndpointContext. The value in generated StubSettings + * subclasses comes from the proto files. * *

This should be effectively treated as an abstract method. */ @@ -178,7 +178,7 @@ public String getEndpoint() { return endpointContext.resolvedEndpoint(); } - // Intended for Internal Use and is the EndpointContext to be passed to all the Callables + /** @return the newly created EndpointContext */ @InternalApi final EndpointContext getEndpointContext() { return endpointContext; From ed76b75d3faf1dd526afc8a225716c113e3685f0 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 26 Mar 2024 17:06:02 -0400 Subject: [PATCH 24/34] chore: Remove unused fields --- .../com/google/api/gax/rpc/StubSettings.java | 58 ++++++++++--------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index 1364792473..67d15c57e1 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -71,8 +71,6 @@ public abstract class StubSettings> { private final HeaderProvider internalHeaderProvider; private final TransportChannelProvider transportChannelProvider; private final ApiClock clock; - private final String endpoint; - private final String mtlsEndpoint; private final String quotaProjectId; @Nullable private final String gdchApiAudience; @Nullable private final WatchdogProvider streamWatchdogProvider; @@ -80,7 +78,6 @@ public abstract class StubSettings> { @Nonnull private final ApiTracerFactory tracerFactory; // Track if deprecated setExecutorProvider is called private boolean deprecatedExecutorProviderSet; - private final String universeDomain; @Nonnull private final EndpointContext endpointContext; /** @@ -99,8 +96,6 @@ protected StubSettings(Builder builder) { this.headerProvider = builder.headerProvider; this.internalHeaderProvider = builder.internalHeaderProvider; this.clock = builder.clock; - this.endpoint = builder.endpoint; - this.mtlsEndpoint = builder.mtlsEndpoint; this.switchToMtlsEndpointAllowed = builder.switchToMtlsEndpointAllowed; this.quotaProjectId = builder.quotaProjectId; this.streamWatchdogProvider = builder.streamWatchdogProvider; @@ -108,14 +103,18 @@ protected StubSettings(Builder builder) { this.tracerFactory = builder.tracerFactory; this.deprecatedExecutorProviderSet = builder.deprecatedExecutorProviderSet; this.gdchApiAudience = builder.gdchApiAudience; - this.universeDomain = builder.universeDomain; + this.endpointContext = buildEndpointContext(builder); + } + + private EndpointContext buildEndpointContext(Builder builder) { + EndpointContext endpointContext; // Attempt to build the EndpointContext from the Builder based on all the // user configurations passed in. try { - this.endpointContext = + endpointContext = EndpointContext.newBuilder() .setServiceName(getServiceName()) - .setClientSettingsEndpoint(builder.endpoint) + .setClientSettingsEndpoint(builder.clientSettingsEndpoint) .setTransportChannelProviderEndpoint(builder.transportChannelProviderEndpoint) .setMtlsEndpoint(builder.mtlsEndpoint) .setSwitchToMtlsEndpointAllowed(builder.switchToMtlsEndpointAllowed) @@ -124,6 +123,7 @@ protected StubSettings(Builder builder) { } catch (IOException e) { throw new RuntimeException(e); } + return endpointContext; } /** @deprecated Please use {@link #getBackgroundExecutorProvider()}. */ @@ -185,7 +185,7 @@ final EndpointContext getEndpointContext() { } public final String getMtlsEndpoint() { - return mtlsEndpoint; + return endpointContext.mtlsEndpoint(); } /** Limit the visibility to this package only since only this package needs it. */ @@ -232,9 +232,9 @@ public String toString() { .add("headerProvider", headerProvider) .add("internalHeaderProvider", internalHeaderProvider) .add("clock", clock) - .add("universeDomain", universeDomain) - .add("endpoint", endpoint) - .add("mtlsEndpoint", mtlsEndpoint) + .add("universeDomain", this.endpointContext.resolvedUniverseDomain()) + .add("endpoint", endpointContext.resolvedEndpoint()) + .add("mtlsEndpoint", endpointContext.mtlsEndpoint()) .add("switchToMtlsEndpointAllowed", switchToMtlsEndpointAllowed) .add("quotaProjectId", quotaProjectId) .add("streamWatchdogProvider", streamWatchdogProvider) @@ -254,9 +254,9 @@ public abstract static class Builder< private HeaderProvider headerProvider; private HeaderProvider internalHeaderProvider; private TransportChannelProvider transportChannelProvider; - private String transportChannelProviderEndpoint; private ApiClock clock; - private String endpoint; + private String clientSettingsEndpoint; + private String transportChannelProviderEndpoint; private String mtlsEndpoint; private String quotaProjectId; @Nullable private String gdchApiAudience; @@ -282,8 +282,6 @@ protected Builder(StubSettings settings) { this.headerProvider = settings.headerProvider; this.internalHeaderProvider = settings.internalHeaderProvider; this.clock = settings.clock; - this.endpoint = settings.endpoint; - this.mtlsEndpoint = settings.mtlsEndpoint; this.switchToMtlsEndpointAllowed = settings.switchToMtlsEndpointAllowed; this.quotaProjectId = settings.quotaProjectId; this.streamWatchdogProvider = settings.streamWatchdogProvider; @@ -291,7 +289,11 @@ protected Builder(StubSettings settings) { this.tracerFactory = settings.tracerFactory; this.deprecatedExecutorProviderSet = settings.deprecatedExecutorProviderSet; this.gdchApiAudience = settings.gdchApiAudience; - this.universeDomain = settings.universeDomain; + this.clientSettingsEndpoint = settings.getEndpointContext().clientSettingsEndpoint(); + this.transportChannelProviderEndpoint = + settings.getEndpointContext().transportChannelProviderEndpoint(); + this.mtlsEndpoint = settings.getEndpointContext().mtlsEndpoint(); + this.universeDomain = settings.getEndpointContext().universeDomain(); } /** Get Quota Project ID from Client Context * */ @@ -319,7 +321,8 @@ protected Builder(ClientContext clientContext) { this.headerProvider = new NoHeaderProvider(); this.internalHeaderProvider = new NoHeaderProvider(); this.clock = NanoClock.getDefaultClock(); - this.endpoint = null; + this.clientSettingsEndpoint = null; + this.transportChannelProviderEndpoint = null; this.mtlsEndpoint = null; this.quotaProjectId = null; this.streamWatchdogProvider = InstantiatingWatchdogProvider.create(); @@ -340,9 +343,11 @@ protected Builder(ClientContext clientContext) { this.internalHeaderProvider = FixedHeaderProvider.create(clientContext.getInternalHeaders()); this.clock = clientContext.getClock(); - this.endpoint = clientContext.getEndpoint(); - if (this.endpoint != null) { - this.mtlsEndpoint = this.endpoint.replace("googleapis.com", "mtls.googleapis.com"); + this.clientSettingsEndpoint = clientContext.getEndpoint(); + this.transportChannelProviderEndpoint = null; + if (this.clientSettingsEndpoint != null) { + this.mtlsEndpoint = + this.clientSettingsEndpoint.replace("googleapis.com", "mtls.googleapis.com"); } this.streamWatchdogProvider = FixedWatchdogProvider.create(clientContext.getStreamWatchdog()); @@ -470,10 +475,11 @@ public B setUniverseDomain(String universeDomain) { } public B setEndpoint(String endpoint) { - this.endpoint = endpoint; + this.clientSettingsEndpoint = endpoint; this.switchToMtlsEndpointAllowed = false; - if (this.endpoint != null && this.mtlsEndpoint == null) { - this.mtlsEndpoint = this.endpoint.replace("googleapis.com", "mtls.googleapis.com"); + if (this.clientSettingsEndpoint != null && this.mtlsEndpoint == null) { + this.mtlsEndpoint = + this.clientSettingsEndpoint.replace("googleapis.com", "mtls.googleapis.com"); } return self(); } @@ -570,7 +576,7 @@ public ApiClock getClock() { } public String getEndpoint() { - return endpoint; + return clientSettingsEndpoint; } public String getMtlsEndpoint() { @@ -619,7 +625,7 @@ public String toString() { .add("internalHeaderProvider", internalHeaderProvider) .add("clock", clock) .add("universeDomain", universeDomain) - .add("endpoint", endpoint) + .add("endpoint", clientSettingsEndpoint) .add("mtlsEndpoint", mtlsEndpoint) .add("switchToMtlsEndpointAllowed", switchToMtlsEndpointAllowed) .add("quotaProjectId", quotaProjectId) From 594d1ed36e5887a296b53426d666b346fdce6c54 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 27 Mar 2024 10:54:32 -0400 Subject: [PATCH 25/34] chore: Update the javadocs --- .../com/google/api/gax/rpc/ClientContext.java | 10 ++++--- .../google/api/gax/rpc/EndpointContext.java | 5 ++++ .../com/google/api/gax/rpc/StubSettings.java | 27 ++++++++++--------- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java index e02f5bcca6..a506d9fcd8 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java @@ -155,6 +155,7 @@ public static ClientContext create(StubSettings settings) throws IOException { ExecutorProvider backgroundExecutorProvider = settings.getBackgroundExecutorProvider(); final ScheduledExecutorService backgroundExecutor = backgroundExecutorProvider.getExecutor(); + // A valid EndpointContext should have been created in the StubSettings EndpointContext endpointContext = settings.getEndpointContext(); String endpoint = endpointContext.resolvedEndpoint(); @@ -162,10 +163,11 @@ public static ClientContext create(StubSettings settings) throws IOException { Credentials credentials = settings.getCredentialsProvider().getCredentials(); boolean usingGDCH = credentials instanceof GdchCredentials; if (usingGDCH) { - // Client can only determine if the GDC-H is being used via the Credentials. The Credentials - // object is resolved in the ClientContext and must be passed to the EndpointContext. Rebuild - // the endpointContext only on GDC-H flows. - endpointContext = endpointContext.toBuilder().setUsingGDCH(true).build(); + // Can only determine if the GDC-H is being used via the Credentials. The Credentials object + // is resolved in the ClientContext and must be passed to the EndpointContext. Rebuild the + // endpointContext only on GDC-H flows. + endpointContext = endpointContext.withGDCH(); + // Resolve the new endpoint with the GDC-H flow endpoint = endpointContext.resolvedEndpoint(); // We recompute the GdchCredentials with the audience String audienceString; diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java index 5b1f14fdaf..c2f3ad50ab 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/EndpointContext.java @@ -105,6 +105,11 @@ public static Builder newBuilder() { .setUsingGDCH(false); } + /** Configure the existing EndpointContext to be using GDC-H */ + EndpointContext withGDCH() throws IOException { + return toBuilder().setUsingGDCH(true).build(); + } + /** * Check that the User configured universe domain matches the Credentials' universe domain. The * status code parameter is passed in to this method as it's a limitation of Gax's modules. The diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index 67d15c57e1..5572f5f3c8 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -106,24 +106,25 @@ protected StubSettings(Builder builder) { this.endpointContext = buildEndpointContext(builder); } + /** + * Attempt to build the EndpointContext from the Builder based on all the user configurations + * passed in. + * + * @throws RuntimeException if there is an issue building the EndpointContext + */ private EndpointContext buildEndpointContext(Builder builder) { - EndpointContext endpointContext; - // Attempt to build the EndpointContext from the Builder based on all the - // user configurations passed in. try { - endpointContext = - EndpointContext.newBuilder() - .setServiceName(getServiceName()) - .setClientSettingsEndpoint(builder.clientSettingsEndpoint) - .setTransportChannelProviderEndpoint(builder.transportChannelProviderEndpoint) - .setMtlsEndpoint(builder.mtlsEndpoint) - .setSwitchToMtlsEndpointAllowed(builder.switchToMtlsEndpointAllowed) - .setUniverseDomain(builder.universeDomain) - .build(); + return EndpointContext.newBuilder() + .setServiceName(getServiceName()) + .setClientSettingsEndpoint(builder.clientSettingsEndpoint) + .setTransportChannelProviderEndpoint(builder.transportChannelProviderEndpoint) + .setMtlsEndpoint(builder.mtlsEndpoint) + .setSwitchToMtlsEndpointAllowed(builder.switchToMtlsEndpointAllowed) + .setUniverseDomain(builder.universeDomain) + .build(); } catch (IOException e) { throw new RuntimeException(e); } - return endpointContext; } /** @deprecated Please use {@link #getBackgroundExecutorProvider()}. */ From 626f8916d5bb0f9711b919fc3aed7fd3129f2f53 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 27 Mar 2024 11:00:12 -0400 Subject: [PATCH 26/34] chore: Update toString() --- .../gax/src/main/java/com/google/api/gax/rpc/StubSettings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index 5572f5f3c8..e2d1542407 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -233,7 +233,7 @@ public String toString() { .add("headerProvider", headerProvider) .add("internalHeaderProvider", internalHeaderProvider) .add("clock", clock) - .add("universeDomain", this.endpointContext.resolvedUniverseDomain()) + .add("universeDomain", endpointContext.resolvedUniverseDomain()) .add("endpoint", endpointContext.resolvedEndpoint()) .add("mtlsEndpoint", endpointContext.mtlsEndpoint()) .add("switchToMtlsEndpointAllowed", switchToMtlsEndpointAllowed) From 47efcb7b9dff7568e81e50b86a1a59ddbb733680 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 27 Mar 2024 13:50:44 -0400 Subject: [PATCH 27/34] chore: Pass EndpointContext between StubSettings and ClientContext --- .../com/google/api/gax/rpc/ClientContext.java | 39 +++++++++++++------ .../com/google/api/gax/rpc/StubSettings.java | 14 +++---- 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java index a506d9fcd8..afe6ab0655 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/ClientContext.java @@ -109,6 +109,9 @@ public abstract class ClientContext { @Nullable public abstract String getQuotaProjectId(); + /** Package-Private as this is to be shared to StubSettings */ + abstract EndpointContext getEndpointContext(); + /** Gets the {@link ApiTracerFactory} that will be used to generate traces for operations. */ @BetaApi("The surface for tracing is not stable yet and may change in the future.") @Nonnull @@ -121,18 +124,26 @@ public abstract class ClientContext { @Nullable public abstract String getGdchApiAudience(); + /** Create a new ClientContext with default values */ public static Builder newBuilder() { - return new AutoValue_ClientContext.Builder() - .setBackgroundResources(Collections.emptyList()) - .setExecutor(Executors.newScheduledThreadPool(0)) - .setHeaders(Collections.emptyMap()) - .setInternalHeaders(Collections.emptyMap()) - .setClock(NanoClock.getDefaultClock()) - .setStreamWatchdog(null) - .setStreamWatchdogCheckInterval(Duration.ZERO) - .setTracerFactory(BaseApiTracerFactory.getInstance()) - .setQuotaProjectId(null) - .setGdchApiAudience(null); + try { + return new AutoValue_ClientContext.Builder() + .setBackgroundResources(Collections.emptyList()) + .setExecutor(Executors.newScheduledThreadPool(0)) + .setHeaders(Collections.emptyMap()) + .setInternalHeaders(Collections.emptyMap()) + .setClock(NanoClock.getDefaultClock()) + .setStreamWatchdog(null) + .setStreamWatchdogCheckInterval(Duration.ZERO) + .setTracerFactory(BaseApiTracerFactory.getInstance()) + .setQuotaProjectId(null) + .setGdchApiAudience(null) + // Attempt to create an empty, non-functioning EndpointContext by default. This is + // not exposed to the user via getters/setters. + .setEndpointContext(EndpointContext.newBuilder().build()); + } catch (IOException e) { + throw new RuntimeException(e); + } } public abstract Builder toBuilder(); @@ -263,12 +274,13 @@ public static ClientContext create(StubSettings settings) throws IOException { .setInternalHeaders(ImmutableMap.copyOf(settings.getInternalHeaderProvider().getHeaders())) .setClock(clock) .setDefaultCallContext(defaultCallContext) - .setUniverseDomain(endpointContext.universeDomain()) + .setUniverseDomain(settings.getUniverseDomain()) .setEndpoint(settings.getEndpoint()) .setQuotaProjectId(settings.getQuotaProjectId()) .setStreamWatchdog(watchdog) .setStreamWatchdogCheckInterval(settings.getStreamWatchdogCheckInterval()) .setTracerFactory(settings.getTracerFactory()) + .setEndpointContext(endpointContext) .build(); } @@ -358,6 +370,9 @@ public abstract static class Builder { */ public abstract Builder setGdchApiAudience(String gdchApiAudience); + /** Package-Private as this is to be shared to StubSettings */ + abstract Builder setEndpointContext(EndpointContext endpointContext); + public abstract ClientContext build(); } } diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index e2d1542407..8cd52500de 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -344,19 +344,19 @@ protected Builder(ClientContext clientContext) { this.internalHeaderProvider = FixedHeaderProvider.create(clientContext.getInternalHeaders()); this.clock = clientContext.getClock(); - this.clientSettingsEndpoint = clientContext.getEndpoint(); - this.transportChannelProviderEndpoint = null; - if (this.clientSettingsEndpoint != null) { - this.mtlsEndpoint = - this.clientSettingsEndpoint.replace("googleapis.com", "mtls.googleapis.com"); - } + this.clientSettingsEndpoint = clientContext.getEndpointContext().clientSettingsEndpoint(); + this.transportChannelProviderEndpoint = + clientContext.getEndpointContext().transportChannelProviderEndpoint(); + this.mtlsEndpoint = clientContext.getEndpointContext().mtlsEndpoint(); + this.switchToMtlsEndpointAllowed = + clientContext.getEndpointContext().switchToMtlsEndpointAllowed(); this.streamWatchdogProvider = FixedWatchdogProvider.create(clientContext.getStreamWatchdog()); this.streamWatchdogCheckInterval = clientContext.getStreamWatchdogCheckInterval(); this.tracerFactory = clientContext.getTracerFactory(); this.quotaProjectId = getQuotaProjectIdFromClientContext(clientContext); this.gdchApiAudience = clientContext.getGdchApiAudience(); - this.universeDomain = clientContext.getUniverseDomain(); + this.universeDomain = clientContext.getEndpointContext().universeDomain(); } } From 15fe528d7142cdc1f7df91ef1fd7300a9045f790 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Wed, 27 Mar 2024 14:03:18 -0400 Subject: [PATCH 28/34] chore: Set StubSettings builder values to original configs --- .../com/google/api/gax/rpc/StubSettings.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index 8cd52500de..f11df618ad 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -290,10 +290,15 @@ protected Builder(StubSettings settings) { this.tracerFactory = settings.tracerFactory; this.deprecatedExecutorProviderSet = settings.deprecatedExecutorProviderSet; this.gdchApiAudience = settings.gdchApiAudience; + + // The follow settings will be set to the original user configurations as the + // EndpointContext will be rebuilt in the constructor. this.clientSettingsEndpoint = settings.getEndpointContext().clientSettingsEndpoint(); this.transportChannelProviderEndpoint = settings.getEndpointContext().transportChannelProviderEndpoint(); this.mtlsEndpoint = settings.getEndpointContext().mtlsEndpoint(); + this.switchToMtlsEndpointAllowed = + settings.getEndpointContext().switchToMtlsEndpointAllowed(); this.universeDomain = settings.getEndpointContext().universeDomain(); } @@ -344,18 +349,21 @@ protected Builder(ClientContext clientContext) { this.internalHeaderProvider = FixedHeaderProvider.create(clientContext.getInternalHeaders()); this.clock = clientContext.getClock(); - this.clientSettingsEndpoint = clientContext.getEndpointContext().clientSettingsEndpoint(); - this.transportChannelProviderEndpoint = - clientContext.getEndpointContext().transportChannelProviderEndpoint(); - this.mtlsEndpoint = clientContext.getEndpointContext().mtlsEndpoint(); - this.switchToMtlsEndpointAllowed = - clientContext.getEndpointContext().switchToMtlsEndpointAllowed(); this.streamWatchdogProvider = FixedWatchdogProvider.create(clientContext.getStreamWatchdog()); this.streamWatchdogCheckInterval = clientContext.getStreamWatchdogCheckInterval(); this.tracerFactory = clientContext.getTracerFactory(); this.quotaProjectId = getQuotaProjectIdFromClientContext(clientContext); this.gdchApiAudience = clientContext.getGdchApiAudience(); + + // The follow settings will be set to the original user configurations as the + // EndpointContext will be rebuilt in the constructor. + this.clientSettingsEndpoint = clientContext.getEndpointContext().clientSettingsEndpoint(); + this.transportChannelProviderEndpoint = + clientContext.getEndpointContext().transportChannelProviderEndpoint(); + this.mtlsEndpoint = clientContext.getEndpointContext().mtlsEndpoint(); + this.switchToMtlsEndpointAllowed = + clientContext.getEndpointContext().switchToMtlsEndpointAllowed(); this.universeDomain = clientContext.getEndpointContext().universeDomain(); } } From 3ee2a389eb1c95927963fe5773edef2f41aef047 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 2 Apr 2024 11:31:48 -0400 Subject: [PATCH 29/34] Update showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java Co-authored-by: Blake Li --- .../java/com/google/showcase/v1beta1/it/ITEndpointContext.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java index f17467aed4..238bede980 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java @@ -153,7 +153,7 @@ public void endpointResolution_userSetEndpoint() throws InterruptedException, IO } @Test - public void endpointResolution_userSetUniverseDomain() throws IOException, InterruptedException { + public void endpointResolution_userSetUniverseDomainAndNoUserSetEndpoint() throws IOException, InterruptedException { String customUniverseDomain = "random.com"; EchoClient echoClient = null; try { From 42880eacc89780ee7263e0c4b7f008b4c0a3eb47 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 2 Apr 2024 12:00:32 -0400 Subject: [PATCH 30/34] chore: Address PR comments --- .../com/google/api/gax/rpc/StubSettings.java | 2 +- .../v1beta1/it/ITEndpointContext.java | 136 ++++++++---------- 2 files changed, 57 insertions(+), 81 deletions(-) diff --git a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java index f11df618ad..0e37c12cad 100644 --- a/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java +++ b/gax-java/gax/src/main/java/com/google/api/gax/rpc/StubSettings.java @@ -165,7 +165,7 @@ public final ApiClock getClock() { *

This should be effectively treated as an abstract method. */ @InternalApi - public String getServiceName() { + protected String getServiceName() { return ""; } diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java index 238bede980..4dae20b23d 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java @@ -2,6 +2,7 @@ import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.rpc.ClientContext; +import com.google.auth.Credentials; import com.google.auth.oauth2.GoogleCredentials; import com.google.common.truth.Truth; import com.google.showcase.v1beta1.EchoClient; @@ -10,7 +11,11 @@ import com.google.showcase.v1beta1.stub.EchoStub; import com.google.showcase.v1beta1.stub.EchoStubSettings; import java.io.IOException; +import java.net.URI; +import java.util.List; +import java.util.Map; import java.util.concurrent.TimeUnit; +import org.junit.After; import org.junit.Test; /** @@ -105,104 +110,75 @@ protected Builder(ExtendedEchoStubSettings.Builder stubSettings) { } private static final String DEFAULT_ENDPOINT = "test.googleapis.com:443"; + private EchoClient echoClient; + + @After + public void cleanup() throws InterruptedException { + if (echoClient != null) { + echoClient.close(); + echoClient.awaitTermination( + TestClientInitializer.AWAIT_TERMINATION_SECONDS, TimeUnit.SECONDS); + } + } // Default (no configuration) @Test - public void endpointResolution_default() throws InterruptedException, IOException { - EchoClient echoClient = null; - try { - EchoSettings echoSettings = - ExtendedEchoSettings.newBuilder() - .setCredentialsProvider(NoCredentialsProvider.create()) - .build(); - echoClient = EchoClient.create(echoSettings); - Truth.assertThat(echoClient.getSettings().getEndpoint()).isEqualTo(DEFAULT_ENDPOINT); - Truth.assertThat(echoClient.getSettings().getUniverseDomain()) - .isEqualTo(GoogleCredentials.GOOGLE_DEFAULT_UNIVERSE); - } finally { - if (echoClient != null) { - echoClient.close(); - echoClient.awaitTermination( - TestClientInitializer.AWAIT_TERMINATION_SECONDS, TimeUnit.SECONDS); - } - } + public void endpointResolution_default() throws IOException { + EchoSettings echoSettings = + ExtendedEchoSettings.newBuilder() + .setCredentialsProvider(NoCredentialsProvider.create()) + .build(); + echoClient = EchoClient.create(echoSettings); + Truth.assertThat(echoClient.getSettings().getEndpoint()).isEqualTo(DEFAULT_ENDPOINT); + Truth.assertThat(echoClient.getSettings().getUniverseDomain()) + .isEqualTo(GoogleCredentials.GOOGLE_DEFAULT_UNIVERSE); } // User configuration @Test - public void endpointResolution_userSetEndpoint() throws InterruptedException, IOException { + public void endpointResolution_userSetEndpoint() throws IOException { String customEndpoint = "test.com:123"; - EchoClient echoClient = null; - try { - EchoSettings echoSettings = - ExtendedEchoSettings.newBuilder() - .setCredentialsProvider(NoCredentialsProvider.create()) - .setEndpoint(customEndpoint) - .build(); - echoClient = EchoClient.create(echoSettings); - Truth.assertThat(echoClient.getSettings().getEndpoint()).isEqualTo(customEndpoint); - Truth.assertThat(echoClient.getSettings().getUniverseDomain()) - .isEqualTo(GoogleCredentials.GOOGLE_DEFAULT_UNIVERSE); - } finally { - if (echoClient != null) { - echoClient.close(); - echoClient.awaitTermination( - TestClientInitializer.AWAIT_TERMINATION_SECONDS, TimeUnit.SECONDS); - } - } + EchoSettings echoSettings = + ExtendedEchoSettings.newBuilder() + .setCredentialsProvider(NoCredentialsProvider.create()) + .setEndpoint(customEndpoint) + .build(); + echoClient = EchoClient.create(echoSettings); + Truth.assertThat(echoClient.getSettings().getEndpoint()).isEqualTo(customEndpoint); + Truth.assertThat(echoClient.getSettings().getUniverseDomain()) + .isEqualTo(GoogleCredentials.GOOGLE_DEFAULT_UNIVERSE); } @Test public void endpointResolution_userSetUniverseDomainAndNoUserSetEndpoint() throws IOException, InterruptedException { String customUniverseDomain = "random.com"; - EchoClient echoClient = null; - try { - EchoSettings echoSettings = - ExtendedEchoSettings.newBuilder() - .setCredentialsProvider(NoCredentialsProvider.create()) - .setUniverseDomain(customUniverseDomain) - .build(); - echoClient = EchoClient.create(echoSettings); - // If user configured the universe domain, the endpoint is constructed from it - Truth.assertThat(echoClient.getSettings().getEndpoint()).isEqualTo("test.random.com:443"); - Truth.assertThat(echoClient.getSettings().getUniverseDomain()) - .isEqualTo(customUniverseDomain); - } finally { - if (echoClient != null) { - echoClient.close(); - echoClient.awaitTermination( - TestClientInitializer.AWAIT_TERMINATION_SECONDS, TimeUnit.SECONDS); - } - } + EchoSettings echoSettings = + ExtendedEchoSettings.newBuilder() + .setCredentialsProvider(NoCredentialsProvider.create()) + .setUniverseDomain(customUniverseDomain) + .build(); + echoClient = EchoClient.create(echoSettings); + // If user configured the universe domain, the endpoint is constructed from it + Truth.assertThat(echoClient.getSettings().getEndpoint()).isEqualTo("test.random.com:443"); + Truth.assertThat(echoClient.getSettings().getUniverseDomain()).isEqualTo(customUniverseDomain); } @Test - public void endpointResolution_userSetEndpointAndUniverseDomain() - throws IOException, InterruptedException { + public void endpointResolution_userSetEndpointAndUniverseDomain() throws IOException { String customEndpoint = "custom.endpoint.com:443"; String customUniverseDomain = "random.com"; - EchoClient echoClient = null; - try { - EchoSettings echoSettings = - ExtendedEchoSettings.newBuilder() - .setCredentialsProvider(NoCredentialsProvider.create()) - .setEndpoint(customEndpoint) - .setUniverseDomain(customUniverseDomain) - .build(); - echoClient = EchoClient.create(echoSettings); - // Custom Endpoint sets the endpoint for the client to use - Truth.assertThat(echoClient.getSettings().getEndpoint()).isEqualTo(customEndpoint); - // The universe domain doesn't match the endpoint. The call will fail validation when RPC is - // called. - Truth.assertThat(echoClient.getSettings().getUniverseDomain()) - .isEqualTo(customUniverseDomain); - } finally { - if (echoClient != null) { - echoClient.close(); - echoClient.awaitTermination( - TestClientInitializer.AWAIT_TERMINATION_SECONDS, TimeUnit.SECONDS); - } - } + EchoSettings echoSettings = + ExtendedEchoSettings.newBuilder() + .setCredentialsProvider(NoCredentialsProvider.create()) + .setEndpoint(customEndpoint) + .setUniverseDomain(customUniverseDomain) + .build(); + echoClient = EchoClient.create(echoSettings); + // Custom Endpoint sets the endpoint for the client to use + Truth.assertThat(echoClient.getSettings().getEndpoint()).isEqualTo(customEndpoint); + // The universe domain doesn't match the endpoint. The call will fail validation when RPC is + // called. + Truth.assertThat(echoClient.getSettings().getUniverseDomain()).isEqualTo(customUniverseDomain); } // Default in Builder (no configuration) From 07be497aacfe91241f82dbb3d28bbccb8ccbe398 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 2 Apr 2024 13:17:13 -0400 Subject: [PATCH 31/34] chore: Add UniverseDomainCredentials wrapper --- .../v1beta1/it/ITEndpointContext.java | 195 +++++++++++++++++- 1 file changed, 188 insertions(+), 7 deletions(-) diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java index 4dae20b23d..72aa6693e6 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java @@ -1,17 +1,23 @@ package com.google.showcase.v1beta1.it; -import com.google.api.gax.core.NoCredentialsProvider; +import static org.junit.Assert.assertThrows; + +import com.google.api.gax.core.CredentialsProvider; import com.google.api.gax.rpc.ClientContext; +import com.google.api.gax.rpc.UnauthenticatedException; import com.google.auth.Credentials; import com.google.auth.oauth2.GoogleCredentials; import com.google.common.truth.Truth; import com.google.showcase.v1beta1.EchoClient; +import com.google.showcase.v1beta1.EchoRequest; import com.google.showcase.v1beta1.EchoSettings; import com.google.showcase.v1beta1.it.util.TestClientInitializer; import com.google.showcase.v1beta1.stub.EchoStub; import com.google.showcase.v1beta1.stub.EchoStubSettings; +import io.grpc.ManagedChannelBuilder; import java.io.IOException; import java.net.URI; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -24,7 +30,12 @@ * *

In these tests, the client is not initialized with the default configuration: * `EchoClient.create()`. For showcase tests run in CI, the client must be supplied explicitly - * supplied with NoCredentials. + * supplied with a Credentials value. The tests use a wrapped Credentials and Credentials Provider + * (UniverseDomainCredentials and UniverseDomainCredentialsProvider) which allow for testing this. + * + *

Endpoint resolution has the same behavior for both gRPC and HttpJson. The showcase tests below + * only use the gRPC transport for testing. HttpJson functionality exists inside the wrapper classes, + * but is not being used. */ public class ITEndpointContext { @@ -35,6 +46,8 @@ public class ITEndpointContext { */ private static class ExtendedEchoStubSettings extends EchoStubSettings { + private static final String DUMMY_MTLS_ENDPOINT = "mtls.googleapis.com:443"; + protected ExtendedEchoStubSettings(Builder settingsBuilder) throws IOException { super(settingsBuilder); } @@ -48,6 +61,10 @@ public static ExtendedEchoStubSettings.Builder newBuilder() { return ExtendedEchoStubSettings.Builder.createDefault(); } + public static ExtendedEchoStubSettings.Builder newHttpJsonBuilder() { + return ExtendedEchoStubSettings.Builder.createHttpJsonDefault(); + } + public static class Builder extends EchoStubSettings.Builder { protected Builder(ClientContext clientContext) { @@ -59,7 +76,17 @@ private static ExtendedEchoStubSettings.Builder createDefault() { builder.setTransportChannelProvider(defaultTransportChannelProvider()); builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); - builder.setMtlsEndpoint(getDefaultMtlsEndpoint()); + builder.setMtlsEndpoint(DUMMY_MTLS_ENDPOINT); + builder.setSwitchToMtlsEndpointAllowed(true); + return builder; + } + + private static ExtendedEchoStubSettings.Builder createHttpJsonDefault() { + Builder builder = new Builder(((ClientContext) null)); + builder.setTransportChannelProvider(defaultHttpJsonTransportProviderBuilder().build()); + builder.setCredentialsProvider(defaultCredentialsProviderBuilder().build()); + builder.setInternalHeaderProvider(defaultApiClientHeaderProviderBuilder().build()); + builder.setMtlsEndpoint(DUMMY_MTLS_ENDPOINT); builder.setSwitchToMtlsEndpointAllowed(true); return builder; } @@ -88,6 +115,10 @@ public static EchoSettings.Builder newBuilder() { return ExtendedEchoSettings.Builder.createDefault(); } + public static EchoSettings.Builder newHttpJsonBuilder() { + return ExtendedEchoSettings.Builder.createHttpJsonDefault(); + } + public static class Builder extends EchoSettings.Builder { protected Builder() throws IOException {} @@ -95,6 +126,10 @@ private static ExtendedEchoSettings.Builder createDefault() { return new ExtendedEchoSettings.Builder(ExtendedEchoStubSettings.newBuilder()); } + private static ExtendedEchoSettings.Builder createHttpJsonDefault() { + return new ExtendedEchoSettings.Builder(ExtendedEchoStubSettings.newHttpJsonBuilder()); + } + protected Builder(ClientContext clientContext) { super(clientContext); } @@ -109,6 +144,67 @@ protected Builder(ExtendedEchoStubSettings.Builder stubSettings) { } } + private static class UniverseDomainCredentials extends Credentials { + + private final String universeDomain; + + private UniverseDomainCredentials(String universeDomain) { + this.universeDomain = universeDomain; + } + + @Override + public String getAuthenticationType() { + return null; + } + + @Override + public Map> getRequestMetadata(URI uri) { + return new HashMap<>(); + } + + @Override + public boolean hasRequestMetadata() { + return false; + } + + @Override + public boolean hasRequestMetadataOnly() { + return false; + } + + @Override + public void refresh() { + // no-op + } + + @Override + public String getUniverseDomain() { + return universeDomain; + } + } + + private static class UniverseDomainCredentialsProvider implements CredentialsProvider { + + private final String universeDomain; + + public UniverseDomainCredentialsProvider(String universeDomain) { + this.universeDomain = universeDomain; + } + + public static UniverseDomainCredentialsProvider create() { + return new UniverseDomainCredentialsProvider(GoogleCredentials.GOOGLE_DEFAULT_UNIVERSE); + } + + public static UniverseDomainCredentialsProvider create(String universeDomain) { + return new UniverseDomainCredentialsProvider(universeDomain); + } + + @Override + public Credentials getCredentials() { + return new UniverseDomainCredentials(universeDomain); + } + } + private static final String DEFAULT_ENDPOINT = "test.googleapis.com:443"; private EchoClient echoClient; @@ -126,7 +222,7 @@ public void cleanup() throws InterruptedException { public void endpointResolution_default() throws IOException { EchoSettings echoSettings = ExtendedEchoSettings.newBuilder() - .setCredentialsProvider(NoCredentialsProvider.create()) + .setCredentialsProvider(UniverseDomainCredentialsProvider.create()) .build(); echoClient = EchoClient.create(echoSettings); Truth.assertThat(echoClient.getSettings().getEndpoint()).isEqualTo(DEFAULT_ENDPOINT); @@ -140,7 +236,7 @@ public void endpointResolution_userSetEndpoint() throws IOException { String customEndpoint = "test.com:123"; EchoSettings echoSettings = ExtendedEchoSettings.newBuilder() - .setCredentialsProvider(NoCredentialsProvider.create()) + .setCredentialsProvider(UniverseDomainCredentialsProvider.create()) .setEndpoint(customEndpoint) .build(); echoClient = EchoClient.create(echoSettings); @@ -154,7 +250,7 @@ public void endpointResolution_userSetUniverseDomainAndNoUserSetEndpoint() throw String customUniverseDomain = "random.com"; EchoSettings echoSettings = ExtendedEchoSettings.newBuilder() - .setCredentialsProvider(NoCredentialsProvider.create()) + .setCredentialsProvider(UniverseDomainCredentialsProvider.create()) .setUniverseDomain(customUniverseDomain) .build(); echoClient = EchoClient.create(echoSettings); @@ -169,7 +265,7 @@ public void endpointResolution_userSetEndpointAndUniverseDomain() throws IOExcep String customUniverseDomain = "random.com"; EchoSettings echoSettings = ExtendedEchoSettings.newBuilder() - .setCredentialsProvider(NoCredentialsProvider.create()) + .setCredentialsProvider(UniverseDomainCredentialsProvider.create()) .setEndpoint(customEndpoint) .setUniverseDomain(customUniverseDomain) .build(); @@ -181,6 +277,91 @@ public void endpointResolution_userSetEndpointAndUniverseDomain() throws IOExcep Truth.assertThat(echoClient.getSettings().getUniverseDomain()).isEqualTo(customUniverseDomain); } + @Test + public void universeDomainValidation_credentialsGDU_noUserConfiguration() throws IOException { + EchoSettings echoSettings = + ExtendedEchoSettings.newBuilder() + .setCredentialsProvider(UniverseDomainCredentialsProvider.create()) + .setEndpoint("localhost:7469") + .setTransportChannelProvider( + EchoSettings.defaultGrpcTransportProviderBuilder() + .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) + .build()) + .build(); + echoClient = EchoClient.create(echoSettings); + + EchoRequest request = EchoRequest.newBuilder().setContent("echo").build(); + // Does not throw an error + echoClient.echo(request); + } + + @Test + public void universeDomainValidation_credentialsNonGDU_noUserConfiguration() throws IOException { + EchoSettings echoSettings = + ExtendedEchoSettings.newBuilder() + .setCredentialsProvider(UniverseDomainCredentialsProvider.create("random.com")) + .setEndpoint("localhost:7469") + .setTransportChannelProvider( + EchoSettings.defaultGrpcTransportProviderBuilder() + .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) + .build()) + .build(); + echoClient = EchoClient.create(echoSettings); + + EchoRequest request = EchoRequest.newBuilder().setContent("echo").build(); + UnauthenticatedException exception = + assertThrows(UnauthenticatedException.class, () -> echoClient.echo(request)); + Truth.assertThat(exception.getMessage()) + .contains( + "The configured universe domain (googleapis.com) does not match the universe domain found in the credentials (random.com)."); + } + + @Test + public void universeDomainValidation_credentialsNonGDUMatchesUserConfiguration() + throws IOException { + String universeDomain = "random.com"; + EchoSettings echoSettings = + ExtendedEchoSettings.newBuilder() + .setCredentialsProvider(UniverseDomainCredentialsProvider.create(universeDomain)) + .setEndpoint("localhost:7469") + .setUniverseDomain(universeDomain) + .setTransportChannelProvider( + EchoSettings.defaultGrpcTransportProviderBuilder() + .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) + .build()) + .build(); + echoClient = EchoClient.create(echoSettings); + + EchoRequest request = EchoRequest.newBuilder().setContent("echo").build(); + // Does not throw an error + echoClient.echo(request); + } + + @Test + public void universeDomainValidation_credentialsNonGDUDoesNotMatchUserConfiguration() + throws IOException { + String universeDomain = "random.com"; + String userConfigurationUniverseDomain = "test.com"; + EchoSettings echoSettings = + ExtendedEchoSettings.newBuilder() + .setCredentialsProvider(UniverseDomainCredentialsProvider.create(universeDomain)) + .setEndpoint("localhost:7469") + .setUniverseDomain(userConfigurationUniverseDomain) + .setTransportChannelProvider( + EchoSettings.defaultGrpcTransportProviderBuilder() + .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) + .build()) + .build(); + echoClient = EchoClient.create(echoSettings); + + EchoRequest request = EchoRequest.newBuilder().setContent("echo").build(); + UnauthenticatedException exception = + assertThrows(UnauthenticatedException.class, () -> echoClient.echo(request)); + Truth.assertThat(exception.getMessage()) + .contains( + "The configured universe domain (test.com) does not match the universe domain found in the credentials (random.com)."); + } + // Default in Builder (no configuration) @Test public void endpointResolution_defaultViaBuilder() { From 2c84dd30388b9f0ef8745d792194b672422ea7c8 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 2 Apr 2024 13:57:48 -0400 Subject: [PATCH 32/34] chore: Add javadocs --- .../v1beta1/it/ITEndpointContext.java | 21 ++++++++---- .../it/util/TestClientInitializer.java | 34 +++++++++++-------- 2 files changed, 34 insertions(+), 21 deletions(-) diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java index 72aa6693e6..e52518cd15 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java @@ -34,8 +34,8 @@ * (UniverseDomainCredentials and UniverseDomainCredentialsProvider) which allow for testing this. * *

Endpoint resolution has the same behavior for both gRPC and HttpJson. The showcase tests below - * only use the gRPC transport for testing. HttpJson functionality exists inside the wrapper classes, - * but is not being used. + * only use the gRPC transport for testing. HttpJson functionality exists inside the wrapper + * classes, but is not being used. */ public class ITEndpointContext { @@ -144,6 +144,9 @@ protected Builder(ExtendedEchoStubSettings.Builder stubSettings) { } } + /** + * Credentials Wrapper for showcase testing which is used to override the Universe Domain value. + */ private static class UniverseDomainCredentials extends Credentials { private final String universeDomain; @@ -183,6 +186,10 @@ public String getUniverseDomain() { } } + /** + * CredentialsProvider wrapper to return the wrapped Universe Domain Credentials. This will return + * the custom Universe Domain value. + */ private static class UniverseDomainCredentialsProvider implements CredentialsProvider { private final String universeDomain; @@ -246,7 +253,7 @@ public void endpointResolution_userSetEndpoint() throws IOException { } @Test - public void endpointResolution_userSetUniverseDomainAndNoUserSetEndpoint() throws IOException, InterruptedException { + public void endpointResolution_userSetUniverseDomainAndNoUserSetEndpoint() throws IOException { String customUniverseDomain = "random.com"; EchoSettings echoSettings = ExtendedEchoSettings.newBuilder() @@ -282,7 +289,7 @@ public void universeDomainValidation_credentialsGDU_noUserConfiguration() throws EchoSettings echoSettings = ExtendedEchoSettings.newBuilder() .setCredentialsProvider(UniverseDomainCredentialsProvider.create()) - .setEndpoint("localhost:7469") + .setEndpoint(TestClientInitializer.DEFAULT_GRPC_ENDPOINT) .setTransportChannelProvider( EchoSettings.defaultGrpcTransportProviderBuilder() .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) @@ -300,7 +307,7 @@ public void universeDomainValidation_credentialsNonGDU_noUserConfiguration() thr EchoSettings echoSettings = ExtendedEchoSettings.newBuilder() .setCredentialsProvider(UniverseDomainCredentialsProvider.create("random.com")) - .setEndpoint("localhost:7469") + .setEndpoint(TestClientInitializer.DEFAULT_GRPC_ENDPOINT) .setTransportChannelProvider( EchoSettings.defaultGrpcTransportProviderBuilder() .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) @@ -323,7 +330,7 @@ public void universeDomainValidation_credentialsNonGDUMatchesUserConfiguration() EchoSettings echoSettings = ExtendedEchoSettings.newBuilder() .setCredentialsProvider(UniverseDomainCredentialsProvider.create(universeDomain)) - .setEndpoint("localhost:7469") + .setEndpoint(TestClientInitializer.DEFAULT_GRPC_ENDPOINT) .setUniverseDomain(universeDomain) .setTransportChannelProvider( EchoSettings.defaultGrpcTransportProviderBuilder() @@ -345,7 +352,7 @@ public void universeDomainValidation_credentialsNonGDUDoesNotMatchUserConfigurat EchoSettings echoSettings = ExtendedEchoSettings.newBuilder() .setCredentialsProvider(UniverseDomainCredentialsProvider.create(universeDomain)) - .setEndpoint("localhost:7469") + .setEndpoint(TestClientInitializer.DEFAULT_GRPC_ENDPOINT) .setUniverseDomain(userConfigurationUniverseDomain) .setTransportChannelProvider( EchoSettings.defaultGrpcTransportProviderBuilder() diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/util/TestClientInitializer.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/util/TestClientInitializer.java index f396a0fc6f..f8912fdefa 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/util/TestClientInitializer.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/util/TestClientInitializer.java @@ -44,6 +44,12 @@ public class TestClientInitializer { public static final int AWAIT_TERMINATION_SECONDS = 10; + // gRPC's endpoint must follow the format of {host}:{port} + public static final String DEFAULT_GRPC_ENDPOINT = "localhost:7469"; + // httpjson's endpoint uses `https://` by default if the scheme is not specified + // local test requires `http://` as not SSL/TLS has been set up for showcase + public static final String DEFAULT_HTTPJSON_ENDPOINT = "http://localhost:7469"; + public static EchoClient createGrpcEchoClient() throws Exception { return createGrpcEchoClient(ImmutableList.of()); } @@ -58,7 +64,7 @@ public static EchoClient createGrpcEchoClient(List intercepto .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) .setInterceptorProvider(() -> interceptorList) .build()) - .setEndpoint("localhost:7469") + .setEndpoint(DEFAULT_GRPC_ENDPOINT) .build(); return EchoClient.create(grpcEchoSettings); } @@ -83,7 +89,7 @@ public static EchoClient createGrpcEchoClientWithRetrySettings( .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) .setInterceptorProvider(() -> interceptorList) .build()) - .setEndpoint("localhost:7469") + .setEndpoint(DEFAULT_GRPC_ENDPOINT) .build(); return EchoClient.create(grpcEchoSettings); } @@ -101,7 +107,7 @@ public static EchoClient createHttpJsonEchoClient(List interceptorList) .build()) .build(); @@ -128,7 +134,7 @@ public static EchoClient createHttpJsonEchoClientWithRetrySettings( .setHttpTransport( new NetHttpTransport.Builder().doNotValidateCertificate().build()) .setInterceptorProvider(() -> interceptorList) - .setEndpoint("http://localhost:7469") + .setEndpoint(DEFAULT_HTTPJSON_ENDPOINT) .build()) .build(); return EchoClient.create(httpJsonEchoSettings); @@ -150,7 +156,7 @@ public static EchoClient createGrpcEchoClientCustomBlockSettings( EchoSettings.defaultGrpcTransportProviderBuilder() .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) .build()) - .setEndpoint("localhost:7469") + .setEndpoint(DEFAULT_GRPC_ENDPOINT) .build(); return EchoClient.create(grpcEchoSettings); } @@ -171,7 +177,7 @@ public static EchoClient createHttpJsonEchoClientCustomBlockSettings( EchoSettings.defaultHttpJsonTransportProviderBuilder() .setHttpTransport( new NetHttpTransport.Builder().doNotValidateCertificate().build()) - .setEndpoint("http://localhost:7469") + .setEndpoint(DEFAULT_HTTPJSON_ENDPOINT) .build()) .build(); return EchoClient.create(httpJsonEchoSettings); @@ -197,7 +203,7 @@ public static EchoClient createGrpcEchoClientCustomWaitSettings( EchoSettings.defaultGrpcTransportProviderBuilder() .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) .build()) - .setEndpoint("localhost:7469") + .setEndpoint(DEFAULT_GRPC_ENDPOINT) .build(); return EchoClient.create(grpcEchoSettings); } @@ -222,7 +228,7 @@ public static EchoClient createHttpJsonEchoClientCustomWaitSettings( EchoSettings.defaultHttpJsonTransportProviderBuilder() .setHttpTransport( new NetHttpTransport.Builder().doNotValidateCertificate().build()) - .setEndpoint("http://localhost:7469") + .setEndpoint(DEFAULT_HTTPJSON_ENDPOINT) .build()) .build(); return EchoClient.create(httpJsonEchoSettings); @@ -236,7 +242,7 @@ public static IdentityClient createGrpcIdentityClient() throws Exception { IdentitySettings.defaultGrpcTransportProviderBuilder() .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) .build()) - .setEndpoint("localhost:7469") + .setEndpoint(DEFAULT_GRPC_ENDPOINT) .build(); return IdentityClient.create(grpcIdentitySettings); } @@ -249,7 +255,7 @@ public static IdentityClient createHttpJsonIdentityClient() throws Exception { EchoSettings.defaultHttpJsonTransportProviderBuilder() .setHttpTransport( new NetHttpTransport.Builder().doNotValidateCertificate().build()) - .setEndpoint("http://localhost:7469") + .setEndpoint(DEFAULT_HTTPJSON_ENDPOINT) .build()) .build(); return IdentityClient.create(httpjsonIdentitySettings); @@ -266,7 +272,7 @@ public static ComplianceClient createGrpcComplianceClient(List interceptorList) .build()) - .setEndpoint("localhost:7469") + .setEndpoint(DEFAULT_GRPC_ENDPOINT) .build(); return ComplianceClient.create(grpcComplianceSettings); } @@ -280,7 +286,7 @@ public static ComplianceClient createHttpJsonComplianceClient( EchoSettings.defaultHttpJsonTransportProviderBuilder() .setHttpTransport( new NetHttpTransport.Builder().doNotValidateCertificate().build()) - .setEndpoint("http://localhost:7469") + .setEndpoint(DEFAULT_HTTPJSON_ENDPOINT) .setInterceptorProvider(() -> interceptorList) .build()) .build(); @@ -297,7 +303,7 @@ public static EchoClient createGrpcEchoClientOpentelemetry(ApiTracerFactory metr EchoSettings.defaultGrpcTransportProviderBuilder() .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) .build()) - .setEndpoint("localhost:7469") + .setEndpoint(DEFAULT_GRPC_ENDPOINT) .build(); EchoStubSettings echoStubSettings = @@ -322,7 +328,7 @@ public static EchoClient createHttpJsonEchoClientOpentelemetry( EchoSettings.defaultHttpJsonTransportProviderBuilder() .setHttpTransport( new NetHttpTransport.Builder().doNotValidateCertificate().build()) - .setEndpoint("http://localhost:7469") + .setEndpoint(DEFAULT_HTTPJSON_ENDPOINT) .build()) .build(); From ecda13d3171b14bded2204fbcb23bb96c5bfb714 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 2 Apr 2024 14:04:53 -0400 Subject: [PATCH 33/34] chore: Fix clirr issue --- gax-java/gax/clirr-ignored-differences.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gax-java/gax/clirr-ignored-differences.xml b/gax-java/gax/clirr-ignored-differences.xml index c8e68444ff..b08615ef13 100644 --- a/gax-java/gax/clirr-ignored-differences.xml +++ b/gax-java/gax/clirr-ignored-differences.xml @@ -42,4 +42,9 @@ com/google/api/gax/rpc/ApiCallContext * validateUniverseDomain() + + 7009 + com/google/api/gax/rpc/StubSettings + * getServiceName() + From 565885b40dee795c2ba3c85898fdb91bb6c797b2 Mon Sep 17 00:00:00 2001 From: Lawrence Qiu Date: Tue, 2 Apr 2024 14:23:43 -0400 Subject: [PATCH 34/34] chore: Refactor tests --- .../v1beta1/it/ITEndpointContext.java | 61 ++++++++++++++++--- 1 file changed, 52 insertions(+), 9 deletions(-) diff --git a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java index e52518cd15..ad44622471 100644 --- a/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java +++ b/showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/ITEndpointContext.java @@ -3,6 +3,7 @@ import static org.junit.Assert.assertThrows; import com.google.api.gax.core.CredentialsProvider; +import com.google.api.gax.core.NoCredentialsProvider; import com.google.api.gax.rpc.ClientContext; import com.google.api.gax.rpc.UnauthenticatedException; import com.google.auth.Credentials; @@ -38,7 +39,6 @@ * classes, but is not being used. */ public class ITEndpointContext { - /** * Inside the test cases below, we must explicitly configure serviceName. Normally this should not * be configured at all, but showcase clients do not have a serviceName. The ExtendStubSettings @@ -146,6 +146,9 @@ protected Builder(ExtendedEchoStubSettings.Builder stubSettings) { /** * Credentials Wrapper for showcase testing which is used to override the Universe Domain value. + * + *

For the tests below, it will act as a valid Credentials and is used to test the flows where + * the user passes in a Credentials (i.e. ServiceAccount, AccessToken, Oauth, etc.) */ private static class UniverseDomainCredentials extends Credentials { @@ -213,6 +216,9 @@ public Credentials getCredentials() { } private static final String DEFAULT_ENDPOINT = "test.googleapis.com:443"; + private static final EchoRequest DEFAULT_REQUEST = + EchoRequest.newBuilder().setContent("echo").build(); + private EchoClient echoClient; @After @@ -297,9 +303,8 @@ public void universeDomainValidation_credentialsGDU_noUserConfiguration() throws .build(); echoClient = EchoClient.create(echoSettings); - EchoRequest request = EchoRequest.newBuilder().setContent("echo").build(); // Does not throw an error - echoClient.echo(request); + echoClient.echo(DEFAULT_REQUEST); } @Test @@ -315,9 +320,8 @@ public void universeDomainValidation_credentialsNonGDU_noUserConfiguration() thr .build(); echoClient = EchoClient.create(echoSettings); - EchoRequest request = EchoRequest.newBuilder().setContent("echo").build(); UnauthenticatedException exception = - assertThrows(UnauthenticatedException.class, () -> echoClient.echo(request)); + assertThrows(UnauthenticatedException.class, () -> echoClient.echo(DEFAULT_REQUEST)); Truth.assertThat(exception.getMessage()) .contains( "The configured universe domain (googleapis.com) does not match the universe domain found in the credentials (random.com)."); @@ -339,9 +343,8 @@ public void universeDomainValidation_credentialsNonGDUMatchesUserConfiguration() .build(); echoClient = EchoClient.create(echoSettings); - EchoRequest request = EchoRequest.newBuilder().setContent("echo").build(); // Does not throw an error - echoClient.echo(request); + echoClient.echo(DEFAULT_REQUEST); } @Test @@ -361,14 +364,54 @@ public void universeDomainValidation_credentialsNonGDUDoesNotMatchUserConfigurat .build(); echoClient = EchoClient.create(echoSettings); - EchoRequest request = EchoRequest.newBuilder().setContent("echo").build(); UnauthenticatedException exception = - assertThrows(UnauthenticatedException.class, () -> echoClient.echo(request)); + assertThrows(UnauthenticatedException.class, () -> echoClient.echo(DEFAULT_REQUEST)); Truth.assertThat(exception.getMessage()) .contains( "The configured universe domain (test.com) does not match the universe domain found in the credentials (random.com)."); } + // This test uses NoCredentialsProvider (will default to GDU) + @Test + public void universeDomainValidation_noCredentials_noUserSetUniverseDomain() throws IOException { + EchoSettings echoSettings = + ExtendedEchoSettings.newBuilder() + .setCredentialsProvider(NoCredentialsProvider.create()) + .setEndpoint(TestClientInitializer.DEFAULT_GRPC_ENDPOINT) + .setTransportChannelProvider( + EchoSettings.defaultGrpcTransportProviderBuilder() + .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) + .build()) + .build(); + echoClient = EchoClient.create(echoSettings); + + // Does not throw an error + echoClient.echo(DEFAULT_REQUEST); + } + + // This test uses NoCredentialsProvider (will default to GDU) + @Test + public void universeDomainValidation_noCredentials_userSetUniverseDomain() throws IOException { + String universeDomain = "random.com"; + EchoSettings echoSettings = + ExtendedEchoSettings.newBuilder() + .setCredentialsProvider(NoCredentialsProvider.create()) + .setEndpoint(TestClientInitializer.DEFAULT_GRPC_ENDPOINT) + .setUniverseDomain(universeDomain) + .setTransportChannelProvider( + EchoSettings.defaultGrpcTransportProviderBuilder() + .setChannelConfigurator(ManagedChannelBuilder::usePlaintext) + .build()) + .build(); + echoClient = EchoClient.create(echoSettings); + + UnauthenticatedException exception = + assertThrows(UnauthenticatedException.class, () -> echoClient.echo(DEFAULT_REQUEST)); + Truth.assertThat(exception.getMessage()) + .contains( + "The configured universe domain (random.com) does not match the universe domain found in the credentials (googleapis.com)."); + } + // Default in Builder (no configuration) @Test public void endpointResolution_defaultViaBuilder() {