Package org.openrewrite.java
Class JavaProcessor<P>
- java.lang.Object
-
- org.openrewrite.TreeProcessor<J,P>
-
- org.openrewrite.java.JavaProcessor<P>
-
- All Implemented Interfaces:
JavaVisitor<J,P>
,org.openrewrite.TreeVisitor<J,P>
- Direct Known Subclasses:
AutoFormatProcessor
,JavaIsoProcessor
,JavaListMarkersProcessor
,UnwrapParentheses
public class JavaProcessor<P> extends org.openrewrite.TreeProcessor<J,P> implements JavaVisitor<J,P>
-
-
Constructor Summary
Constructors Constructor Description JavaProcessor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected <J2 extends J>
JContainer<J2>call(JContainer<J2> container, P p)
protected <J2 extends J>
JLeftPadded<J2>call(JLeftPadded<J2> left, P p)
protected <J2 extends J>
JRightPadded<J2>call(JRightPadded<J2> right, P p)
protected boolean
isInSameNameScope(org.openrewrite.Cursor child)
Check if a child AST element is in the same lexical scope as that of the AST element associated with the current cursor.protected boolean
isInSameNameScope(org.openrewrite.Cursor base, org.openrewrite.Cursor child)
Check if a child AST element is in the same lexical scope as that of the AST element associated with the base cursor.void
maybeAddImport(java.lang.String fullyQualifiedName)
This method will add an import to the compilation unit if there is a reference to the type.void
maybeAddImport(java.lang.String fullyQualifiedName, java.lang.String statik)
This method will add a static import to the compilation unit if there is a reference to the type/method.void
maybeAddImport(JavaType.FullyQualified clazz)
This method will add an import to the compilation unit if there is a reference to the type.void
maybeRemoveImport(java.lang.String fullyQualifiedName)
void
maybeRemoveImport(JavaType.FullyQualified clazz)
J
visitAnnotatedType(J.AnnotatedType annotatedType, P p)
J
visitAnnotation(J.Annotation annotation, P p)
J
visitArrayAccess(J.ArrayAccess arrayAccess, P p)
J
visitArrayDimension(J.ArrayDimension arrayDimension, P p)
J
visitArrayType(J.ArrayType arrayType, P p)
J
visitAssert(J.Assert azzert, P p)
J
visitAssign(J.Assign assign, P p)
J
visitAssignOp(J.AssignOp assignOp, P p)
J
visitBinary(J.Binary binary, P p)
J
visitBlock(J.Block block, P p)
J
visitBreak(J.Break breakStatement, P p)
J
visitCase(J.Case caze, P p)
J
visitCatch(J.Try.Catch catzh, P p)
J
visitClassDecl(J.ClassDecl classDecl, P p)
J
visitCompilationUnit(J.CompilationUnit cu, P p)
J
visitContinue(J.Continue continueStatement, P p)
<T extends J>
JvisitControlParentheses(J.ControlParentheses<T> controlParens, P p)
J
visitDoWhileLoop(J.DoWhileLoop doWhileLoop, P p)
J
visitElse(J.If.Else elze, P p)
J
visitEmpty(J.Empty empty, P p)
J
visitEnumValue(J.EnumValue enoom, P p)
J
visitEnumValueSet(J.EnumValueSet enums, P p)
J
visitExpression(Expression expression, P p)
J
visitFieldAccess(J.FieldAccess fieldAccess, P p)
J
visitForEachLoop(J.ForEachLoop forLoop, P p)
J
visitForLoop(J.ForLoop forLoop, P p)
J
visitIdentifier(J.Ident ident, P p)
J
visitIf(J.If iff, P p)
J
visitImport(J.Import impoort, P p)
J
visitInstanceOf(J.InstanceOf instanceOf, P p)
J
visitLabel(J.Label label, P p)
J
visitLambda(J.Lambda lambda, P p)
J
visitLiteral(J.Literal literal, P p)
J
visitMemberReference(J.MemberReference memberRef, P p)
J
visitMethod(J.MethodDecl method, P p)
J
visitMethodInvocation(J.MethodInvocation method, P p)
J
visitMultiCatch(J.MultiCatch multiCatch, P p)
J
visitMultiVariable(J.VariableDecls multiVariable, P p)
J
visitNewArray(J.NewArray newArray, P p)
J
visitNewClass(J.NewClass newClass, P p)
J
visitPackage(J.Package pkg, P p)
J
visitParameterizedType(J.ParameterizedType type, P p)
<T extends J>
JvisitParentheses(J.Parentheses<T> parens, P p)
J
visitPrimitive(J.Primitive primitive, P p)
J
visitReturn(J.Return retrn, P p)
Space
visitSpace(Space space, P p)
J
visitStatement(Statement statement, P p)
J
visitSwitch(J.Switch switzh, P p)
J
visitSynchronized(J.Synchronized synch, P p)
J
visitTernary(J.Ternary ternary, P p)
J
visitThrow(J.Throw thrown, P p)
J
visitTry(J.Try tryable, P p)
J
visitTypeCast(J.TypeCast typeCast, P p)
<N extends NameTree>
NvisitTypeName(N nameTree, P p)
J
visitTypeParameter(J.TypeParameter typeParam, P p)
J
visitUnary(J.Unary unary, P p)
J
visitVariable(J.VariableDecls.NamedVar variable, P p)
J
visitWhileLoop(J.WhileLoop whileLoop, P p)
J
visitWildcard(J.Wildcard wildcard, P p)
-
Methods inherited from class org.openrewrite.TreeProcessor
call, call, call, defaultValue, doAfterVisit, doAfterVisit, getAfterVisit, getCursor, rebaseCursor, setCursoringOn, visit, visit, visitEach
-
-
-
-
Method Detail
-
maybeAddImport
public void maybeAddImport(@Nullable JavaType.FullyQualified clazz)
This method will add an import to the compilation unit if there is a reference to the type. It adds an additional visitor which means the "add import" is deferred and does not complete immediately. This operation is idempotent and calling this method multiple times with the same arguments will only add an import once.- Parameters:
clazz
- The class that will be imported into the compilation unit.
-
maybeAddImport
public void maybeAddImport(java.lang.String fullyQualifiedName)
This method will add an import to the compilation unit if there is a reference to the type. It adds an additional visitor which means the "add import" is deferred and does not complete immediately. This operation is idempotent and calling this method multiple times with the same arguments will only add an import once.- Parameters:
fullyQualifiedName
- Fully-qualified name of the class.
-
maybeAddImport
public void maybeAddImport(java.lang.String fullyQualifiedName, java.lang.String statik)
This method will add a static import to the compilation unit if there is a reference to the type/method. It adds an additional visitor which means the "add import" is deferred and does not complete immediately. This operation is idempotent and calling this method multiple times with the same arguments will only add an import once.- Parameters:
fullyQualifiedName
- Fully-qualified name of the class.statik
- The static method or field to be imported. A wildcard "*" may also be used to statically import all methods/fields.
-
maybeRemoveImport
public void maybeRemoveImport(@Nullable JavaType.FullyQualified clazz)
-
maybeRemoveImport
public void maybeRemoveImport(java.lang.String fullyQualifiedName)
-
visitExpression
public J visitExpression(Expression expression, P p)
-
visitAnnotatedType
public J visitAnnotatedType(J.AnnotatedType annotatedType, P p)
- Specified by:
visitAnnotatedType
in interfaceJavaVisitor<J,P>
-
visitAnnotation
public J visitAnnotation(J.Annotation annotation, P p)
- Specified by:
visitAnnotation
in interfaceJavaVisitor<J,P>
-
visitArrayAccess
public J visitArrayAccess(J.ArrayAccess arrayAccess, P p)
- Specified by:
visitArrayAccess
in interfaceJavaVisitor<J,P>
-
visitArrayDimension
public J visitArrayDimension(J.ArrayDimension arrayDimension, P p)
- Specified by:
visitArrayDimension
in interfaceJavaVisitor<J,P>
-
visitArrayType
public J visitArrayType(J.ArrayType arrayType, P p)
- Specified by:
visitArrayType
in interfaceJavaVisitor<J,P>
-
visitAssert
public J visitAssert(J.Assert azzert, P p)
- Specified by:
visitAssert
in interfaceJavaVisitor<J,P>
-
visitAssign
public J visitAssign(J.Assign assign, P p)
- Specified by:
visitAssign
in interfaceJavaVisitor<J,P>
-
visitAssignOp
public J visitAssignOp(J.AssignOp assignOp, P p)
- Specified by:
visitAssignOp
in interfaceJavaVisitor<J,P>
-
visitBinary
public J visitBinary(J.Binary binary, P p)
- Specified by:
visitBinary
in interfaceJavaVisitor<J,P>
-
visitBlock
public J visitBlock(J.Block block, P p)
- Specified by:
visitBlock
in interfaceJavaVisitor<J,P>
-
visitBreak
public J visitBreak(J.Break breakStatement, P p)
- Specified by:
visitBreak
in interfaceJavaVisitor<J,P>
-
visitCase
public J visitCase(J.Case caze, P p)
- Specified by:
visitCase
in interfaceJavaVisitor<J,P>
-
visitCatch
public J visitCatch(J.Try.Catch catzh, P p)
- Specified by:
visitCatch
in interfaceJavaVisitor<J,P>
-
visitClassDecl
public J visitClassDecl(J.ClassDecl classDecl, P p)
- Specified by:
visitClassDecl
in interfaceJavaVisitor<J,P>
-
visitCompilationUnit
public J visitCompilationUnit(J.CompilationUnit cu, P p)
- Specified by:
visitCompilationUnit
in interfaceJavaVisitor<J,P>
-
visitContinue
public J visitContinue(J.Continue continueStatement, P p)
- Specified by:
visitContinue
in interfaceJavaVisitor<J,P>
-
visitControlParentheses
public <T extends J> J visitControlParentheses(J.ControlParentheses<T> controlParens, P p)
- Specified by:
visitControlParentheses
in interfaceJavaVisitor<J,P>
-
visitDoWhileLoop
public J visitDoWhileLoop(J.DoWhileLoop doWhileLoop, P p)
- Specified by:
visitDoWhileLoop
in interfaceJavaVisitor<J,P>
-
visitEmpty
public J visitEmpty(J.Empty empty, P p)
- Specified by:
visitEmpty
in interfaceJavaVisitor<J,P>
-
visitEnumValue
public J visitEnumValue(J.EnumValue enoom, P p)
- Specified by:
visitEnumValue
in interfaceJavaVisitor<J,P>
-
visitEnumValueSet
public J visitEnumValueSet(J.EnumValueSet enums, P p)
- Specified by:
visitEnumValueSet
in interfaceJavaVisitor<J,P>
-
visitFieldAccess
public J visitFieldAccess(J.FieldAccess fieldAccess, P p)
- Specified by:
visitFieldAccess
in interfaceJavaVisitor<J,P>
-
visitForEachLoop
public J visitForEachLoop(J.ForEachLoop forLoop, P p)
- Specified by:
visitForEachLoop
in interfaceJavaVisitor<J,P>
-
visitForLoop
public J visitForLoop(J.ForLoop forLoop, P p)
- Specified by:
visitForLoop
in interfaceJavaVisitor<J,P>
-
visitIdentifier
public J visitIdentifier(J.Ident ident, P p)
- Specified by:
visitIdentifier
in interfaceJavaVisitor<J,P>
-
visitElse
public J visitElse(J.If.Else elze, P p)
- Specified by:
visitElse
in interfaceJavaVisitor<J,P>
-
visitImport
public J visitImport(J.Import impoort, P p)
- Specified by:
visitImport
in interfaceJavaVisitor<J,P>
-
visitInstanceOf
public J visitInstanceOf(J.InstanceOf instanceOf, P p)
- Specified by:
visitInstanceOf
in interfaceJavaVisitor<J,P>
-
visitLabel
public J visitLabel(J.Label label, P p)
- Specified by:
visitLabel
in interfaceJavaVisitor<J,P>
-
visitLambda
public J visitLambda(J.Lambda lambda, P p)
- Specified by:
visitLambda
in interfaceJavaVisitor<J,P>
-
visitLiteral
public J visitLiteral(J.Literal literal, P p)
- Specified by:
visitLiteral
in interfaceJavaVisitor<J,P>
-
visitMemberReference
public J visitMemberReference(J.MemberReference memberRef, P p)
- Specified by:
visitMemberReference
in interfaceJavaVisitor<J,P>
-
visitMethod
public J visitMethod(J.MethodDecl method, P p)
- Specified by:
visitMethod
in interfaceJavaVisitor<J,P>
-
visitMethodInvocation
public J visitMethodInvocation(J.MethodInvocation method, P p)
- Specified by:
visitMethodInvocation
in interfaceJavaVisitor<J,P>
-
visitMultiCatch
public J visitMultiCatch(J.MultiCatch multiCatch, P p)
- Specified by:
visitMultiCatch
in interfaceJavaVisitor<J,P>
-
visitMultiVariable
public J visitMultiVariable(J.VariableDecls multiVariable, P p)
- Specified by:
visitMultiVariable
in interfaceJavaVisitor<J,P>
-
visitNewArray
public J visitNewArray(J.NewArray newArray, P p)
- Specified by:
visitNewArray
in interfaceJavaVisitor<J,P>
-
visitNewClass
public J visitNewClass(J.NewClass newClass, P p)
- Specified by:
visitNewClass
in interfaceJavaVisitor<J,P>
-
visitPackage
public J visitPackage(J.Package pkg, P p)
- Specified by:
visitPackage
in interfaceJavaVisitor<J,P>
-
visitParameterizedType
public J visitParameterizedType(J.ParameterizedType type, P p)
- Specified by:
visitParameterizedType
in interfaceJavaVisitor<J,P>
-
visitParentheses
public <T extends J> J visitParentheses(J.Parentheses<T> parens, P p)
- Specified by:
visitParentheses
in interfaceJavaVisitor<J,P>
-
visitPrimitive
public J visitPrimitive(J.Primitive primitive, P p)
- Specified by:
visitPrimitive
in interfaceJavaVisitor<J,P>
-
visitReturn
public J visitReturn(J.Return retrn, P p)
- Specified by:
visitReturn
in interfaceJavaVisitor<J,P>
-
visitSwitch
public J visitSwitch(J.Switch switzh, P p)
- Specified by:
visitSwitch
in interfaceJavaVisitor<J,P>
-
visitSynchronized
public J visitSynchronized(J.Synchronized synch, P p)
- Specified by:
visitSynchronized
in interfaceJavaVisitor<J,P>
-
visitTernary
public J visitTernary(J.Ternary ternary, P p)
- Specified by:
visitTernary
in interfaceJavaVisitor<J,P>
-
visitThrow
public J visitThrow(J.Throw thrown, P p)
- Specified by:
visitThrow
in interfaceJavaVisitor<J,P>
-
visitTry
public J visitTry(J.Try tryable, P p)
- Specified by:
visitTry
in interfaceJavaVisitor<J,P>
-
visitTypeCast
public J visitTypeCast(J.TypeCast typeCast, P p)
- Specified by:
visitTypeCast
in interfaceJavaVisitor<J,P>
-
visitTypeParameter
public J visitTypeParameter(J.TypeParameter typeParam, P p)
- Specified by:
visitTypeParameter
in interfaceJavaVisitor<J,P>
-
visitUnary
public J visitUnary(J.Unary unary, P p)
- Specified by:
visitUnary
in interfaceJavaVisitor<J,P>
-
visitVariable
public J visitVariable(J.VariableDecls.NamedVar variable, P p)
- Specified by:
visitVariable
in interfaceJavaVisitor<J,P>
-
visitWhileLoop
public J visitWhileLoop(J.WhileLoop whileLoop, P p)
- Specified by:
visitWhileLoop
in interfaceJavaVisitor<J,P>
-
visitWildcard
public J visitWildcard(J.Wildcard wildcard, P p)
- Specified by:
visitWildcard
in interfaceJavaVisitor<J,P>
-
call
@Nullable protected <J2 extends J> JRightPadded<J2> call(@Nullable JRightPadded<J2> right, P p)
-
call
@Nullable protected <J2 extends J> JLeftPadded<J2> call(@Nullable JLeftPadded<J2> left, P p)
-
call
@Nullable protected <J2 extends J> JContainer<J2> call(@Nullable JContainer<J2> container, P p)
-
isInSameNameScope
protected boolean isInSameNameScope(org.openrewrite.Cursor base, org.openrewrite.Cursor child)
Check if a child AST element is in the same lexical scope as that of the AST element associated with the base cursor. (i.e.: Are the variables and declarations visible in the base scope also visible to the child AST element?)The base lexical scope is first established by walking up the path of the base cursor to find its first enclosing element. The child path is traversed by walking up the child path elements until either the base scope has been found, a "terminating" element is encountered, or there are no more elements in the path.
A terminating element is one of the following:
- A static class declaration
- An enumeration declaration
- An interface declaration
- An annotation declaration
- Parameters:
base
- A pointer within the AST that is used to establish the "base lexical scope".child
- A pointer within the AST that will be traversed (up the tree) looking for an intersection with the base lexical scope.- Returns:
- true if the child is in within the lexical scope of the base
-
isInSameNameScope
protected boolean isInSameNameScope(org.openrewrite.Cursor child)
Check if a child AST element is in the same lexical scope as that of the AST element associated with the current cursor.See
isInSameNameScope(org.openrewrite.Cursor, org.openrewrite.Cursor)
- Parameters:
child
- A pointer to an element within the abstract syntax tree- Returns:
- true if the child is in within the lexical scope of the current cursor
-
-