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 a41544bdcf..91ca9dfcb8 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.%sSpringAutoConfig", 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 aaeab40ab8..b077369db0 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,14 +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(); @@ -85,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"; @@ -110,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), @@ -143,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() @@ -155,22 +153,23 @@ private static List createMemberVariables( ExprStatement clientPropertiesStatement = ExprStatement.withExpr(clientPropertiesVarExpr); Statement loggerStatement = - LoggerUtils.getLoggerDeclarationExpr(serviceName + "AutoConfig", 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; @@ -248,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(); @@ -274,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 = @@ -505,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) @@ -665,8 +664,8 @@ private static MethodDefinition createClientBeanMethod( bodyStatements.add(setTransportChannelProviderStatement); } // retry settings for each method - TypeNode thisClassType = types.get(service.name() + "AutoConfig"); - List retrySettings = + TypeNode thisClassType = types.get(Utils.getServiceAutoConfigurationClassName(service)); + List retrySettings = Utils.processRetrySettings( service, gapicServiceConfig, @@ -777,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")) @@ -895,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() + "SpringAutoConfig") - .setPakkage(packageName) + .setName("CredentialsProvider") + .setPakkage("com.google.api.gax.core") .build()); TypeNode gcpProjectIdProvider = @@ -1021,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() + "AutoConfig", clientAutoconfig); typeMap.put("GcpProjectIdProvider", gcpProjectIdProvider); typeMap.put("Credentials", credentials); typeMap.put("DefaultCredentialsProvider", defaultCredentialsProvider); @@ -1042,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 8ff1b716c3..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 @@ -50,14 +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"; @@ -70,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); @@ -187,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 +218,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( @@ -344,21 +342,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()); @@ -393,7 +382,7 @@ private static Map createDynamicTypes(Service service, String .setPakkage("org.springframework.boot.context.properties") .build()); - typeMap.put(service.name() + "Properties", clientProperties); + typeMap.put(Utils.getServicePropertiesClassName(service), clientProperties); typeMap.put("Credentials", credentials); typeMap.put("CredentialsSupplier", credentialsSupplier); typeMap.put("ConfigurationProperties", configurationProperties); 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 5bd211cbb4..d605533664 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 @@ -43,6 +43,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/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 f26048224e..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 @@ -63,7 +63,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; @@ -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 ce5f3e5509..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 @@ -43,7 +43,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; @@ -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 a8c3faa1a5..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 @@ -44,7 +44,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; @@ -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