Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,8 @@ public GapicClass generate(GapicContext context, Service service) {
Expr thisExpr = ValueExpr.withValue(ThisObjectValue.withType(dynamicTypes.get(className)));
Transport transport = context.transport();
boolean hasRestOption = transport.equals(Transport.GRPC_REST);
String serviceSettingsMethodName =
CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, service.name()) + "Settings";

ClassDefinition classDef =
ClassDefinition.builder()
Expand All @@ -125,16 +127,16 @@ public GapicClass generate(GapicContext context, Service service) {
service, className, credentialsProviderName, dynamicTypes, thisExpr),
createTransportChannelProviderBeanMethod(
transportChannelProviderName, dynamicTypes),
createClientBeanMethod(
createSettingsBeanMethod(
service,
className,
credentialsProviderName,
transportChannelProviderName,
clientName,
dynamicTypes,
gapicServiceConfig,
thisExpr,
hasRestOption),
hasRestOption,
serviceSettingsMethodName),
createClientBeanMethod(dynamicTypes, service, serviceSettingsMethodName),
createUserAgentHeaderProviderMethod(
serviceNameLowerHyphen, className, dynamicTypes, thisExpr)))
.build();
Expand Down Expand Up @@ -530,16 +532,15 @@ private static Statement setRetrySettingsForMethod(
return ExprStatement.withExpr(clientSettingBuilderChain);
}

private static MethodDefinition createClientBeanMethod(
private static MethodDefinition createSettingsBeanMethod(
Service service,
String className,
String credentialsProviderName,
String transportChannelProviderName,
String clientName,
Map<String, TypeNode> types,
GapicServiceConfig gapicServiceConfig,
Expr thisExpr,
boolean hasRestOption) {
boolean hasRestOption,
String serviceSettingsMethodName) {
// argument variables:
VariableExpr credentialsProviderVariableExpr =
VariableExpr.withVariable(
Expand Down Expand Up @@ -849,21 +850,12 @@ private static MethodDefinition createClientBeanMethod(
bodyStatements.addAll(retrySettings);

// return expressions
MethodInvocationExpr serviceSettingsBuilt =
MethodInvocationExpr returnExpr =
MethodInvocationExpr.builder()
.setMethodName("build")
.setExprReferenceExpr(settingsVarExpr.toBuilder().setIsDecl(false).build())
.setReturnType(types.get("ServiceSettings"))
.build();
MethodInvocationExpr returnExpr =
MethodInvocationExpr.builder()
// read more in client composer:
// src/main/java/com/google/api/generator/gapic/composer/common/AbstractServiceClientClassComposer.java#L277-L292
.setMethodName("create")
.setStaticReferenceType(types.get("ServiceClient"))
.setReturnType(types.get("ServiceClient"))
.setArguments(serviceSettingsBuilt)
.build();
List<VariableExpr> argumentsVariableExprs =
Arrays.asList(
credentialsProviderVariableExpr
Expand All @@ -887,15 +879,46 @@ private static MethodDefinition createClientBeanMethod(
.build()))
.build());

String methodName =
CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, service.name()) + "Client";

return MethodDefinition.builder()
.setHeaderCommentStatements(
SpringAutoconfigCommentComposer.createClientBeanComment(
service.name(),
Utils.getServicePropertiesClassName(service),
transportChannelProviderName))
.setName(serviceSettingsMethodName)
.setScope(ScopeNode.PUBLIC)
.setReturnType(types.get("ServiceSettings"))
.setArguments(argumentsVariableExprs)
.setAnnotations(
Arrays.asList(
AnnotationNode.withType(STATIC_TYPES.get("Bean")),
AnnotationNode.withType(STATIC_TYPES.get("ConditionalOnMissingBean"))))
.setThrowsExceptions(Arrays.asList(TypeNode.withExceptionClazz(IOException.class)))
.setReturnExpr(returnExpr)
.setBody(bodyStatements)
.build();
}

private static MethodDefinition createClientBeanMethod(
Map<String, TypeNode> types, Service service, String serviceSettingsMethodName) {
VariableExpr clientSettingsVariableExpr =
VariableExpr.withVariable(
Variable.builder()
.setName(serviceSettingsMethodName)
.setType(types.get("ServiceSettings"))
.build());
MethodInvocationExpr returnExpr =
MethodInvocationExpr.builder()
.setMethodName("create")
.setStaticReferenceType(types.get("ServiceClient"))
.setReturnType(types.get("ServiceClient"))
.setArguments(clientSettingsVariableExpr)
.build();
List<VariableExpr> argumentsVariableExprs =
Arrays.asList(clientSettingsVariableExpr.toBuilder().setIsDecl(true).build());
String methodName =
CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, service.name()) + "Client";
return MethodDefinition.builder()
.setName(methodName)
.setScope(ScopeNode.PUBLIC)
.setReturnType(types.get("ServiceClient"))
Expand All @@ -906,7 +929,6 @@ private static MethodDefinition createClientBeanMethod(
AnnotationNode.withType(STATIC_TYPES.get("ConditionalOnMissingBean"))))
.setThrowsExceptions(Arrays.asList(TypeNode.withExceptionClazz(IOException.class)))
.setReturnExpr(returnExpr)
.setBody(bodyStatements)
.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ public class EchoSpringAutoConfiguration {
*/
@Bean
@ConditionalOnMissingBean
public EchoClient echoClient(
public EchoSettings echoSettings(
@Qualifier("echoCredentials") CredentialsProvider credentialsProvider,
@Qualifier("defaultEchoTransportChannelProvider")
TransportChannelProvider defaultTransportChannelProvider)
Expand Down Expand Up @@ -576,7 +576,13 @@ public class EchoSpringAutoConfiguration {
clientSettingsBuilder
.collideNameSettings()
.setRetrySettings(collideNameRetrySettingBuilder.build());
return EchoClient.create(clientSettingsBuilder.build());
return clientSettingsBuilder.build();
}

@Bean
@ConditionalOnMissingBean
public EchoClient echoClient(EchoSettings echoSettings) throws IOException {
return EchoClient.create(echoSettings);
}

private HeaderProvider userAgentHeaderProvider() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public class EchoSpringAutoConfiguration {
*/
@Bean
@ConditionalOnMissingBean
public EchoClient echoClient(
public EchoSettings echoSettings(
@Qualifier("echoCredentials") CredentialsProvider credentialsProvider,
@Qualifier("defaultEchoTransportChannelProvider")
TransportChannelProvider defaultTransportChannelProvider)
Expand Down Expand Up @@ -556,7 +556,13 @@ public class EchoSpringAutoConfiguration {
clientSettingsBuilder
.collideNameSettings()
.setRetrySettings(collideNameRetrySettingBuilder.build());
return EchoClient.create(clientSettingsBuilder.build());
return clientSettingsBuilder.build();
}

@Bean
@ConditionalOnMissingBean
public EchoClient echoClient(EchoSettings echoSettings) throws IOException {
return EchoClient.create(echoSettings);
}

private HeaderProvider userAgentHeaderProvider() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ public class EchoSpringAutoConfiguration {
*/
@Bean
@ConditionalOnMissingBean
public EchoClient echoClient(
public EchoSettings echoSettings(
@Qualifier("echoCredentials") CredentialsProvider credentialsProvider,
@Qualifier("defaultEchoTransportChannelProvider")
TransportChannelProvider defaultTransportChannelProvider)
Expand Down Expand Up @@ -564,7 +564,13 @@ public class EchoSpringAutoConfiguration {
clientSettingsBuilder
.collideNameSettings()
.setRetrySettings(collideNameRetrySettingBuilder.build());
return EchoClient.create(clientSettingsBuilder.build());
return clientSettingsBuilder.build();
}

@Bean
@ConditionalOnMissingBean
public EchoClient echoClient(EchoSettings echoSettings) throws IOException {
return EchoClient.create(echoSettings);
}

private HeaderProvider userAgentHeaderProvider() {
Expand Down