Class SandboxChecker
java.lang.Object
org.codehaus.groovy.ast.CodeVisitorSupport
org.codehaus.groovy.ast.ClassCodeVisitorSupport
de.luckymcdev.foundryengine.script.common.sandbox.SandboxChecker
- All Implemented Interfaces:
org.codehaus.groovy.ast.GroovyClassVisitor, org.codehaus.groovy.ast.GroovyCodeVisitor, org.codehaus.groovy.transform.ErrorCollecting
public final class SandboxChecker
extends org.codehaus.groovy.ast.ClassCodeVisitorSupport
Compile-time sandbox checks, run in two passes:
preResolve()at CONVERSION: imports, annotations (@Grab, @ASTTest) and member names, before names are resolved and before most AST transforms runpostResolve()at CANONICALIZATION: resolved types (constructors, casts, declarations, class literals, receivers)
This layer is best-effort: Groovy is dynamic, so receivers are unknown and names can be computed at runtime. Computed member names are rejected outright. The class loader filter is the actual boundary; this layer closes the cheap paths and gives readable errors.
-
Method Summary
Modifier and TypeMethodDescriptionvoidprotected org.codehaus.groovy.control.SourceUnitstatic org.codehaus.groovy.control.customizers.CompilationCustomizerstatic org.codehaus.groovy.control.customizers.CompilationCustomizervoidvisitAnnotations(org.codehaus.groovy.ast.AnnotatedNode node) voidvisitAttributeExpression(org.codehaus.groovy.ast.expr.AttributeExpression attribute) voidvisitBinaryExpression(org.codehaus.groovy.ast.expr.BinaryExpression expression) voidvisitCastExpression(org.codehaus.groovy.ast.expr.CastExpression expression) voidvisitClass(org.codehaus.groovy.ast.ClassNode node) voidvisitClassExpression(org.codehaus.groovy.ast.expr.ClassExpression expression) voidvisitConstructorCallExpression(org.codehaus.groovy.ast.expr.ConstructorCallExpression call) protected voidvisitConstructorOrMethod(org.codehaus.groovy.ast.MethodNode node, boolean isConstructor) voidvisitDeclarationExpression(org.codehaus.groovy.ast.expr.DeclarationExpression expression) voidvisitField(org.codehaus.groovy.ast.FieldNode node) voidvisitMethodCallExpression(org.codehaus.groovy.ast.expr.MethodCallExpression call) voidvisitMethodPointerExpression(org.codehaus.groovy.ast.expr.MethodPointerExpression pointer) voidvisitPropertyExpression(org.codehaus.groovy.ast.expr.PropertyExpression property) voidvisitStaticMethodCallExpression(org.codehaus.groovy.ast.expr.StaticMethodCallExpression call) Methods inherited from class org.codehaus.groovy.ast.ClassCodeVisitorSupport
visitAnnotation, visitAnnotations, visitAssertStatement, visitBlockStatement, visitBreakStatement, visitCaseStatement, visitCatchStatement, visitClassCodeContainer, visitClosureExpression, visitConstructor, visitContinueStatement, visitDoWhileLoop, visitExpressionStatement, visitForLoop, visitIfElse, visitImports, visitMethod, visitObjectInitializerStatements, visitPackage, visitProperty, visitReturnStatement, visitStatement, visitSwitch, visitSynchronizedStatement, visitThrowStatement, visitTryCatchFinally, visitWhileLoopMethods inherited from class org.codehaus.groovy.ast.CodeVisitorSupport
afterSwitchCaseStatementsVisited, afterSwitchConditionExpressionVisited, visitArgumentlistExpression, visitArrayExpression, visitBitwiseNegationExpression, visitBooleanExpression, visitBytecodeExpression, visitClosureListExpression, visitConstantExpression, visitEmptyStatement, visitFieldExpression, visitGStringExpression, visitLambdaExpression, visitListExpression, visitMapEntryExpression, visitMapExpression, visitMethodReferenceExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitRangeExpression, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitTernaryExpression, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpressionMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.codehaus.groovy.ast.GroovyCodeVisitor
visit, visit, visitEmptyExpression, visitListOfExpressions
-
Method Details
-
preResolve
public static org.codehaus.groovy.control.customizers.CompilationCustomizer preResolve() -
postResolve
public static org.codehaus.groovy.control.customizers.CompilationCustomizer postResolve() -
getSourceUnit
protected org.codehaus.groovy.control.SourceUnit getSourceUnit()- Specified by:
getSourceUnitin classorg.codehaus.groovy.ast.ClassCodeVisitorSupport
-
addError
- Specified by:
addErrorin interfaceorg.codehaus.groovy.transform.ErrorCollecting- Overrides:
addErrorin classorg.codehaus.groovy.ast.ClassCodeVisitorSupport
-
visitAnnotations
public void visitAnnotations(org.codehaus.groovy.ast.AnnotatedNode node) - Overrides:
visitAnnotationsin classorg.codehaus.groovy.ast.ClassCodeVisitorSupport
-
visitMethodCallExpression
public void visitMethodCallExpression(org.codehaus.groovy.ast.expr.MethodCallExpression call) - Specified by:
visitMethodCallExpressionin interfaceorg.codehaus.groovy.ast.GroovyCodeVisitor- Overrides:
visitMethodCallExpressionin classorg.codehaus.groovy.ast.CodeVisitorSupport
-
visitStaticMethodCallExpression
public void visitStaticMethodCallExpression(org.codehaus.groovy.ast.expr.StaticMethodCallExpression call) - Specified by:
visitStaticMethodCallExpressionin interfaceorg.codehaus.groovy.ast.GroovyCodeVisitor- Overrides:
visitStaticMethodCallExpressionin classorg.codehaus.groovy.ast.CodeVisitorSupport
-
visitPropertyExpression
public void visitPropertyExpression(org.codehaus.groovy.ast.expr.PropertyExpression property) - Specified by:
visitPropertyExpressionin interfaceorg.codehaus.groovy.ast.GroovyCodeVisitor- Overrides:
visitPropertyExpressionin classorg.codehaus.groovy.ast.CodeVisitorSupport
-
visitAttributeExpression
public void visitAttributeExpression(org.codehaus.groovy.ast.expr.AttributeExpression attribute) - Specified by:
visitAttributeExpressionin interfaceorg.codehaus.groovy.ast.GroovyCodeVisitor- Overrides:
visitAttributeExpressionin classorg.codehaus.groovy.ast.CodeVisitorSupport
-
visitMethodPointerExpression
public void visitMethodPointerExpression(org.codehaus.groovy.ast.expr.MethodPointerExpression pointer) - Specified by:
visitMethodPointerExpressionin interfaceorg.codehaus.groovy.ast.GroovyCodeVisitor- Overrides:
visitMethodPointerExpressionin classorg.codehaus.groovy.ast.CodeVisitorSupport
-
visitBinaryExpression
public void visitBinaryExpression(org.codehaus.groovy.ast.expr.BinaryExpression expression) - Specified by:
visitBinaryExpressionin interfaceorg.codehaus.groovy.ast.GroovyCodeVisitor- Overrides:
visitBinaryExpressionin classorg.codehaus.groovy.ast.CodeVisitorSupport
-
visitClassExpression
public void visitClassExpression(org.codehaus.groovy.ast.expr.ClassExpression expression) - Specified by:
visitClassExpressionin interfaceorg.codehaus.groovy.ast.GroovyCodeVisitor- Overrides:
visitClassExpressionin classorg.codehaus.groovy.ast.CodeVisitorSupport
-
visitConstructorCallExpression
public void visitConstructorCallExpression(org.codehaus.groovy.ast.expr.ConstructorCallExpression call) - Specified by:
visitConstructorCallExpressionin interfaceorg.codehaus.groovy.ast.GroovyCodeVisitor- Overrides:
visitConstructorCallExpressionin classorg.codehaus.groovy.ast.CodeVisitorSupport
-
visitCastExpression
public void visitCastExpression(org.codehaus.groovy.ast.expr.CastExpression expression) - Specified by:
visitCastExpressionin interfaceorg.codehaus.groovy.ast.GroovyCodeVisitor- Overrides:
visitCastExpressionin classorg.codehaus.groovy.ast.CodeVisitorSupport
-
visitDeclarationExpression
public void visitDeclarationExpression(org.codehaus.groovy.ast.expr.DeclarationExpression expression) - Specified by:
visitDeclarationExpressionin interfaceorg.codehaus.groovy.ast.GroovyCodeVisitor- Overrides:
visitDeclarationExpressionin classorg.codehaus.groovy.ast.ClassCodeVisitorSupport
-
visitConstructorOrMethod
protected void visitConstructorOrMethod(org.codehaus.groovy.ast.MethodNode node, boolean isConstructor) - Overrides:
visitConstructorOrMethodin classorg.codehaus.groovy.ast.ClassCodeVisitorSupport
-
visitField
public void visitField(org.codehaus.groovy.ast.FieldNode node) - Specified by:
visitFieldin interfaceorg.codehaus.groovy.ast.GroovyClassVisitor- Overrides:
visitFieldin classorg.codehaus.groovy.ast.ClassCodeVisitorSupport
-
visitClass
public void visitClass(org.codehaus.groovy.ast.ClassNode node) - Specified by:
visitClassin interfaceorg.codehaus.groovy.ast.GroovyClassVisitor- Overrides:
visitClassin classorg.codehaus.groovy.ast.ClassCodeVisitorSupport
-