Skip to content
Closed
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 @@ -60,8 +60,8 @@ public static List<GapicClass> generateServiceClasses(
@Nonnull Map<String, ResourceName> resourceNames,
@Nonnull Map<String, Message> messageTypes) {
List<GapicClass> 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;
Expand All @@ -76,7 +76,10 @@ public static List<GapicClass> generateResourceNameHelperClasses(
}

public static List<GapicClass> generateStubClasses(
Service service, GapicServiceConfig serviceConfig, Map<String, Message> messageTypes) {
Service service,
GapicServiceConfig serviceConfig,
Map<String, Message> messageTypes,
Map<String, ResourceName> resourceNames) {
List<GapicClass> clazzes = new ArrayList<>();
clazzes.add(ServiceStubClassComposer.instance().generate(service, messageTypes));
clazzes.add(
Expand All @@ -87,9 +90,10 @@ public static List<GapicClass> generateStubClasses(
}

public static List<GapicClass> generateClientSettingsClasses(
Service service, Map<String, Message> messageTypes) {
Service service, Map<String, Message> messageTypes, Map<String, ResourceName> resourceNames) {
List<GapicClass> 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;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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";
Expand All @@ -108,8 +109,8 @@ public static ServiceClientClassComposer instance() {
return INSTANCE;
}

@Override
public GapicClass generate(Service service, Map<String, Message> messageTypes) {
public GapicClass generate(
Service service, Map<String, Message> messageTypes, Map<String, ResourceName> resourceNames) {
Map<String, TypeNode> types = createTypes(service, messageTypes);
String className = getClientClassName(service);
GapicClass.Kind kind = Kind.MAIN;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,23 @@ 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)
.setMethodName("newBuilder")
.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 =
Expand All @@ -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)
Expand Down Expand Up @@ -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 =
Expand All @@ -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)
Expand All @@ -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());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
Expand Down