Package com.vaadin.copilot.javarewriter
Class JavaRewriter
java.lang.Object
com.vaadin.copilot.javarewriter.JavaRewriter
Rewrites Java source code to add or replace constructor parameters, method
invocations and more.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enum
static final record
A code snippet to be inserted into the source code.static final record
static final record
Information about a component in the source code.static class
Represents a point in the source code where new code can be inserted.static final record
Represents a Java component to be added to the source code.static final record
Holder for a setter name and associated valuestatic enum
Where to add a component -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
addCall
(JavaRewriter.ComponentInfo componentInfo, String function, Object parameter) Adds a function call to the source code.void
addComponentUsingTemplate
(JavaRewriter.ComponentInfo referenceComponent, JavaRewriter.ComponentInfo layout, JavaRewriter.Where where, List<JavaRewriter.JavaComponent> template) Adds the given code snippet to the source code either before the reference component (Where.BEFORE) or by appending to the layout (Where.APPEND).boolean
delete
(JavaRewriter.ComponentInfo componentInfo) Deletes a component from the source code.findComponentInfo
(JavaRewriter.ComponentTypeAndSourceLocation typeAndSourceLocation) int
getPropertyValue
(JavaRewriter.ComponentInfo componentInfo, String property) Gets the (active) value of a property of a component.protected String
Returns the source code.void
moveComponent
(JavaRewriter.ComponentInfo component, JavaRewriter.ComponentInfo container, JavaRewriter.ComponentInfo reference, JavaRewriter.Where where) Moves a component in the source code.boolean
replaceFunctionCall
(JavaRewriter.ComponentInfo componentInfo, String function, Object value) Replaces a constructor parameter (if it is mapped to the given setter function) or a function call in the source code.boolean
replaceOrAddCall
(JavaRewriter.ComponentInfo componentInfo, String function, Object parameter) Replaces a function call in the source code, if found, otherwise adds the function call.void
setAlignment
(JavaRewriter.ComponentInfo component, JavaRewriter.AlignmentMode alignmentMode, boolean selected, List<String> lumoClasses)
-
Constructor Details
-
JavaRewriter
Creates a new JavaRewriter instance.- Parameters:
source
- the Java source code to rewrite
-
-
Method Details
-
getResult
-
getFirstModifiedRow
public int getFirstModifiedRow() -
replaceFunctionCall
public boolean replaceFunctionCall(JavaRewriter.ComponentInfo componentInfo, String function, Object value) Replaces a constructor parameter (if it is mapped to the given setter function) or a function call in the source code.- Parameters:
componentInfo
- the component to modifyfunction
- the name of the function to replace or add, if the constructor parameter is not foundvalue
- the new value for the constructor parameter or function call- Returns:
true
if the replacement was successful,false
otherwise
-
addCall
Adds a function call to the source code.- Parameters:
componentInfo
- the component to modifyfunction
- the name of the function to addparameter
- the parameter for the function- Returns:
true
if the addition was successful,false
otherwise
-
replaceOrAddCall
public boolean replaceOrAddCall(JavaRewriter.ComponentInfo componentInfo, String function, Object parameter) Replaces a function call in the source code, if found, otherwise adds the function call.- Parameters:
componentInfo
- the component to modifyfunction
- the name of the function call to add or replaceparameter
- the new parameter for the function- Returns:
true
if the replacement was successful,false
otherwise
-
getPropertyValue
Gets the (active) value of a property of a component.The property value is determined by looking for a setter method call in the source code. If the property is not set using a setter, the constructor is checked.
If the property is not set using a setter or in the constructor,
null
is returned.If the property is set using a method call, the method call expression is returned.
- Parameters:
componentInfo
- the component to get the property value fromproperty
- the property name- Returns:
- the property value, or null if the property is not set
-
findComponentInfo
public JavaRewriter.ComponentInfo findComponentInfo(JavaRewriter.ComponentTypeAndSourceLocation typeAndSourceLocation) -
delete
Deletes a component from the source code.- Parameters:
componentInfo
- the component to delete- Returns:
true
if the deletion was successful,false
otherwise
-
moveComponent
public void moveComponent(JavaRewriter.ComponentInfo component, JavaRewriter.ComponentInfo container, JavaRewriter.ComponentInfo reference, JavaRewriter.Where where) Moves a component in the source code.- Parameters:
component
- the component to movecontainer
- the new container for the component, if where is Where.APPEND.reference
- the reference component to move the component before, if where is Where.BEFORE.where
- where to move the component
-
addComponentUsingTemplate
public void addComponentUsingTemplate(JavaRewriter.ComponentInfo referenceComponent, JavaRewriter.ComponentInfo layout, JavaRewriter.Where where, List<JavaRewriter.JavaComponent> template) Adds the given code snippet to the source code either before the reference component (Where.BEFORE) or by appending to the layout (Where.APPEND).- Parameters:
referenceComponent
- the reference component to add the code before, or null if the code should be appended to the layoutlayout
- the layout to append the code towhere
- where to add the codetemplate
- the code to add, as JSON array of objects with "tag", "props" and "children"
-
setAlignment
public void setAlignment(JavaRewriter.ComponentInfo component, JavaRewriter.AlignmentMode alignmentMode, boolean selected, List<String> lumoClasses) throws IllegalAccessException - Throws:
IllegalAccessException
-
getSource
Returns the source code.- Returns:
- the source code
-