From 83c738c27616e1cd376bd70d7e84ecbec6972212 Mon Sep 17 00:00:00 2001 From: Emily Wang Date: Wed, 5 Oct 2022 13:39:48 +0000 Subject: [PATCH 1/2] Use service-specific CredentialsProvider --- .../spring/composer/SpringAutoConfigClassComposer.java | 8 +++++--- .../spring/SpringAutoConfigClassComposerTest.java | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) 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 016ac0fb4a..fb9143a2e0 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 @@ -289,7 +289,7 @@ private static MethodDefinition createCredentialsProviderBeanMethod( Service service, String className, Map types) { // @Bean // @ConditionalOnMissingBean - // public CredentialsProvider googleCredentials() throws IOException { + // public CredentialsProvider languageServiceCredentials() throws IOException { // return new DefaultCredentialsProvider(this.clientProperties); // } @@ -315,7 +315,8 @@ private static MethodDefinition createCredentialsProviderBeanMethod( .setType(types.get("CredentialsProvider")) .build(); - String methodName = "googleCredentials"; + String methodName = + CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, service.name()) + "Credentials"; return MethodDefinition.builder() .setName(methodName) .setScope(ScopeNode.PUBLIC) @@ -738,8 +739,9 @@ private static MethodDefinition createClientBeanMethod( String methodName = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, service.name()) + "Client"; + String credentialsProviderName = + CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, service.name()) + "Credentials"; String transportChannelProviderName = "default" + service.name() + "TransportChannelProvider"; - String credentialsProviderName = "googleCredentials"; return MethodDefinition.builder() .setName(methodName) diff --git a/src/test/java/com/google/api/generator/spring/SpringAutoConfigClassComposerTest.java b/src/test/java/com/google/api/generator/spring/SpringAutoConfigClassComposerTest.java index 2e2f6c5653..9217aab940 100644 --- a/src/test/java/com/google/api/generator/spring/SpringAutoConfigClassComposerTest.java +++ b/src/test/java/com/google/api/generator/spring/SpringAutoConfigClassComposerTest.java @@ -144,7 +144,7 @@ public void generatePropertiesClazzTest() { + "\n" + " @Bean\n" + " @ConditionalOnMissingBean\n" - + " public CredentialsProvider googleCredentials() throws IOException {\n" + + " public CredentialsProvider echoCredentials() throws IOException {\n" + " return ((CredentialsProvider) new DefaultCredentialsProvider(this.clientProperties));\n" + " }\n" + "\n" @@ -157,7 +157,7 @@ public void generatePropertiesClazzTest() { + " @Bean\n" + " @ConditionalOnMissingBean\n" + " public EchoClient echoClient(\n" - + " @Qualifier(\"googleCredentials\") CredentialsProvider credentialsProvider,\n" + + " @Qualifier(\"echoCredentials\") CredentialsProvider credentialsProvider,\n" + " @Qualifier(\"defaultEchoTransportChannelProvider\")\n" + " TransportChannelProvider defaultTransportChannelProvider)\n" + " throws IOException {\n" From b655d884399eeea7b9106db2cd402508051c96d8 Mon Sep 17 00:00:00 2001 From: Emily Wang Date: Wed, 5 Oct 2022 18:54:50 +0000 Subject: [PATCH 2/2] Extract repeatedly defined method names and pass as parameters --- .../SpringAutoConfigClassComposer.java | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) 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 fb9143a2e0..b9cf9f8712 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 @@ -81,8 +81,13 @@ public static SpringAutoConfigClassComposer instance() { public GapicClass generate(GapicContext context, Service service) { String packageName = service.pakkage() + ".spring"; Map types = createDynamicTypes(service, packageName); - String className = getThisClassName(service.name()); + String serviceName = service.name(); + String serviceNameLowerCamel = CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, serviceName); + String className = getThisClassName(serviceName); String libName = Utils.getLibName(context); + String credentialsProviderName = serviceNameLowerCamel + "Credentials"; + String transportChannelProviderName = "default" + serviceName + "TransportChannelProvider"; + String clientName = serviceNameLowerCamel + "Client"; GapicClass.Kind kind = Kind.MAIN; GapicServiceConfig gapicServiceConfig = context.serviceConfig(); @@ -98,9 +103,18 @@ public GapicClass generate(GapicContext context, Service service) { .setMethods( Arrays.asList( createConstructor(service.name(), className, types), - createCredentialsProviderBeanMethod(service, className, types), - createTransportChannelProviderBeanMethod(service, types), - createClientBeanMethod(service, className, types, gapicServiceConfig))) + createCredentialsProviderBeanMethod( + service, className, credentialsProviderName, types), + createTransportChannelProviderBeanMethod( + service, transportChannelProviderName, types), + createClientBeanMethod( + service, + className, + credentialsProviderName, + transportChannelProviderName, + clientName, + types, + gapicServiceConfig))) .setAnnotations(createClassAnnotations(service, types, libName)) .build(); return GapicClass.create(kind, classDef); @@ -286,7 +300,7 @@ private static List createClassAnnotations( } private static MethodDefinition createCredentialsProviderBeanMethod( - Service service, String className, Map types) { + Service service, String className, String methodName, Map types) { // @Bean // @ConditionalOnMissingBean // public CredentialsProvider languageServiceCredentials() throws IOException { @@ -315,8 +329,6 @@ private static MethodDefinition createCredentialsProviderBeanMethod( .setType(types.get("CredentialsProvider")) .build(); - String methodName = - CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, service.name()) + "Credentials"; return MethodDefinition.builder() .setName(methodName) .setScope(ScopeNode.PUBLIC) @@ -331,7 +343,7 @@ private static MethodDefinition createCredentialsProviderBeanMethod( } private static MethodDefinition createTransportChannelProviderBeanMethod( - Service service, Map types) { + Service service, String methodName, Map types) { // @Bean // @ConditionalOnMissingBean @@ -346,7 +358,6 @@ private static MethodDefinition createTransportChannelProviderBeanMethod( .setReturnType(STATIC_TYPES.get("TransportChannelProvider")) .build(); - String methodName = "default" + service.name() + "TransportChannelProvider"; return MethodDefinition.builder() .setName(methodName) .setScope(ScopeNode.PUBLIC) @@ -443,9 +454,11 @@ private static Statement setRetrySettingsForMethod( private static MethodDefinition createClientBeanMethod( Service service, String className, + String credentialsProviderName, + String transportChannelProviderName, + String clientName, Map types, GapicServiceConfig gapicServiceConfig) { - // argument variables: VariableExpr credentialsProviderVariableExpr = VariableExpr.withVariable( @@ -736,15 +749,8 @@ private static MethodDefinition createClientBeanMethod( .setArguments(serviceSettingsBuilt) .build(); - String methodName = - CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, service.name()) + "Client"; - - String credentialsProviderName = - CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_CAMEL, service.name()) + "Credentials"; - String transportChannelProviderName = "default" + service.name() + "TransportChannelProvider"; - return MethodDefinition.builder() - .setName(methodName) + .setName(clientName) .setScope(ScopeNode.PUBLIC) .setReturnType(types.get("ServiceClient")) .setArguments(