Class DynamicSetterInjectionVisitor
java.lang.Object
org.codehaus.groovy.ast.CodeVisitorSupport
org.codehaus.groovy.ast.ClassCodeVisitorSupport
org.apache.groovy.contracts.ast.visitor.BaseVisitor
org.apache.groovy.contracts.ast.visitor.DynamicSetterInjectionVisitor
- All Implemented Interfaces:
GroovyClassVisitor,GroovyCodeVisitor,ErrorCollecting
Implements contract support for setter methods and default constructors of POGOs.
- See Also:
-
Field Summary
Fields inherited from class org.apache.groovy.contracts.ast.visitor.BaseVisitor
GCONTRACTS_ENABLED_VAR, sourceUnit -
Constructor Summary
ConstructorsConstructorDescriptionDynamicSetterInjectionVisitor(SourceUnit sourceUnit, ReaderSource source) Creates a visitor that injects synthetic setters and constructors needed for invariant checks. -
Method Summary
Modifier and TypeMethodDescriptionprotected StatementcreateSetterBlock(ClassNode classNode, FieldNode field, Parameter parameter) Creates the body of a synthetic setter that wraps the assignment with invariant checks.voidvisitClass(ClassNode classNode) Prepares invariant-check blocks for the class and adds a synthetic default constructor when needed.voidvisitProperty(PropertyNode node) Adds a synthetic setter for invariant-checked properties when no explicit setter is present.Methods inherited from class org.apache.groovy.contracts.ast.visitor.BaseVisitor
asConditionExecution, getOriginalCondition, getReplacedCondition, getSourceUnit, replaceConditionMethods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupport
addError, visitAnnotation, visitAnnotations, visitAnnotations, visitAssertStatement, visitBlockStatement, visitBreakStatement, visitCaseStatement, visitCatchStatement, visitClassCodeContainer, visitClosureExpression, visitConstructor, visitConstructorOrMethod, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitExpressionStatement, visitField, visitForLoop, visitIfElse, visitImports, visitMethod, visitObjectInitializerStatements, visitPackage, visitReturnStatement, visitStatement, visitStatementAnnotations, visitSwitch, visitSynchronizedStatement, visitThrowStatement, visitTryCatchFinally, visitWhileLoopMethods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
afterSwitchCaseStatementsVisited, afterSwitchConditionExpressionVisited, visitArgumentlistExpression, visitArrayExpression, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBooleanExpression, visitBytecodeExpression, visitCastExpression, visitClassExpression, visitClosureListExpression, visitConstantExpression, visitConstructorCallExpression, visitEmptyStatement, visitFieldExpression, visitGStringExpression, visitLambdaExpression, visitListExpression, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitMethodReferenceExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitTernaryExpression, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpressionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.codehaus.groovy.ast.GroovyCodeVisitor
visit, visit, visitEmptyExpression, visitListOfExpressions
-
Constructor Details
-
DynamicSetterInjectionVisitor
Creates a visitor that injects synthetic setters and constructors needed for invariant checks.- Parameters:
sourceUnit- the source unit currently being transformedsource- the reader source backing the source unit
-
-
Method Details
-
createSetterBlock
Creates the body of a synthetic setter that wraps the assignment with invariant checks.- Parameters:
classNode- the declaring classfield- the field being writtenparameter- the synthetic setter parameter- Returns:
- the generated setter body
-
visitProperty
Adds a synthetic setter for invariant-checked properties when no explicit setter is present.- Specified by:
visitPropertyin interfaceGroovyClassVisitor- Overrides:
visitPropertyin classClassCodeVisitorSupport- Parameters:
node- the property being visited
-
visitClass
Prepares invariant-check blocks for the class and adds a synthetic default constructor when needed.- Specified by:
visitClassin interfaceGroovyClassVisitor- Overrides:
visitClassin classClassCodeVisitorSupport- Parameters:
classNode- the class being visited
-