Class SecureASTCustomizer.SecuringCodeVisitor
java.lang.Object
org.codehaus.groovy.control.customizers.SecureASTCustomizer.SecuringCodeVisitor
- All Implemented Interfaces:
GroovyCodeVisitor
- Enclosing class:
- SecureASTCustomizer
This visitor directly implements the
GroovyCodeVisitor interface instead of using the CodeVisitorSupport class to make sure that future features of the language gets managed by this visitor. Thus,
adding a new feature would result in a compilation error if this visitor is not updated.-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidassertExpressionAuthorized(Expression expression) Checks that a given expression is either in the allowed list or not in the disallowed list.protected voidassertStatementAuthorized(Statement statement) Checks that a given statement is either in the allowed list or not in the disallowed list.protected voidassertTokenAuthorized(Token token) Checks that a given token is either in the allowed list or not in the disallowed list.protected ClassNodegetExpressionType(ClassNode objectExpressionType) voidvisitArgumentlistExpression(ArgumentListExpression expression) Visits an argument list expression (method arguments).voidvisitArrayExpression(ArrayExpression expression) Visits an array expression.voidvisitAssertStatement(AssertStatement statement) Visits an assert statement.voidvisitAttributeExpression(AttributeExpression expression) Visits an attribute expression (object@property, accessing direct field without getters).voidvisitBinaryExpression(BinaryExpression expression) Visits a binary expression (left op right).voidVisits a bitwise negation expression (~expr).voidVisits a block statement (list of statements enclosed in braces).voidvisitBooleanExpression(BooleanExpression expression) Visits a boolean expression.voidvisitBreakStatement(BreakStatement statement) Visits a break statement.voidvisitBytecodeExpression(BytecodeExpression expression) Visits a bytecode expression (direct JVM bytecode instructions).voidvisitCaseStatement(CaseStatement statement) Visits a case clause within a switch statement.voidvisitCastExpression(CastExpression expression) Visits a cast expression ((Type) expr).voidvisitCatchStatement(CatchStatement statement) Visits a catch clause within a try-catch statement.voidvisitClassExpression(ClassExpression expression) Visits a class expression.voidvisitClosureExpression(ClosureExpression expression) Visits a closure expression.voidvisitClosureListExpression(ClosureListExpression closureListExpression) Visits a closure list expression.voidvisitConstantExpression(ConstantExpression expression) Visits a constant expression (literal value).voidVisits a constructor call expression.voidvisitContinueStatement(ContinueStatement statement) Visits a continue statement.voidvisitDeclarationExpression(DeclarationExpression expression) Visits a declaration expression (variable declaration with initialization).voidVisits a do-while loop statement.voidvisitEmptyStatement(EmptyStatement statement) Visits an empty statement.voidvisitExpressionStatement(ExpressionStatement statement) Visits an expression statement (an expression used as a statement).voidvisitFieldExpression(FieldExpression expression) Visits a field expression.voidvisitForLoop(ForStatement forLoop) Visits a for loop statement.voidvisitGStringExpression(GStringExpression expression) Visits a GString expression (string with interpolations).voidvisitIfElse(IfStatement ifElse) Visits an if-else statement.voidvisitLambdaExpression(LambdaExpression expression) Visits a lambda expression.voidvisitListExpression(ListExpression expression) Visits a list expression.voidvisitMapEntryExpression(MapEntryExpression expression) Visits a map entry expression (key: value pair within a map).voidvisitMapExpression(MapExpression expression) Visits a map expression.voidVisits a method call expression.voidvisitMethodPointerExpression(MethodPointerExpression expression) Visits a method pointer expression (object.&methodName).voidVisits a method reference expression (obj::method).voidvisitNotExpression(NotExpression expression) Visits a not expression (!expr).voidvisitPostfixExpression(PostfixExpression expression) Visits a postfix expression (expr op).voidvisitPrefixExpression(PrefixExpression expression) Visits a prefix expression (op expr).voidvisitPropertyExpression(PropertyExpression expression) Visits a property expression (object.property).voidvisitRangeExpression(RangeExpression expression) Visits a range expression.voidvisitReturnStatement(ReturnStatement statement) Visits a return statement.voidvisitShortTernaryExpression(ElvisOperatorExpression expression) Visits an Elvis operator expression (shorthand ternary with implicit condition check).voidvisitSpreadExpression(SpreadExpression expression) Visits a spread expression (*expr, spreading collection elements).voidvisitSpreadMapExpression(SpreadMapExpression expression) Visits a spread map expression (*:map, spreading map entries).voidVisits a static method call expression.voidvisitSwitch(SwitchStatement statement) Visits a switch statement.voidvisitSynchronizedStatement(SynchronizedStatement statement) Visits a synchronized statement.voidvisitTernaryExpression(TernaryExpression expression) Visits a ternary expression (condition ? trueExpr : falseExpr).voidvisitThrowStatement(ThrowStatement statement) Visits a throw statement.voidvisitTryCatchFinally(TryCatchStatement statement) Visits a try-catch-finally statement.voidvisitTupleExpression(TupleExpression expression) Visits a tuple expression (comma-separated expressions grouped in parentheses).voidvisitUnaryMinusExpression(UnaryMinusExpression expression) Visits a unary minus expression (-expr).voidvisitUnaryPlusExpression(UnaryPlusExpression expression) Visits a unary plus expression (+expr).voidvisitVariableExpression(VariableExpression expression) Visits a variable expression.voidvisitWhileLoop(WhileStatement loop) Visits a while loop statement.Methods 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
-
SecuringCodeVisitor
protected SecuringCodeVisitor()
-
-
Method Details
-
assertStatementAuthorized
Checks that a given statement is either in the allowed list or not in the disallowed list.- Parameters:
statement- the statement to be checked- Throws:
SecurityException- if usage of this statement class is forbidden
-
assertExpressionAuthorized
Checks that a given expression is either in the allowed list or not in the disallowed list.- Parameters:
expression- the expression to be checked- Throws:
SecurityException- if usage of this expression class is forbidden
-
getExpressionType
-
assertTokenAuthorized
Checks that a given token is either in the allowed list or not in the disallowed list.- Parameters:
token- the token to be checked- Throws:
SecurityException- if usage of this token is forbidden
-
visitBlockStatement
Description copied from interface:GroovyCodeVisitorVisits a block statement (list of statements enclosed in braces).- Specified by:
visitBlockStatementin interfaceGroovyCodeVisitor- Parameters:
block- theBlockStatementto process
-
visitForLoop
Description copied from interface:GroovyCodeVisitorVisits a for loop statement.- Specified by:
visitForLoopin interfaceGroovyCodeVisitor- Parameters:
forLoop- theForStatementto process
-
visitWhileLoop
Description copied from interface:GroovyCodeVisitorVisits a while loop statement.- Specified by:
visitWhileLoopin interfaceGroovyCodeVisitor- Parameters:
loop- theWhileStatementto process
-
visitDoWhileLoop
Description copied from interface:GroovyCodeVisitorVisits a do-while loop statement.- Specified by:
visitDoWhileLoopin interfaceGroovyCodeVisitor- Parameters:
loop- theDoWhileStatementto process
-
visitIfElse
Description copied from interface:GroovyCodeVisitorVisits an if-else statement.- Specified by:
visitIfElsein interfaceGroovyCodeVisitor- Parameters:
ifElse- theIfStatementto process
-
visitExpressionStatement
Description copied from interface:GroovyCodeVisitorVisits an expression statement (an expression used as a statement).- Specified by:
visitExpressionStatementin interfaceGroovyCodeVisitor- Parameters:
statement- theExpressionStatementto process
-
visitReturnStatement
Description copied from interface:GroovyCodeVisitorVisits a return statement.- Specified by:
visitReturnStatementin interfaceGroovyCodeVisitor- Parameters:
statement- theReturnStatementto process
-
visitAssertStatement
Description copied from interface:GroovyCodeVisitorVisits an assert statement.- Specified by:
visitAssertStatementin interfaceGroovyCodeVisitor- Parameters:
statement- theAssertStatementto process
-
visitTryCatchFinally
Description copied from interface:GroovyCodeVisitorVisits a try-catch-finally statement.- Specified by:
visitTryCatchFinallyin interfaceGroovyCodeVisitor- Parameters:
statement- theTryCatchStatementto process
-
visitEmptyStatement
Description copied from interface:GroovyCodeVisitorVisits an empty statement. Default implementation does nothing.- Specified by:
visitEmptyStatementin interfaceGroovyCodeVisitor- Parameters:
statement- theEmptyStatementto process
-
visitSwitch
Description copied from interface:GroovyCodeVisitorVisits a switch statement.- Specified by:
visitSwitchin interfaceGroovyCodeVisitor- Parameters:
statement- theSwitchStatementto process
-
visitCaseStatement
Description copied from interface:GroovyCodeVisitorVisits a case clause within a switch statement.- Specified by:
visitCaseStatementin interfaceGroovyCodeVisitor- Parameters:
statement- theCaseStatementto process
-
visitBreakStatement
Description copied from interface:GroovyCodeVisitorVisits a break statement.- Specified by:
visitBreakStatementin interfaceGroovyCodeVisitor- Parameters:
statement- theBreakStatementto process
-
visitContinueStatement
Description copied from interface:GroovyCodeVisitorVisits a continue statement.- Specified by:
visitContinueStatementin interfaceGroovyCodeVisitor- Parameters:
statement- theContinueStatementto process
-
visitThrowStatement
Description copied from interface:GroovyCodeVisitorVisits a throw statement.- Specified by:
visitThrowStatementin interfaceGroovyCodeVisitor- Parameters:
statement- theThrowStatementto process
-
visitSynchronizedStatement
Description copied from interface:GroovyCodeVisitorVisits a synchronized statement.- Specified by:
visitSynchronizedStatementin interfaceGroovyCodeVisitor- Parameters:
statement- theSynchronizedStatementto process
-
visitCatchStatement
Description copied from interface:GroovyCodeVisitorVisits a catch clause within a try-catch statement.- Specified by:
visitCatchStatementin interfaceGroovyCodeVisitor- Parameters:
statement- theCatchStatementto process
-
visitMethodCallExpression
Description copied from interface:GroovyCodeVisitorVisits a method call expression.- Specified by:
visitMethodCallExpressionin interfaceGroovyCodeVisitor- Parameters:
call- theMethodCallExpressionto process
-
visitStaticMethodCallExpression
Description copied from interface:GroovyCodeVisitorVisits a static method call expression.- Specified by:
visitStaticMethodCallExpressionin interfaceGroovyCodeVisitor- Parameters:
call- theStaticMethodCallExpressionto process
-
visitConstructorCallExpression
Description copied from interface:GroovyCodeVisitorVisits a constructor call expression.- Specified by:
visitConstructorCallExpressionin interfaceGroovyCodeVisitor- Parameters:
call- theConstructorCallExpressionto process
-
visitTernaryExpression
Description copied from interface:GroovyCodeVisitorVisits a ternary expression (condition ? trueExpr : falseExpr).- Specified by:
visitTernaryExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theTernaryExpressionto process
-
visitShortTernaryExpression
Description copied from interface:GroovyCodeVisitorVisits an Elvis operator expression (shorthand ternary with implicit condition check).- Specified by:
visitShortTernaryExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theElvisOperatorExpressionto process
-
visitBinaryExpression
Description copied from interface:GroovyCodeVisitorVisits a binary expression (left op right).- Specified by:
visitBinaryExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theBinaryExpressionto process
-
visitPrefixExpression
Description copied from interface:GroovyCodeVisitorVisits a prefix expression (op expr).- Specified by:
visitPrefixExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- thePrefixExpressionto process
-
visitPostfixExpression
Description copied from interface:GroovyCodeVisitorVisits a postfix expression (expr op).- Specified by:
visitPostfixExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- thePostfixExpressionto process
-
visitBooleanExpression
Description copied from interface:GroovyCodeVisitorVisits a boolean expression.- Specified by:
visitBooleanExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theBooleanExpressionto process
-
visitClosureExpression
Description copied from interface:GroovyCodeVisitorVisits a closure expression.- Specified by:
visitClosureExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theClosureExpressionto process
-
visitLambdaExpression
Description copied from interface:GroovyCodeVisitorVisits a lambda expression.- Specified by:
visitLambdaExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theLambdaExpressionto process
-
visitTupleExpression
Description copied from interface:GroovyCodeVisitorVisits a tuple expression (comma-separated expressions grouped in parentheses).- Specified by:
visitTupleExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theTupleExpressionto process
-
visitMapExpression
Description copied from interface:GroovyCodeVisitorVisits a map expression.- Specified by:
visitMapExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theMapExpressionto process
-
visitMapEntryExpression
Description copied from interface:GroovyCodeVisitorVisits a map entry expression (key: value pair within a map).- Specified by:
visitMapEntryExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theMapEntryExpressionto process
-
visitListExpression
Description copied from interface:GroovyCodeVisitorVisits a list expression.- Specified by:
visitListExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theListExpressionto process
-
visitRangeExpression
Description copied from interface:GroovyCodeVisitorVisits a range expression.- Specified by:
visitRangeExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theRangeExpressionto process
-
visitPropertyExpression
Description copied from interface:GroovyCodeVisitorVisits a property expression (object.property).- Specified by:
visitPropertyExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- thePropertyExpressionto process
-
visitAttributeExpression
Description copied from interface:GroovyCodeVisitorVisits an attribute expression (object@property, accessing direct field without getters).- Specified by:
visitAttributeExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theAttributeExpressionto process
-
visitFieldExpression
Description copied from interface:GroovyCodeVisitorVisits a field expression.- Specified by:
visitFieldExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theFieldExpressionto process
-
visitMethodPointerExpression
Description copied from interface:GroovyCodeVisitorVisits a method pointer expression (object.&methodName).- Specified by:
visitMethodPointerExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theMethodPointerExpressionto process
-
visitMethodReferenceExpression
Description copied from interface:GroovyCodeVisitorVisits a method reference expression (obj::method).- Specified by:
visitMethodReferenceExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theMethodReferenceExpressionto process
-
visitConstantExpression
Description copied from interface:GroovyCodeVisitorVisits a constant expression (literal value).- Specified by:
visitConstantExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theConstantExpressionto process
-
visitClassExpression
Description copied from interface:GroovyCodeVisitorVisits a class expression.- Specified by:
visitClassExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theClassExpressionto process
-
visitVariableExpression
Description copied from interface:GroovyCodeVisitorVisits a variable expression.- Specified by:
visitVariableExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theVariableExpressionto process
-
visitDeclarationExpression
Description copied from interface:GroovyCodeVisitorVisits a declaration expression (variable declaration with initialization).- Specified by:
visitDeclarationExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theDeclarationExpressionto process
-
visitGStringExpression
Description copied from interface:GroovyCodeVisitorVisits a GString expression (string with interpolations).- Specified by:
visitGStringExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theGStringExpressionto process
-
visitArrayExpression
Description copied from interface:GroovyCodeVisitorVisits an array expression.- Specified by:
visitArrayExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theArrayExpressionto process
-
visitSpreadExpression
Description copied from interface:GroovyCodeVisitorVisits a spread expression (*expr, spreading collection elements).- Specified by:
visitSpreadExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theSpreadExpressionto process
-
visitSpreadMapExpression
Description copied from interface:GroovyCodeVisitorVisits a spread map expression (*:map, spreading map entries).- Specified by:
visitSpreadMapExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theSpreadMapExpressionto process
-
visitNotExpression
Description copied from interface:GroovyCodeVisitorVisits a not expression (!expr).- Specified by:
visitNotExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theNotExpressionto process
-
visitUnaryMinusExpression
Description copied from interface:GroovyCodeVisitorVisits a unary minus expression (-expr).- Specified by:
visitUnaryMinusExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theUnaryMinusExpressionto process
-
visitUnaryPlusExpression
Description copied from interface:GroovyCodeVisitorVisits a unary plus expression (+expr).- Specified by:
visitUnaryPlusExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theUnaryPlusExpressionto process
-
visitBitwiseNegationExpression
Description copied from interface:GroovyCodeVisitorVisits a bitwise negation expression (~expr).- Specified by:
visitBitwiseNegationExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theBitwiseNegationExpressionto process
-
visitCastExpression
Description copied from interface:GroovyCodeVisitorVisits a cast expression ((Type) expr).- Specified by:
visitCastExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theCastExpressionto process
-
visitArgumentlistExpression
Description copied from interface:GroovyCodeVisitorVisits an argument list expression (method arguments).- Specified by:
visitArgumentlistExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theArgumentListExpressionto process
-
visitClosureListExpression
Description copied from interface:GroovyCodeVisitorVisits a closure list expression.- Specified by:
visitClosureListExpressionin interfaceGroovyCodeVisitor- Parameters:
closureListExpression- theClosureListExpressionto process
-
visitBytecodeExpression
Description copied from interface:GroovyCodeVisitorVisits a bytecode expression (direct JVM bytecode instructions).- Specified by:
visitBytecodeExpressionin interfaceGroovyCodeVisitor- Parameters:
expression- theBytecodeExpressionto process
-