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 enumstatic final recordA code snippet to be inserted into the source code.static final recordThe result of a duplicate operationstatic final recordInformation about extracting an inline variable to local variablestatic final recordHolder for a setter name and associated valuestatic enumWhere to add a component -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected com.github.javaparser.ast.CompilationUnit -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanaddCall(ComponentInfo componentInfo, String function, Object... parameters) Adds a function call to the source code.voidaddComponentUsingTemplate(ComponentInfo referenceComponent, JavaRewriter.Where where, List<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).booleandelete(ComponentInfo componentInfo) Deletes a component from the source code.voidduplicate(ComponentInfo component) duplicate(ComponentInfo component, boolean handleAdd) Duplicates a component in the source code.findComponentInfo(ComponentTypeAndSourceLocation typeAndSourceLocation) Finds a component in the source code.com.github.javaparser.ast.CompilationUnitintgetPropertyValue(ComponentInfo componentInfo, String property) Gets the (active) value of a property of a component.protected StringReturns the source code.getStyles(ComponentInfo componentInfo) Gets the (active) styles of a component.voidmergeAndReplace(List<ComponentInfo> components, JavaComponent wrapperComponent) Merges all the components and wraps them using the given component and places the result in place of the first component.voidmoveComponent(ComponentInfo component, ComponentInfo container, ComponentInfo reference, JavaRewriter.Where where) Moves a component in the source code.voidreplaceCallParameter(com.github.javaparser.ast.nodeTypes.NodeWithArguments<?> call, String oldVariableName, String newVariableName) Replaces a parameter name in a method call.booleanreplaceFunctionCall(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.booleanreplaceOrAddCall(ComponentInfo componentInfo, String function, Object... parameters) Replaces a function call in the source code, if found, otherwise adds the function call.voidsetAlignment(ComponentInfo component, JavaRewriter.AlignmentMode alignmentMode, boolean selected, List<String> lumoClasses) voidsetGap(ComponentInfo component, String newValue) Sets gap to selected componentvoidsetPadding(ComponentInfo component, String newClassName) voidsetStyle(ComponentInfo component, String property, String value) Sets the given inline style on the given component, replacing an existing style property if present.
-
Field Details
-
compilationUnit
protected com.github.javaparser.ast.CompilationUnit compilationUnit
-
-
Constructor Details
-
JavaRewriter
Creates a new JavaRewriter instance.- Parameters:
source- the Java source code to rewrite
-
-
Method Details
-
getCompilationUnit
public com.github.javaparser.ast.CompilationUnit getCompilationUnit() -
getResult
-
getFirstModifiedRow
public int getFirstModifiedRow() -
replaceFunctionCall
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:
trueif the replacement was successful,falseotherwise
-
addCall
Adds a function call to the source code.- Parameters:
componentInfo- the component to modifyfunction- the name of the function to addparameters- parameters for the function- Returns:
trueif the addition was successful,falseotherwise
-
replaceOrAddCall
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 replaceparameters- new parameters for the function- Returns:
trueif the replacement was successful,falseotherwise
-
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,
nullis 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
-
getStyles
Gets the (active) styles of a component.- Parameters:
componentInfo- the component to get the styles of- Returns:
- the styles, as a list of style names and values
-
setStyle
Sets the given inline style on the given component, replacing an existing style property if present.- Parameters:
component- the component to set the style onproperty- the style property to setvalue- the style value to set or null to remove the style
-
findComponentInfo
Finds a component in the source code.Note that this will create a constructor if the component is a route class and there are no constructors.
- Parameters:
typeAndSourceLocation- the type and source location of the component- Returns:
- the component info
-
delete
Deletes a component from the source code.- Parameters:
componentInfo- the component to delete- Returns:
trueif the deletion was successful,falseotherwise
-
moveComponent
public void moveComponent(ComponentInfo component, ComponentInfo container, 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
-
duplicate
-
duplicate
Duplicates a component in the source code.- Parameters:
component- the component to duplicatehandleAdd- true to automatically add the new component next to the old one, false to handle add calls like any other method call- Returns:
- a map from old component name to new component name
-
addComponentUsingTemplate
public void addComponentUsingTemplate(ComponentInfo referenceComponent, JavaRewriter.Where where, List<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 (BEFORE) or container (APPEND) to add the codewhere- where to add the codetemplate- the code to add, as JSON array of objects with "tag", "props" and "children"
-
setAlignment
public void setAlignment(ComponentInfo component, JavaRewriter.AlignmentMode alignmentMode, boolean selected, List<String> lumoClasses) -
setGap
Sets gap to selected component- Parameters:
component- component to set gapnewValue- lumo utility gap variable literal.
-
setPadding
-
mergeAndReplace
Merges all the components and wraps them using the given component and places the result in place of the first component.- Parameters:
components- The components to merge. The first component will be replaced with the wrapper componentwrapperComponent- The component to wrap the merged components in.
-
replaceCallParameter
public void replaceCallParameter(com.github.javaparser.ast.nodeTypes.NodeWithArguments<?> call, String oldVariableName, String newVariableName) Replaces a parameter name in a method call.- Parameters:
call-oldVariableName-newVariableName-
-
getSource
Returns the source code.- Returns:
- the source code
-