Skip to content

Commit fcaadd6

Browse files
committed
Updated callable and initializer code to be stored in lexical-preserving manner
(so blank lines are not discarded); added codeStartLine attribute to callables Signed-off-by: Saurabh Sinha <[email protected]>
1 parent ec9f646 commit fcaadd6

File tree

2 files changed

+11
-33
lines changed

2 files changed

+11
-33
lines changed

src/main/java/com/ibm/cldk/SymbolTable.java

Lines changed: 8 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -16,38 +16,23 @@
1616
import java.util.stream.Collectors;
1717
import java.util.stream.IntStream;
1818

19+
import com.github.javaparser.*;
20+
import com.github.javaparser.ast.*;
1921
import com.github.javaparser.ast.body.*;
2022
import com.github.javaparser.ast.comments.Comment;
2123
import com.github.javaparser.ast.comments.JavadocComment;
24+
import com.github.javaparser.ast.expr.*;
2225
import com.github.javaparser.ast.nodeTypes.NodeWithJavadoc;
2326
import com.github.javaparser.ast.stmt.*;
27+
import com.github.javaparser.printer.lexicalpreservation.LexicalPreservingPrinter;
28+
import com.ibm.cldk.entities.*;
2429
import com.ibm.cldk.javaee.EntrypointsFinderFactory;
2530
import org.apache.commons.lang3.tuple.Pair;
2631

27-
import com.github.javaparser.JavaParser;
28-
import com.github.javaparser.ParseResult;
29-
import com.github.javaparser.ParserConfiguration;
30-
import com.github.javaparser.Problem;
31-
import com.github.javaparser.ast.AccessSpecifier;
32-
import com.github.javaparser.ast.CompilationUnit;
33-
import com.github.javaparser.ast.Node;
34-
import com.github.javaparser.ast.NodeList;
35-
import com.github.javaparser.ast.expr.AnnotationExpr;
36-
import com.github.javaparser.ast.expr.AssignExpr;
37-
import com.github.javaparser.ast.expr.CastExpr;
38-
import com.github.javaparser.ast.expr.ConditionalExpr;
39-
import com.github.javaparser.ast.expr.Expression;
40-
import com.github.javaparser.ast.expr.FieldAccessExpr;
41-
import com.github.javaparser.ast.expr.MethodCallExpr;
42-
import com.github.javaparser.ast.expr.NameExpr;
43-
import com.github.javaparser.ast.expr.ObjectCreationExpr;
4432
import com.github.javaparser.ast.nodeTypes.NodeWithName;
45-
import com.github.javaparser.ast.type.ClassOrInterfaceType;
4633
import com.github.javaparser.ast.type.ReferenceType;
4734
import com.github.javaparser.ast.type.Type;
48-
import com.github.javaparser.resolution.UnsolvedSymbolException;
4935
import com.github.javaparser.resolution.declarations.ResolvedMethodDeclaration;
50-
import com.github.javaparser.resolution.declarations.ResolvedReferenceTypeDeclaration;
5136
import com.github.javaparser.resolution.types.ResolvedType;
5237
import com.github.javaparser.symbolsolver.JavaSymbolSolver;
5338
import com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver;
@@ -57,17 +42,6 @@
5742
import com.github.javaparser.utils.SourceRoot;
5843
import com.google.common.collect.Table;
5944
import com.google.common.collect.Tables;
60-
import com.ibm.cldk.entities.CRUDOperation;
61-
import com.ibm.cldk.entities.CRUDQuery;
62-
import com.ibm.cldk.entities.CallSite;
63-
import com.ibm.cldk.entities.Callable;
64-
import com.ibm.cldk.entities.EnumConstant;
65-
import com.ibm.cldk.entities.Field;
66-
import com.ibm.cldk.entities.InitializationBlock;
67-
import com.ibm.cldk.entities.JavaCompilationUnit;
68-
import com.ibm.cldk.entities.ParameterInCallable;
69-
import com.ibm.cldk.entities.RecordComponent;
70-
import com.ibm.cldk.entities.VariableDeclaration;
7145
import com.ibm.cldk.javaee.CRUDFinderFactory;
7246
import com.ibm.cldk.javaee.utils.enums.CRUDOperationType;
7347
import com.ibm.cldk.javaee.utils.enums.CRUDQueryType;
@@ -365,7 +339,7 @@ private static InitializationBlock createInitializationBlock(InitializerDeclarat
365339
return throwStmt.asThrowStmt().getExpression().toString();
366340
}
367341
}).collect(Collectors.toList()));
368-
initializationBlock.setCode(initializerDeclaration.getBody().toString());
342+
initializationBlock.setCode(LexicalPreservingPrinter.setup(initializerDeclaration.getBody()).toString());
369343
initializationBlock.setStartLine(
370344
initializerDeclaration.getRange().isPresent() ? initializerDeclaration.getRange().get().begin.line
371345
: -1);
@@ -589,7 +563,8 @@ private static Pair<String, Callable> processCallableDeclaration(CallableDeclara
589563
callableNode.setStartLine(callableDecl.getRange().isPresent() ? callableDecl.getRange().get().begin.line : -1);
590564
callableNode.setEndLine(callableDecl.getRange().isPresent() ? callableDecl.getRange().get().end.line : -1);
591565
callableNode.setReferencedTypes(getReferencedTypes(body));
592-
callableNode.setCode(body.isPresent() ? body.get().toString() : "");
566+
callableNode.setCode(body.isPresent() ? LexicalPreservingPrinter.setup(body.get()).toString() : "");
567+
callableNode.setCodeStartLine(body.isPresent()? body.get().getBegin().get().line : -1);
593568

594569
callableNode.setAccessedFields(getAccessedFields(body, classFields, typeName));
595570
callableNode.setCallSites(getCallSites(body));

src/main/java/com/ibm/cldk/entities/Callable.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ public class Callable {
7070
/** The ending line number of the callable entity in the source file. */
7171
private int endLine;
7272

73+
/** The starting line number of the callable code in the source file. */
74+
private int codeStartLine;
75+
7376
/** The return type of the callable entity. */
7477
private String returnType = null;
7578

0 commit comments

Comments
 (0)