From d9a05328fe19598dc53ca6bac3d8f1476e9b65d2 Mon Sep 17 00:00:00 2001 From: Emily Wang Date: Thu, 10 Nov 2022 18:46:14 +0000 Subject: [PATCH 1/3] fix: autoconfiguration class name --- .../java/com/google/api/generator/spring/SpringWriter.java | 2 +- .../spring/composer/SpringAutoConfigClassComposer.java | 6 +++--- .../com/google/api/generator/spring/SpringWriterTest.java | 2 +- .../composer/goldens/EchoSpringAutoConfigurationFull.golden | 2 +- .../composer/goldens/EchoSpringAutoConfigurationGrpc.golden | 2 +- .../goldens/EchoSpringAutoConfigurationGrpcRest.golden | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/google/api/generator/spring/SpringWriter.java b/src/main/java/com/google/api/generator/spring/SpringWriter.java index 6b1280d3dc..56c1fe3de7 100644 --- a/src/main/java/com/google/api/generator/spring/SpringWriter.java +++ b/src/main/java/com/google/api/generator/spring/SpringWriter.java @@ -138,7 +138,7 @@ static String buildAutoConfigRegistrationString(GapicContext context) { service -> sb.add( String.format( - "%s.spring.%sSpringAutoConfig", service.pakkage(), service.name()))); + "%s.spring.%sSpringAutoConfiguration", service.pakkage(), service.name()))); return sb.toString(); } diff --git a/src/main/java/com/google/api/generator/spring/composer/SpringAutoConfigClassComposer.java b/src/main/java/com/google/api/generator/spring/composer/SpringAutoConfigClassComposer.java index 5af37202d9..e8191537a1 100644 --- a/src/main/java/com/google/api/generator/spring/composer/SpringAutoConfigClassComposer.java +++ b/src/main/java/com/google/api/generator/spring/composer/SpringAutoConfigClassComposer.java @@ -169,7 +169,7 @@ private static List createMemberVariables( ExprStatement clientPropertiesStatement = ExprStatement.withExpr(clientPropertiesVarExpr); Statement loggerStatement = - LoggerUtils.getLoggerDeclarationExpr(serviceName + "AutoConfig", types); + LoggerUtils.getLoggerDeclarationExpr(serviceName + "AutoConfiguration", types); return Arrays.asList(clientPropertiesStatement, loggerStatement); } @@ -885,7 +885,7 @@ private static Map createDynamicTypes(Service service, String TypeNode clientAutoconfig = TypeNode.withReference( VaporReference.builder() - .setName(service.name() + "SpringAutoConfig") + .setName(service.name() + "SpringAutoConfiguration") .setPakkage(packageName) .build()); @@ -986,7 +986,7 @@ private static Map createDynamicTypes(Service service, String typeMap.put("CredentialsProvider", credentialsProvider); typeMap.put(service.name() + "Properties", clientProperties); - typeMap.put(service.name() + "AutoConfig", clientAutoconfig); + typeMap.put(service.name() + "AutoConfiguration", clientAutoconfig); typeMap.put("GcpProjectIdProvider", gcpProjectIdProvider); typeMap.put("Credentials", credentials); typeMap.put("DefaultCredentialsProvider", defaultCredentialsProvider); diff --git a/src/test/java/com/google/api/generator/spring/SpringWriterTest.java b/src/test/java/com/google/api/generator/spring/SpringWriterTest.java index 24369f5e12..ff7566f464 100644 --- a/src/test/java/com/google/api/generator/spring/SpringWriterTest.java +++ b/src/test/java/com/google/api/generator/spring/SpringWriterTest.java @@ -36,7 +36,7 @@ public void setUp() { @Test public void buildAutoConfigRegistrationStringTest() { String result = SpringWriter.buildAutoConfigRegistrationString(context); - String expected = "com.google.showcase.v1beta1.spring.EchoSpringAutoConfig"; + String expected = "com.google.showcase.v1beta1.spring.EchoSpringAutoConfiguration"; assertEquals(expected, result); } diff --git a/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationFull.golden b/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationFull.golden index 15c1d4c6f9..7ec0f979d5 100644 --- a/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationFull.golden +++ b/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationFull.golden @@ -61,7 +61,7 @@ import org.threeten.bp.Duration; @EnableConfigurationProperties(EchoSpringProperties.class) public class EchoSpringAutoConfiguration { private final EchoSpringProperties clientProperties; - private static final Log LOGGER = LogFactory.getLog(EchoSpringAutoConfig.class); + private static final Log LOGGER = LogFactory.getLog(EchoSpringAutoConfiguration.class); protected EchoSpringAutoConfiguration(EchoSpringProperties clientProperties) { this.clientProperties = clientProperties; diff --git a/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpc.golden b/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpc.golden index cad5a2bc75..ec82ea5ff4 100644 --- a/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpc.golden +++ b/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpc.golden @@ -41,7 +41,7 @@ import org.threeten.bp.Duration; @EnableConfigurationProperties(EchoSpringProperties.class) public class EchoSpringAutoConfiguration { private final EchoSpringProperties clientProperties; - private static final Log LOGGER = LogFactory.getLog(EchoSpringAutoConfig.class); + private static final Log LOGGER = LogFactory.getLog(EchoSpringAutoConfiguration.class); protected EchoSpringAutoConfiguration(EchoSpringProperties clientProperties) { this.clientProperties = clientProperties; diff --git a/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpcRest.golden b/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpcRest.golden index e25e7ec599..e18d4bbff8 100644 --- a/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpcRest.golden +++ b/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpcRest.golden @@ -42,7 +42,7 @@ import org.threeten.bp.Duration; @EnableConfigurationProperties(EchoSpringProperties.class) public class EchoSpringAutoConfiguration { private final EchoSpringProperties clientProperties; - private static final Log LOGGER = LogFactory.getLog(EchoSpringAutoConfig.class); + private static final Log LOGGER = LogFactory.getLog(EchoSpringAutoConfiguration.class); protected EchoSpringAutoConfiguration(EchoSpringProperties clientProperties) { this.clientProperties = clientProperties; From 5436da16f2b0b8b4c5407934dce87e7eb7149e4a Mon Sep 17 00:00:00 2001 From: Emily Wang Date: Tue, 15 Nov 2022 22:20:32 -0500 Subject: [PATCH 2/3] Move autoconfiguration and properties class names to util methods --- .../api/generator/spring/SpringWriter.java | 3 +- .../SpringAutoConfigClassComposer.java | 67 ++++++++----------- .../SpringPropertiesClassComposer.java | 29 +++----- .../api/generator/spring/utils/Utils.java | 8 +++ .../EchoSpringAutoConfigurationFull.golden | 2 +- .../EchoSpringAutoConfigurationGrpc.golden | 2 +- ...EchoSpringAutoConfigurationGrpcRest.golden | 2 +- 7 files changed, 50 insertions(+), 63 deletions(-) diff --git a/src/main/java/com/google/api/generator/spring/SpringWriter.java b/src/main/java/com/google/api/generator/spring/SpringWriter.java index 56c1fe3de7..536812c53e 100644 --- a/src/main/java/com/google/api/generator/spring/SpringWriter.java +++ b/src/main/java/com/google/api/generator/spring/SpringWriter.java @@ -138,7 +138,8 @@ static String buildAutoConfigRegistrationString(GapicContext context) { service -> sb.add( String.format( - "%s.spring.%sSpringAutoConfiguration", service.pakkage(), service.name()))); + "%s.spring.%s", + service.pakkage(), Utils.getServiceAutoConfigurationClassName(service)))); return sb.toString(); } diff --git a/src/main/java/com/google/api/generator/spring/composer/SpringAutoConfigClassComposer.java b/src/main/java/com/google/api/generator/spring/composer/SpringAutoConfigClassComposer.java index 1a7869c629..5f23f8dd2e 100644 --- a/src/main/java/com/google/api/generator/spring/composer/SpringAutoConfigClassComposer.java +++ b/src/main/java/com/google/api/generator/spring/composer/SpringAutoConfigClassComposer.java @@ -60,13 +60,12 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class SpringAutoConfigClassComposer implements ClassComposer { - private static final String CLASS_NAME_PATTERN = "%sSpringAutoConfiguration"; - private static final SpringAutoConfigClassComposer INSTANCE = new SpringAutoConfigClassComposer(); private static final Map STATIC_TYPES = createStaticTypes(); @@ -84,7 +83,7 @@ public GapicClass generate(GapicContext context, Service service) { String serviceName = service.name(); String serviceNameLowerCamel = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, serviceName); String serviceNameLowerHyphen = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_HYPHEN, serviceName); - String className = getThisClassName(serviceName); + String className = Utils.getServiceAutoConfigurationClassName(service); String credentialsProviderName = serviceNameLowerCamel + "Credentials"; String transportChannelProviderName = "default" + serviceName + "TransportChannelProvider"; String clientName = serviceNameLowerCamel + "Client"; @@ -109,7 +108,7 @@ public GapicClass generate(GapicContext context, Service service) { .setAnnotations(createClassAnnotations(service, types)) .setMethods( Arrays.asList( - createConstructor(service.name(), className, types, thisExpr), + createConstructor(service, className, types, thisExpr), createCredentialsProviderBeanMethod( service, className, credentialsProviderName, types, thisExpr), createTransportChannelProviderBeanMethod(transportChannelProviderName, types), @@ -142,7 +141,7 @@ private static List createMemberVariables( Variable clientPropertiesVar = Variable.builder() .setName("clientProperties") - .setType(types.get(serviceName + "Properties")) + .setType(types.get(Utils.getServicePropertiesClassName(service))) .build(); VariableExpr clientPropertiesVarExpr = VariableExpr.builder() @@ -154,22 +153,23 @@ private static List createMemberVariables( ExprStatement clientPropertiesStatement = ExprStatement.withExpr(clientPropertiesVarExpr); Statement loggerStatement = - LoggerUtils.getLoggerDeclarationExpr(serviceName + "AutoConfiguration", types); + LoggerUtils.getLoggerDeclarationExpr( + Utils.getServiceAutoConfigurationClassName(service), types); return Arrays.asList(clientPropertiesStatement, loggerStatement); } private static MethodDefinition createConstructor( - String serviceName, String className, Map types, Expr thisExpr) { + Service service, String className, Map types, Expr thisExpr) { VariableExpr propertiesVarExpr = VariableExpr.withVariable( Variable.builder() .setName("clientProperties") - .setType(types.get(serviceName + "Properties")) + .setType(types.get(Utils.getServicePropertiesClassName(service))) .build()); Variable clientPropertiesVar = Variable.builder() .setName("clientProperties") - .setType(types.get(serviceName + "Properties")) + .setType(types.get(Utils.getServicePropertiesClassName(service))) .build(); // this.clientProperties = clientProperties; @@ -247,7 +247,7 @@ private static List createClassAnnotations( VariableExpr.builder() .setVariable( Variable.builder().setType(TypeNode.CLASS_OBJECT).setName("class").build()) - .setStaticReferenceType(types.get(service.name() + "Properties")) + .setStaticReferenceType(types.get(Utils.getServicePropertiesClassName(service))) .build()) .build(); @@ -273,7 +273,7 @@ private static MethodDefinition createCredentialsProviderBeanMethod( Variable clientPropertiesVar = Variable.builder() .setName("clientProperties") - .setType(types.get(service.name() + "Properties")) + .setType(types.get(Utils.getServicePropertiesClassName(service))) .build(); VariableExpr thisClientProperties = @@ -504,7 +504,7 @@ private static MethodDefinition createClientBeanMethod( Variable clientPropertiesVar = Variable.builder() .setName("clientProperties") - .setType(types.get(service.name() + "Properties")) + .setType(types.get(Utils.getServicePropertiesClassName(service))) .build(); VariableExpr thisClientPropertiesVarExpr = VariableExpr.withVariable(clientPropertiesVar) @@ -664,7 +664,7 @@ private static MethodDefinition createClientBeanMethod( bodyStatements.add(setTransportChannelProviderStatement); } // retry settings for each method - TypeNode thisClassType = types.get(service.name() + "AutoConfig"); + TypeNode thisClassType = types.get(Utils.getServiceAutoConfigurationClassName(service)); List retrySettings = Utils.processRetrySettings( service, @@ -776,12 +776,13 @@ private static MethodDefinition createClientBeanMethod( String methodName = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, service.name()) + "Client"; - String propertiesClassName = service.name() + "Properties"; return MethodDefinition.builder() .setHeaderCommentStatements( SpringAutoconfigCommentComposer.createClientBeanComment( - service.name(), propertiesClassName, transportChannelProviderName)) + service.name(), + Utils.getServicePropertiesClassName(service), + transportChannelProviderName)) .setName(methodName) .setScope(ScopeNode.PUBLIC) .setReturnType(types.get("ServiceClient")) @@ -894,35 +895,27 @@ private static Map createStaticTypes() { } private static Map createDynamicTypes(Service service, String packageName) { - Map typeMap = - Arrays.asList(CLASS_NAME_PATTERN).stream() - .collect( - Collectors.toMap( - p -> String.format(p, service.name()), - p -> - TypeNode.withReference( - VaporReference.builder() - .setName(String.format(p, service.name())) - .setPakkage(packageName) - .build()))); - TypeNode credentialsProvider = + Map typeMap = new HashMap<>(); + + TypeNode clientAutoconfiguration = TypeNode.withReference( VaporReference.builder() - .setName("CredentialsProvider") - .setPakkage("com.google.api.gax.core") + .setName(Utils.getServiceAutoConfigurationClassName(service)) + .setPakkage(packageName) .build()); + TypeNode clientProperties = TypeNode.withReference( VaporReference.builder() - .setName(service.name() + "SpringProperties") + .setName(Utils.getServicePropertiesClassName(service)) .setPakkage(packageName) .build()); - TypeNode clientAutoconfig = + TypeNode credentialsProvider = TypeNode.withReference( VaporReference.builder() - .setName(service.name() + "SpringAutoConfiguration") - .setPakkage(packageName) + .setName("CredentialsProvider") + .setPakkage("com.google.api.gax.core") .build()); TypeNode gcpProjectIdProvider = @@ -1020,9 +1013,9 @@ private static Map createDynamicTypes(Service service, String .setPakkage("org.springframework.beans.factory.annotation") .build()); + typeMap.put(Utils.getServiceAutoConfigurationClassName(service), clientAutoconfiguration); + typeMap.put(Utils.getServicePropertiesClassName(service), clientProperties); typeMap.put("CredentialsProvider", credentialsProvider); - typeMap.put(service.name() + "Properties", clientProperties); - typeMap.put(service.name() + "AutoConfiguration", clientAutoconfig); typeMap.put("GcpProjectIdProvider", gcpProjectIdProvider); typeMap.put("Credentials", credentials); typeMap.put("DefaultCredentialsProvider", defaultCredentialsProvider); @@ -1041,8 +1034,4 @@ private static Map createDynamicTypes(Service service, String return typeMap; } - - private static String getThisClassName(String serviceName) { - return String.format(CLASS_NAME_PATTERN, serviceName); - } } diff --git a/src/main/java/com/google/api/generator/spring/composer/SpringPropertiesClassComposer.java b/src/main/java/com/google/api/generator/spring/composer/SpringPropertiesClassComposer.java index 685830d7f8..a9fc6f2424 100644 --- a/src/main/java/com/google/api/generator/spring/composer/SpringPropertiesClassComposer.java +++ b/src/main/java/com/google/api/generator/spring/composer/SpringPropertiesClassComposer.java @@ -50,13 +50,12 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class SpringPropertiesClassComposer implements ClassComposer { - private static final String CLASS_NAME_PATTERN = "%sSpringProperties"; - private static final Map staticTypes = createStaticTypes(); private static final String RETRY_PARAM_DEFINITIONS_VAR_NAME = "RETRY_PARAM_DEFINITIONS"; @@ -69,7 +68,7 @@ public static SpringPropertiesClassComposer instance() { @Override public GapicClass generate(GapicContext context, Service service) { String packageName = Utils.getSpringPackageName(service.pakkage()); - String className = String.format(CLASS_NAME_PATTERN, service.name()); + String className = Utils.getServicePropertiesClassName(service); GapicServiceConfig gapicServiceConfig = context.serviceConfig(); Map types = createDynamicTypes(service, packageName); boolean hasRestOption = context.transport().equals(Transport.GRPC_REST); @@ -186,7 +185,7 @@ private static List createMemberVariables( // private static final ImmutableMap RETRY_PARAM_DEFINITIONS; // declare each retry settings with its default value. use defaults from serviceConfig - TypeNode thisClassType = types.get(service.name() + "Properties"); + TypeNode thisClassType = types.get(Utils.getServicePropertiesClassName(service)); List retrySettings = Utils.processRetrySettings( service, @@ -220,7 +219,7 @@ private static List createGetterSetters( GapicServiceConfig gapicServiceConfig, boolean hasRestOption) { - TypeNode thisClassType = types.get(service.name() + "Properties"); + TypeNode thisClassType = types.get(Utils.getServicePropertiesClassName(service)); List methodDefinitions = new ArrayList<>(); methodDefinitions.add( @@ -316,21 +315,12 @@ private static MethodDefinition createSetterMethod( } private static Map createDynamicTypes(Service service, String packageName) { - Map typeMap = - Arrays.asList(CLASS_NAME_PATTERN).stream() - .collect( - Collectors.toMap( - p -> String.format(p, service.name()), - p -> - TypeNode.withReference( - VaporReference.builder() - .setName(String.format(p, service.name())) - .setPakkage(packageName) - .build()))); + Map typeMap = new HashMap<>(); + TypeNode clientProperties = TypeNode.withReference( VaporReference.builder() - .setName(service.name() + "SpringProperties") + .setName(Utils.getServicePropertiesClassName(service)) .setPakkage(packageName) .build()); @@ -370,7 +360,7 @@ private static Map createDynamicTypes(Service service, String TypeNode.withReference( VaporReference.builder().setName("Duration").setPakkage("org.threeten.bp").build()); - typeMap.put(service.name() + "Properties", clientProperties); + typeMap.put(Utils.getServicePropertiesClassName(service), clientProperties); typeMap.put("Credentials", credentials); typeMap.put("Duration", duration); typeMap.put("CredentialsSupplier", credentialsSupplier); @@ -386,7 +376,6 @@ private static Map createStaticTypes() { return concreteClazzes.stream() .collect( Collectors.toMap( - c -> c.getSimpleName(), - c -> TypeNode.withReference(ConcreteReference.withClazz(c)))); + Class::getSimpleName, c -> TypeNode.withReference(ConcreteReference.withClazz(c)))); } } diff --git a/src/main/java/com/google/api/generator/spring/utils/Utils.java b/src/main/java/com/google/api/generator/spring/utils/Utils.java index ce02532b84..116f08786b 100644 --- a/src/main/java/com/google/api/generator/spring/utils/Utils.java +++ b/src/main/java/com/google/api/generator/spring/utils/Utils.java @@ -42,6 +42,14 @@ public class Utils { private static final String BRAND_NAME = "spring.cloud.gcp"; + public static String getServiceAutoConfigurationClassName(Service service) { + return service.name() + "SpringAutoConfiguration"; + } + + public static String getServicePropertiesClassName(Service service) { + return service.name() + "SpringProperties"; + } + public static String getLibName(GapicContext context) { // Returns parsed name of client library // This should only be used in descriptive context, such as metadata and javadocs diff --git a/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationFull.golden b/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationFull.golden index 9dd8a68927..57e37709a5 100644 --- a/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationFull.golden +++ b/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationFull.golden @@ -97,7 +97,7 @@ public class EchoSpringAutoConfiguration { * client * *

Individual retry settings are configured as well. It will use the relevant client library's - * default retry settings when they are not specified in EchoProperties. + * default retry settings when they are not specified in EchoSpringProperties. */ @Bean @ConditionalOnMissingBean diff --git a/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpc.golden b/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpc.golden index 50dafdfa0b..be43d1f5ba 100644 --- a/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpc.golden +++ b/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpc.golden @@ -77,7 +77,7 @@ public class EchoSpringAutoConfiguration { * client * *

Individual retry settings are configured as well. It will use the relevant client library's - * default retry settings when they are not specified in EchoProperties. + * default retry settings when they are not specified in EchoSpringProperties. */ @Bean @ConditionalOnMissingBean diff --git a/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpcRest.golden b/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpcRest.golden index 59d10013c1..9028ac55ed 100644 --- a/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpcRest.golden +++ b/src/test/java/com/google/api/generator/spring/composer/goldens/EchoSpringAutoConfigurationGrpcRest.golden @@ -78,7 +78,7 @@ public class EchoSpringAutoConfiguration { * client * *

Individual retry settings are configured as well. It will use the relevant client library's - * default retry settings when they are not specified in EchoProperties. + * default retry settings when they are not specified in EchoSpringProperties. */ @Bean @ConditionalOnMissingBean From cb9f394753f0234acfa5514de97508e8a64886f8 Mon Sep 17 00:00:00 2001 From: Emily Wang Date: Fri, 18 Nov 2022 10:34:21 -0500 Subject: [PATCH 3/3] Fix missed merge conflict --- .../spring/composer/SpringPropertiesClassComposer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/google/api/generator/spring/composer/SpringPropertiesClassComposer.java b/src/main/java/com/google/api/generator/spring/composer/SpringPropertiesClassComposer.java index f4fc2fdc23..b6f0a01258 100644 --- a/src/main/java/com/google/api/generator/spring/composer/SpringPropertiesClassComposer.java +++ b/src/main/java/com/google/api/generator/spring/composer/SpringPropertiesClassComposer.java @@ -186,7 +186,7 @@ private static List createMemberVariables( // declare each retry settings with its default value. use defaults from serviceConfig TypeNode thisClassType = types.get(Utils.getServicePropertiesClassName(service)); - List retrySettings = + List retrySettings = Utils.processRetrySettings( service, serviceConfig,