use of com.google.api.generator.engine.ast.CommentStatement in project gapic-generator-java by googleapis.
the class JavaWriterVisitorTest method writeBlockCommentStatement_basic.
/**
* =============================== COMMENT ===============================
*/
@Test
public void writeBlockCommentStatement_basic() {
String content = "this is a test comment";
BlockComment blockComment = BlockComment.builder().setComment(content).build();
CommentStatement commentStatement = CommentStatement.withComment(blockComment);
String expected = LineFormatter.lines("/*\n", "* this is a test comment\n", "*/\n");
commentStatement.accept(writerVisitor);
assertEquals(expected, writerVisitor.write());
}
use of com.google.api.generator.engine.ast.CommentStatement in project gapic-generator-java by googleapis.
the class JavaWriterVisitorTest method writeClassDefinition_basicWithFileHeader.
@Test
public void writeClassDefinition_basicWithFileHeader() {
List<CommentStatement> fileHeader = Arrays.asList(CommentStatement.withComment(BlockComment.withComment("Apache License")));
ClassDefinition classDef = ClassDefinition.builder().setFileHeader(fileHeader).setPackageString("com.google.example.library.v1.stub").setName("LibraryServiceStub").setScope(ScopeNode.PUBLIC).build();
classDef.accept(writerVisitor);
assertEquals(LineFormatter.lines("/*\n", " * Apache License\n", " */\n\n", "package com.google.example.library.v1.stub;\n", "\n", "public class LibraryServiceStub {}\n"), writerVisitor.write());
}
use of com.google.api.generator.engine.ast.CommentStatement in project gapic-generator-java by googleapis.
the class ServiceClientCallableMethodSampleComposer method composePagedCallableMethod.
// Compose sample code for the method where it is CallableMethodKind.PAGED.
public static Sample composePagedCallableMethod(Method method, TypeNode clientType, Map<String, ResourceName> resourceNames, Map<String, Message> messageTypes) {
VariableExpr clientVarExpr = VariableExpr.withVariable(Variable.builder().setName(JavaStyle.toLowerCamelCase(clientType.reference().name())).setType(clientType).build());
// Assign method's request variable with the default value.
VariableExpr requestVarExpr = VariableExpr.withVariable(Variable.builder().setName("request").setType(method.inputType()).build());
Message requestMessage = messageTypes.get(method.inputType().reference().fullName());
Preconditions.checkNotNull(requestMessage, String.format("Could not find the message type %s.", method.inputType().reference().fullName()));
Expr requestBuilderExpr = DefaultValueComposer.createSimpleMessageBuilderValue(requestMessage, resourceNames, messageTypes);
AssignmentExpr requestAssignmentExpr = AssignmentExpr.builder().setVariableExpr(requestVarExpr.toBuilder().setIsDecl(true).build()).setValueExpr(requestBuilderExpr).build();
List<Expr> bodyExprs = new ArrayList<>();
bodyExprs.add(requestAssignmentExpr);
// Find the repeated field.
Message methodOutputMessage = messageTypes.get(method.outputType().reference().fullName());
Field repeatedPagedResultsField = methodOutputMessage.findAndUnwrapPaginatedRepeatedField();
Preconditions.checkNotNull(repeatedPagedResultsField, String.format("No repeated field found on message %s for method %s", methodOutputMessage.name(), method.name()));
TypeNode repeatedResponseType = repeatedPagedResultsField.type();
// Create ApiFuture Variable Expression with assign value by invoking client paged callable
// method.
// e.g. ApiFuture<ListExclusionsPagedResponse> future =
// configServiceV2Client.listExclusionsPagedCallable().futureCall(request);
TypeNode apiFutureType = TypeNode.withReference(ConcreteReference.builder().setClazz(ApiFuture.class).setGenerics(repeatedResponseType.reference()).build());
VariableExpr apiFutureVarExpr = VariableExpr.withVariable(Variable.builder().setName("future").setType(apiFutureType).build());
MethodInvocationExpr pagedCallableFutureMethodExpr = MethodInvocationExpr.builder().setExprReferenceExpr(clientVarExpr).setMethodName(String.format("%sPagedCallable", JavaStyle.toLowerCamelCase(method.name()))).build();
pagedCallableFutureMethodExpr = MethodInvocationExpr.builder().setExprReferenceExpr(pagedCallableFutureMethodExpr).setMethodName("futureCall").setArguments(requestVarExpr).setReturnType(apiFutureType).build();
AssignmentExpr apiFutureAssignmentExpr = AssignmentExpr.builder().setVariableExpr(apiFutureVarExpr.toBuilder().setIsDecl(true).build()).setValueExpr(pagedCallableFutureMethodExpr).build();
bodyExprs.add(apiFutureAssignmentExpr);
List<Statement> bodyStatements = bodyExprs.stream().map(e -> ExprStatement.withExpr(e)).collect(Collectors.toList());
bodyExprs.clear();
// Add line comment
bodyStatements.add(CommentStatement.withComment(LineComment.withComment("Do something.")));
// For-loop on repeated response element
// e.g. for (ListExclusionsResponse element : future.get().iterateAll()) {
// // doThingsWith(element);
// }
VariableExpr repeatedResponseVarExpr = VariableExpr.withVariable(Variable.builder().setName("element").setType(repeatedResponseType).build());
MethodInvocationExpr futureGetIterateAllMethodExpr = MethodInvocationExpr.builder().setExprReferenceExpr(apiFutureVarExpr).setMethodName("get").build();
futureGetIterateAllMethodExpr = MethodInvocationExpr.builder().setExprReferenceExpr(futureGetIterateAllMethodExpr).setMethodName("iterateAll").setReturnType(repeatedResponseType).build();
CommentStatement lineCommentStatement = CommentStatement.withComment(LineComment.withComment("doThingsWith(element);"));
ForStatement repeatedResponseForStatement = ForStatement.builder().setLocalVariableExpr(repeatedResponseVarExpr.toBuilder().setIsDecl(true).build()).setCollectionExpr(futureGetIterateAllMethodExpr).setBody(Arrays.asList(lineCommentStatement)).build();
bodyStatements.add(repeatedResponseForStatement);
List<Statement> body = Arrays.asList(TryCatchStatement.builder().setTryResourceExpr(SampleComposerUtil.assignClientVariableWithCreateMethodExpr(clientVarExpr)).setTryBody(bodyStatements).setIsSampleCode(true).build());
RegionTag regionTag = RegionTag.builder().setServiceName(clientType.reference().name()).setRpcName(method.name()).setIsAsynchronous(true).build();
return Sample.builder().setBody(body).setRegionTag(regionTag).build();
}
use of com.google.api.generator.engine.ast.CommentStatement in project gapic-generator-java by googleapis.
the class JavaWriterVisitorTest method writeJavaDocCommentStatement_allComponents.
@Test
public void writeJavaDocCommentStatement_allComponents() {
String content = "this is a test comment";
String deprecatedText = "Use the {@link ArchivedBookName} class instead.";
String paramName = "shelfName";
String paramDescription = "The name of the shelf where books are published to.";
String paragraph1 = "This class provides the ability to make remote calls to the backing service through" + " method calls that map to API methods. Sample code to get started:";
String paragraph2 = "The surface of this class includes several types of Java methods for each of the API's" + " methods:";
String sampleCode = createSampleCode();
List<String> orderedlList = Arrays.asList("A flattened method.", " A request object method.", "A callable method.");
String throwsType = "com.google.api.gax.rpc.ApiException";
String throwsDescription = "if the remote call fails.";
JavaDocComment javaDocComment = JavaDocComment.builder().addComment(content).addParagraph(paragraph1).addSampleCode(sampleCode).addParagraph(paragraph2).addOrderedList(orderedlList).addSampleCode(sampleCode).addParam(paramName, paramDescription).setThrows(throwsType, throwsDescription).setDeprecated(deprecatedText).build();
CommentStatement commentStatement = CommentStatement.withComment(javaDocComment);
String expected = LineFormatter.lines("/**\n", "* this is a test comment\n", "* <p> This class provides the ability to make remote calls to the backing service" + " through method calls that map to API methods. Sample code to get started:\n", "* <pre>{@code\n", "* try (boolean condition = false) {\n", "* int x = 3;\n", "* }\n", "* }</pre>\n", "* <p> The surface of this class includes several types of Java methods for each of" + " the API's methods:\n", "* <ol>\n", "* <li> A flattened method.\n", "* <li> A request object method.\n", "* <li> A callable method.\n", "* </ol>\n", "* <pre>{@code\n", "* try (boolean condition = false) {\n", "* int x = 3;\n", "* }\n", "* }</pre>\n", "* @param shelfName The name of the shelf where books are published to.\n", "* @throws com.google.api.gax.rpc.ApiException if the remote call fails.\n", "* @deprecated Use the {@link ArchivedBookName} class instead.\n", "*/\n");
commentStatement.accept(writerVisitor);
assertEquals(expected, writerVisitor.write());
}
Aggregations