diff --git a/src/main/java/com/google/api/generator/gapic/composer/Composer.java b/src/main/java/com/google/api/generator/gapic/composer/Composer.java index 02e1dc9bcc..adf5f03432 100644 --- a/src/main/java/com/google/api/generator/gapic/composer/Composer.java +++ b/src/main/java/com/google/api/generator/gapic/composer/Composer.java @@ -60,8 +60,8 @@ public static List generateServiceClasses( @Nonnull Map resourceNames, @Nonnull Map messageTypes) { List clazzes = new ArrayList<>(); - clazzes.addAll(generateStubClasses(service, serviceConfig, messageTypes)); - clazzes.addAll(generateClientSettingsClasses(service, messageTypes)); + clazzes.addAll(generateStubClasses(service, serviceConfig, messageTypes, resourceNames)); + clazzes.addAll(generateClientSettingsClasses(service, messageTypes, resourceNames)); clazzes.addAll(generateMocksAndTestClasses(service, resourceNames, messageTypes)); // TODO(miraleung): Generate test classes. return clazzes; @@ -76,7 +76,10 @@ public static List generateResourceNameHelperClasses( } public static List generateStubClasses( - Service service, GapicServiceConfig serviceConfig, Map messageTypes) { + Service service, + GapicServiceConfig serviceConfig, + Map messageTypes, + Map resourceNames) { List clazzes = new ArrayList<>(); clazzes.add(ServiceStubClassComposer.instance().generate(service, messageTypes)); clazzes.add( @@ -87,9 +90,10 @@ public static List generateStubClasses( } public static List generateClientSettingsClasses( - Service service, Map messageTypes) { + Service service, Map messageTypes, Map resourceNames) { List clazzes = new ArrayList<>(); - clazzes.add(ServiceClientClassComposer.instance().generate(service, messageTypes)); + clazzes.add( + ServiceClientClassComposer.instance().generate(service, messageTypes, resourceNames)); clazzes.add(ServiceSettingsClassComposer.instance().generate(service, messageTypes)); return clazzes; } diff --git a/src/main/java/com/google/api/generator/gapic/composer/ServiceClientClassComposer.java b/src/main/java/com/google/api/generator/gapic/composer/ServiceClientClassComposer.java index 5f6a00f4d8..7979dc74ed 100644 --- a/src/main/java/com/google/api/generator/gapic/composer/ServiceClientClassComposer.java +++ b/src/main/java/com/google/api/generator/gapic/composer/ServiceClientClassComposer.java @@ -62,6 +62,7 @@ import com.google.api.generator.gapic.model.Method; import com.google.api.generator.gapic.model.Method.Stream; import com.google.api.generator.gapic.model.MethodArgument; +import com.google.api.generator.gapic.model.ResourceName; import com.google.api.generator.gapic.model.Service; import com.google.api.generator.gapic.utils.JavaStyle; import com.google.common.annotations.VisibleForTesting; @@ -84,7 +85,7 @@ import java.util.stream.Collectors; import javax.annotation.Generated; -public class ServiceClientClassComposer implements ClassComposer { +public class ServiceClientClassComposer { private static final ServiceClientClassComposer INSTANCE = new ServiceClientClassComposer(); private static final String PAGED_RESPONSE_TYPE_NAME_PATTERN = "%sPagedResponse"; private static final String CALLABLE_NAME_PATTERN = "%sCallable"; @@ -108,8 +109,8 @@ public static ServiceClientClassComposer instance() { return INSTANCE; } - @Override - public GapicClass generate(Service service, Map messageTypes) { + public GapicClass generate( + Service service, Map messageTypes, Map resourceNames) { Map types = createTypes(service, messageTypes); String className = getClientClassName(service); GapicClass.Kind kind = Kind.MAIN; diff --git a/src/main/java/com/google/api/generator/gapic/composer/ServiceClientSampleCodeComposer.java b/src/main/java/com/google/api/generator/gapic/composer/ServiceClientSampleCodeComposer.java index c4a2e5f4f8..98d66d3148 100644 --- a/src/main/java/com/google/api/generator/gapic/composer/ServiceClientSampleCodeComposer.java +++ b/src/main/java/com/google/api/generator/gapic/composer/ServiceClientSampleCodeComposer.java @@ -44,7 +44,9 @@ public static String composeClassHeaderCredentialsSampleCode( .setName("myCredentials") .setPakkage(clientType.reference().pakkage()) .build()); - VariableExpr settingsVarExpr = createVariableExpr(settingsName, settingsType); + VariableExpr settingsVarExpr = + VariableExpr.withVariable( + Variable.builder().setName(settingsName).setType(settingsType).build()); MethodInvocationExpr newBuilderMethodExpr = MethodInvocationExpr.builder() .setStaticReferenceType(settingsType) @@ -52,10 +54,13 @@ public static String composeClassHeaderCredentialsSampleCode( .build(); TypeNode fixedCredentialProvideType = TypeNode.withReference(ConcreteReference.withClazz(FixedCredentialsProvider.class)); + VariableExpr myCredentialVarExpr = + VariableExpr.withVariable( + Variable.builder().setName("myCredentials").setType(myCredentialsType).build()); MethodInvocationExpr credentialArgExpr = MethodInvocationExpr.builder() .setStaticReferenceType(fixedCredentialProvideType) - .setArguments(createVariableExpr("myCredentials", myCredentialsType)) + .setArguments(myCredentialVarExpr) .setMethodName("create") .build(); MethodInvocationExpr credentialsMethodExpr = @@ -78,7 +83,9 @@ public static String composeClassHeaderCredentialsSampleCode( // Initialized client with create() method. // e.g. EchoClient echoClient = EchoClient.create(echoSettings); - VariableExpr clientVarExpr = createVariableExpr(clientName, clientType); + VariableExpr clientVarExpr = + VariableExpr.withVariable( + Variable.builder().setName(clientName).setType(clientType).build()); MethodInvocationExpr createMethodExpr = MethodInvocationExpr.builder() .setStaticReferenceType(clientType) @@ -109,16 +116,21 @@ public static String composeClassHeaderEndpointSampleCode( .setName("myEndpoint") .setPakkage(clientType.reference().pakkage()) .build()); - VariableExpr settingsVarExpr = createVariableExpr(settingsName, settingsType); + VariableExpr settingsVarExpr = + VariableExpr.withVariable( + Variable.builder().setName(settingsName).setType(settingsType).build()); MethodInvocationExpr newBuilderMethodExpr = MethodInvocationExpr.builder() .setStaticReferenceType(settingsType) .setMethodName("newBuilder") .build(); + VariableExpr myEndpointVarExpr = + VariableExpr.withVariable( + Variable.builder().setName("myEndpoint").setType(myEndpointType).build()); MethodInvocationExpr credentialsMethodExpr = MethodInvocationExpr.builder() .setExprReferenceExpr(newBuilderMethodExpr) - .setArguments(createVariableExpr("myEndpoint", myEndpointType)) + .setArguments(myEndpointVarExpr) .setMethodName("setEndpoint") .build(); MethodInvocationExpr buildMethodExpr = @@ -136,7 +148,9 @@ public static String composeClassHeaderEndpointSampleCode( // Initialize client with create() method. // e.g. EchoClient echoClient = EchoClient.create(echoSettings); - VariableExpr clientVarExpr = createVariableExpr(clientName, clientType); + VariableExpr clientVarExpr = + VariableExpr.withVariable( + Variable.builder().setName(clientName).setType(clientType).build()); MethodInvocationExpr createMethodExpr = MethodInvocationExpr.builder() .setStaticReferenceType(clientType) @@ -155,11 +169,4 @@ public static String composeClassHeaderEndpointSampleCode( ExprStatement.withExpr(initSettingsVarExpr), ExprStatement.withExpr(initClientVarExpr))); } - - // ======================================== Helpers ==========================================// - - private static VariableExpr createVariableExpr(String variableName, TypeNode type) { - return VariableExpr.withVariable( - Variable.builder().setName(variableName).setType(type).build()); - } } diff --git a/src/main/java/com/google/api/generator/gapic/model/GapicClass.java b/src/main/java/com/google/api/generator/gapic/model/GapicClass.java index 8ae0376efc..55d538ae60 100644 --- a/src/main/java/com/google/api/generator/gapic/model/GapicClass.java +++ b/src/main/java/com/google/api/generator/gapic/model/GapicClass.java @@ -19,6 +19,8 @@ @AutoValue public abstract class GapicClass { + // TODO(miraleung): Clean up the hierarchy to avoid pass another parameter (resourceNames is + // only used for composing sample code). // TODO(miraleung): Add enum for resource name classes. public enum Kind { MAIN, diff --git a/src/test/java/com/google/api/generator/gapic/composer/ServiceClientClassComposerTest.java b/src/test/java/com/google/api/generator/gapic/composer/ServiceClientClassComposerTest.java index 1a882a6a30..a45784aaa2 100644 --- a/src/test/java/com/google/api/generator/gapic/composer/ServiceClientClassComposerTest.java +++ b/src/test/java/com/google/api/generator/gapic/composer/ServiceClientClassComposerTest.java @@ -53,7 +53,8 @@ public void generateServiceClasses() { Service echoProtoService = services.get(0); GapicClass clazz = - ServiceClientClassComposer.instance().generate(echoProtoService, messageTypes); + ServiceClientClassComposer.instance() + .generate(echoProtoService, messageTypes, resourceNames); JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor); @@ -76,7 +77,8 @@ public void generateServiceClasses_methodSignatureHasNestedFields() { fileDescriptor, messageTypes, resourceNames, Optional.empty(), outputResourceNames); Service protoService = services.get(0); - GapicClass clazz = ServiceClientClassComposer.instance().generate(protoService, messageTypes); + GapicClass clazz = + ServiceClientClassComposer.instance().generate(protoService, messageTypes, resourceNames); JavaWriterVisitor visitor = new JavaWriterVisitor(); clazz.classDefinition().accept(visitor);