Package com.vaadin.copilot.javarewriter
Class JavaRewriterUtil
java.lang.Object
com.vaadin.copilot.javarewriter.JavaRewriterUtil
Util methods for rewriting Java
-
Method Summary
Modifier and TypeMethodDescriptionstatic voidaddFieldAfter(com.github.javaparser.ast.body.FieldDeclaration newField, com.github.javaparser.ast.body.FieldDeclaration reference) static voidAdds an import to the given compilation unit if it is not already imported.static <T extends com.github.javaparser.ast.Node>
Tclone(T node) extractInlineVariableToLocalVariable(JavaRewriter.ComponentInfo componentInfo) Extracts an inline variable to local variable with a new variable name.static intfindBlockStatementIndex(com.github.javaparser.ast.Node node) Finds the index of the statement that wraps the given node in the closest block statement.static com.github.javaparser.ast.body.FieldDeclarationfindFieldDeclaration(com.github.javaparser.ast.Node nodeInClass, String fieldName) Finds the field declaration for the given field name in the class of the given node.static StringfindFreeVariableName(JavaRewriter.ComponentInfo componentInfo, com.github.javaparser.ast.stmt.BlockStmt block) Finds a free variable name based on the component type.static StringfindFreeVariableName(String base, com.github.javaparser.ast.stmt.BlockStmt block) Finds a free variable name based on the given base name.static JavaRewriter.InsertionPointfindLocationAfter(com.github.javaparser.ast.expr.Expression expr) static JavaRewriter.InsertionPointfindLocationAtEnd(com.github.javaparser.ast.stmt.Statement statement) static JavaRewriter.InsertionPointfindLocationBefore(com.github.javaparser.ast.expr.Expression expr) static List<com.github.javaparser.ast.expr.MethodCallExpr>findMethodCallNonStatements(JavaRewriter.ComponentInfo componentDefinition) static List<com.github.javaparser.ast.expr.MethodCallExpr>findMethodCallStatements(JavaRewriter.ComponentInfo componentDefinition) static List<com.github.javaparser.ast.expr.Expression>findParameterUsage(JavaRewriter.ComponentInfo componentDefinition) static Optional<com.github.javaparser.ast.expr.Expression>findReference(com.github.javaparser.ast.NodeList<com.github.javaparser.ast.expr.Expression> nodes, JavaRewriter.ComponentInfo componentDefinition) Finds a node among the nodes which refer to the given component.static ObjectfromExpression(com.github.javaparser.ast.expr.Expression arg, com.github.javaparser.resolution.types.ResolvedType expectedType) Parses the given expression and returns the object it represents.static Optional<com.github.javaparser.ast.expr.Expression>getAttachArgument(JavaRewriter.ComponentInfo component) static com.github.javaparser.ast.expr.Expressionstatic Class<?>Finds the class for the given source type.static StringgetFieldOrVariableName(JavaRewriter.ComponentInfo componentInfo) Gets the field or local variable name for the given component.static StringgetJavaIdentifier(String str) Converts the given string into a valid Java identifier.static JavaRewriter.SetterAndValuegetSetterAndValue(Class<?> componentType, String property, Object value) Gets the setter name and value for the given component type, property and value.static StringgetSetterName(String property, Class<?> type, boolean includeReactConversions) Gets the setter name for the given property.static booleanChecks if the given component type has the given method.static booleanhasSingleParameterMethod(Class<? extends Component> type, String func) Checks if the given component type has a method with the given name, taking one parameter.static booleaninlineAssignment(JavaRewriter.ComponentInfo componentInfo) static booleanisArrayArgument(String className, String methodName, int argumentIndex) Uses reflection API for finding class name, method and the argument to find whether argument is array.static booleanonSameLine(com.github.javaparser.ast.Node node1, com.github.javaparser.ast.Node node2) Checks if the two nodes are on the same line.static booleanremoveArgumentCalls(com.github.javaparser.ast.expr.MethodCallExpr methodCallExpr, List<? extends com.github.javaparser.ast.expr.Expression> argumentsToRemove, boolean removeMethodIfNoArgs) static voidremoveArgumentCalls(List<com.github.javaparser.ast.expr.MethodCallExpr> methods, List<? extends com.github.javaparser.ast.expr.Expression> argumentsToRemove, boolean removeMethodIfNoArgs) static booleanremoveFromStringConcatenation(com.github.javaparser.ast.Node node) Removes the given node from a string concatenation expression.static voidremoveStatement(com.github.javaparser.ast.Node node) Removes the statement that wraps the given node.static booleansetNameExprScope(com.github.javaparser.ast.expr.MethodCallExpr newCall, com.github.javaparser.ast.expr.NameExpr nameExpr) Sets the name expression scope for the given method call.static booleantypesEqual(com.github.javaparser.resolution.types.ResolvedType javaParserType, Class<?> javaReflectionType) Checks if the given type is equal to the given reflection type.
-
Method Details
-
fromExpression
public static Object fromExpression(com.github.javaparser.ast.expr.Expression arg, com.github.javaparser.resolution.types.ResolvedType expectedType) Parses the given expression and returns the object it represents.If the argument is a null literal, it is returned as is. Method call expressions are also returned as is.
- Parameters:
arg- the expression to parseexpectedType- the expected type of the object or null if unknown- Returns:
- the object represented by the expression
-
findMethodCallStatements
public static List<com.github.javaparser.ast.expr.MethodCallExpr> findMethodCallStatements(JavaRewriter.ComponentInfo componentDefinition) -
findMethodCallNonStatements
public static List<com.github.javaparser.ast.expr.MethodCallExpr> findMethodCallNonStatements(JavaRewriter.ComponentInfo componentDefinition) -
findParameterUsage
public static List<com.github.javaparser.ast.expr.Expression> findParameterUsage(JavaRewriter.ComponentInfo componentDefinition) -
extractInlineVariableToLocalVariable
public static JavaRewriter.ExtractInlineVariableResult extractInlineVariableToLocalVariable(JavaRewriter.ComponentInfo componentInfo) Extracts an inline variable to local variable with a new variable name.- Parameters:
componentInfo- Component info- Returns:
- Block, new variable name and index, null if attach call is not found.
-
inlineAssignment
-
hasSingleParameterMethod
Checks if the given component type has a method with the given name, taking one parameter.- Parameters:
type- The component typefunc- The method name- Returns:
trueif the method exists,falseotherwise
-
findBlockStatementIndex
public static int findBlockStatementIndex(com.github.javaparser.ast.Node node) Finds the index of the statement that wraps the given node in the closest block statement.- Parameters:
node- The node to find the wrapping statement for- Returns:
- The index of the statement in the block statement
-
findFreeVariableName
public static String findFreeVariableName(JavaRewriter.ComponentInfo componentInfo, com.github.javaparser.ast.stmt.BlockStmt block) Finds a free variable name based on the component type.- Parameters:
componentInfo- The component infoblock- The block the variable will be used in- Returns:
- A free variable name
-
findFreeVariableName
public static String findFreeVariableName(String base, com.github.javaparser.ast.stmt.BlockStmt block) Finds a free variable name based on the given base name.- Parameters:
base- The base nameblock- The block the variable will be used in- Returns:
- A free variable name
-
removeStatement
public static void removeStatement(com.github.javaparser.ast.Node node) Removes the statement that wraps the given node.- Parameters:
node- the node to remove
-
removeFromStringConcatenation
public static boolean removeFromStringConcatenation(com.github.javaparser.ast.Node node) Removes the given node from a string concatenation expression.- Parameters:
node- the node to remove- Returns:
trueif the node was removed,falseotherwise
-
findReference
public static Optional<com.github.javaparser.ast.expr.Expression> findReference(com.github.javaparser.ast.NodeList<com.github.javaparser.ast.expr.Expression> nodes, JavaRewriter.ComponentInfo componentDefinition) Finds a node among the nodes which refer to the given component.- Parameters:
nodes- the nodes to searchcomponentDefinition- the component definition- Returns:
- the first node that refers to the component, if any
-
findFieldDeclaration
public static com.github.javaparser.ast.body.FieldDeclaration findFieldDeclaration(com.github.javaparser.ast.Node nodeInClass, String fieldName) Finds the field declaration for the given field name in the class of the given node.- Parameters:
nodeInClass- the node in the classfieldName- the field name- Returns:
- the field declaration
- Throws:
IllegalArgumentException- if the field is not found
-
onSameLine
public static boolean onSameLine(com.github.javaparser.ast.Node node1, com.github.javaparser.ast.Node node2) Checks if the two nodes are on the same line.- Parameters:
node1- the first nodenode2- the second node- Returns:
trueif the nodes are on the same line,falseotherwise
-
getSetterAndValue
public static JavaRewriter.SetterAndValue getSetterAndValue(Class<?> componentType, String property, Object value) Gets the setter name and value for the given component type, property and value.- Parameters:
componentType- the component typeproperty- the propertyvalue- the value- Returns:
- the setter name and value
-
getSetterName
Gets the setter name for the given property.- Parameters:
property- the propertytype- the component typeincludeReactConversions- whether to include React property name conversions in the setter name- Returns:
- the setter name
-
getFieldOrVariableName
Gets the field or local variable name for the given component.- Parameters:
componentInfo- the component info- Returns:
- the field or local variable name
-
addImport
public static void addImport(com.github.javaparser.ast.CompilationUnit compilationUnit, String qualifiedName) Adds an import to the given compilation unit if it is not already imported.- Parameters:
compilationUnit- the compilation unitqualifiedName- the qualified name of the import
-
getJavaIdentifier
Converts the given string into a valid Java identifier.- Parameters:
str- the string- Returns:
- the Java identifier
-
hasMethod
Checks if the given component type has the given method.- Parameters:
type- the component typemethodName- the method to check for- Returns:
trueif the component has the method,falseotherwise
-
getClass
Finds the class for the given source type.- Parameters:
name- the class name- Returns:
- the class for the given name
- Throws:
IllegalArgumentException- if the class is not found
-
removeArgumentCalls
-
removeArgumentCalls
public static boolean removeArgumentCalls(com.github.javaparser.ast.expr.MethodCallExpr methodCallExpr, List<? extends com.github.javaparser.ast.expr.Expression> argumentsToRemove, boolean removeMethodIfNoArgs) -
findLocationBefore
public static JavaRewriter.InsertionPoint findLocationBefore(com.github.javaparser.ast.expr.Expression expr) -
findLocationAfter
public static JavaRewriter.InsertionPoint findLocationAfter(com.github.javaparser.ast.expr.Expression expr) -
findLocationAtEnd
public static JavaRewriter.InsertionPoint findLocationAtEnd(com.github.javaparser.ast.stmt.Statement statement) -
addFieldAfter
public static void addFieldAfter(com.github.javaparser.ast.body.FieldDeclaration newField, com.github.javaparser.ast.body.FieldDeclaration reference) -
clone
public static <T extends com.github.javaparser.ast.Node> T clone(T node) -
getAttachArgument
public static Optional<com.github.javaparser.ast.expr.Expression> getAttachArgument(JavaRewriter.ComponentInfo component) -
getAttachArgumentOrThrow
public static com.github.javaparser.ast.expr.Expression getAttachArgumentOrThrow(JavaRewriter.ComponentInfo component) -
setNameExprScope
public static boolean setNameExprScope(com.github.javaparser.ast.expr.MethodCallExpr newCall, com.github.javaparser.ast.expr.NameExpr nameExpr) Sets the name expression scope for the given method call. For a simple call like `foo.setBar()` this changes `foo` and for nested calls like `foo.baz().fo().a().b()` it also changes `foo`.- Parameters:
newCall- the method call to changenameExpr- the new scope- Returns:
trueif the scope was changed,falseotherwise
-
typesEqual
public static boolean typesEqual(com.github.javaparser.resolution.types.ResolvedType javaParserType, Class<?> javaReflectionType) Checks if the given type is equal to the given reflection type.- Parameters:
javaParserType- the Java parser typejavaReflectionType- the Java reflection type- Returns:
trueif the types are equal,falseotherwise
-
isArrayArgument
Uses reflection API for finding class name, method and the argument to find whether argument is array.- Parameters:
className- full class name of a class.methodName- method nameargumentIndex- argument to look up. It can exceed the method parameters, in that case the last argument is taken into account- Returns:
trueif argument is an array,falseotherwise
-