Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b16cba7

Browse files
add pagedCallable getter in serviceStub (#295)
1 parent 52c3eb7 commit b16cba7

File tree

2 files changed

+45
-4
lines changed

2 files changed

+45
-4
lines changed

src/main/java/com/google/api/generator/gapic/composer/ServiceStubClassComposer.java

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
public class ServiceStubClassComposer implements ClassComposer {
4949
private static final ServiceStubClassComposer INSTANCE = new ServiceStubClassComposer();
5050
private static final String DOT = ".";
51+
private static final String PAGED_RESPONSE_TYPE_NAME_PATTERN = "%sPagedResponse";
5152

5253
private ServiceStubClassComposer() {}
5354

@@ -110,22 +111,30 @@ private static List<MethodDefinition> createCallableGetters(
110111
if (method.hasLro()) {
111112
javaMethods.add(createOperationCallableGetter(method, types));
112113
}
114+
if (method.isPaged()) {
115+
javaMethods.add(createPagedCallableGetter(method, types));
116+
}
113117
javaMethods.add(createCallableGetter(method, types));
114118
}
115119
return javaMethods;
116120
}
117121

118122
private static MethodDefinition createOperationCallableGetter(
119123
Method method, Map<String, TypeNode> types) {
120-
return createCallableGetterHelper(method, types, true);
124+
return createCallableGetterHelper(method, types, true, false);
125+
}
126+
127+
private static MethodDefinition createPagedCallableGetter(
128+
Method method, Map<String, TypeNode> types) {
129+
return createCallableGetterHelper(method, types, false, true);
121130
}
122131

123132
private static MethodDefinition createCallableGetter(Method method, Map<String, TypeNode> types) {
124-
return createCallableGetterHelper(method, types, false);
133+
return createCallableGetterHelper(method, types, false, false);
125134
}
126135

127136
private static MethodDefinition createCallableGetterHelper(
128-
Method method, Map<String, TypeNode> types, boolean isLroCallable) {
137+
Method method, Map<String, TypeNode> types, boolean isLroCallable, boolean isPaged) {
129138
TypeNode returnType;
130139
switch (method.stream()) {
131140
case CLIENT:
@@ -146,12 +155,16 @@ private static MethodDefinition createCallableGetterHelper(
146155
String methodName =
147156
String.format(
148157
"%s%sCallable",
149-
JavaStyle.toLowerCamelCase(method.name()), (isLroCallable ? "Operation" : ""));
158+
JavaStyle.toLowerCamelCase(method.name()),
159+
(isLroCallable ? "Operation" : isPaged ? "Paged" : ""));
150160
List<Reference> genericRefs = new ArrayList<>();
151161
genericRefs.add(method.inputType().reference());
152162
if (method.hasLro()) {
153163
genericRefs.add(method.lro().responseType().reference());
154164
genericRefs.add(method.lro().metadataType().reference());
165+
} else if (isPaged) {
166+
genericRefs.add(
167+
types.get(String.format(PAGED_RESPONSE_TYPE_NAME_PATTERN, method.name())).reference());
155168
} else {
156169
genericRefs.add(method.outputType().reference());
157170
}
@@ -237,6 +250,22 @@ private static Map<String, TypeNode> createTypes(
237250
.setName("OperationsStub")
238251
.setPakkage("com.google.longrunning.stub")
239252
.build()));
253+
// Pagination types.
254+
types.putAll(
255+
service.methods().stream()
256+
.filter(m -> m.isPaged())
257+
.collect(
258+
Collectors.toMap(
259+
m -> String.format(PAGED_RESPONSE_TYPE_NAME_PATTERN, m.name()),
260+
m ->
261+
TypeNode.withReference(
262+
VaporReference.builder()
263+
.setName(String.format(PAGED_RESPONSE_TYPE_NAME_PATTERN, m.name()))
264+
.setPakkage(service.pakkage())
265+
.setEnclosingClassName(getClientClassName(service.name()))
266+
.setIsStaticImport(true)
267+
.build()))));
268+
240269
return types;
241270
}
242271

@@ -249,4 +278,8 @@ private static List<Statement> createThrowUOEBody(
249278
.setMessageExpr(String.format("Not implemented: %s()", methodName))
250279
.build()));
251280
}
281+
282+
private static String getClientClassName(String serviceName) {
283+
return String.format("%sClient", serviceName);
284+
}
252285
}

src/test/java/com/google/api/generator/gapic/composer/ServiceStubClassComposerTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ public void generateServiceClasses() {
6262
// TODO(miraleung): Update this when a file-diffing test mechanism is in place.
6363
private static final String EXPECTED_CLASS_STRING =
6464
"package com.google.showcase.v1beta1.stub;\n"
65+
+ "\n"
66+
+ "import static com.google.showcase.v1beta1.EchoClient.PagedExpandPagedResponse;\n"
6567
+ "\n"
6668
+ "import com.google.api.gax.core.BackgroundResource;\n"
6769
+ "import com.google.api.gax.rpc.BidiStreamingCallable;\n"
@@ -118,6 +120,12 @@ public void generateServiceClasses() {
118120
+ " chatAgainCallable()\");\n"
119121
+ " }\n"
120122
+ "\n"
123+
+ " public UnaryCallable<PagedExpandRequest, PagedExpandPagedResponse> pagedExpandPagedCallable()"
124+
+ " {\n"
125+
+ " throw new UnsupportedOperationException(\"Not implemented:"
126+
+ " pagedExpandPagedCallable()\");\n"
127+
+ " }\n"
128+
+ "\n"
121129
+ " public UnaryCallable<PagedExpandRequest, PagedExpandResponse> pagedExpandCallable()"
122130
+ " {\n"
123131
+ " throw new UnsupportedOperationException(\"Not implemented:"

0 commit comments

Comments
 (0)