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 run
  • postResolve() at CANONICALIZATION: resolved types (constructors, casts, declarations, class literals, receivers)
Violations are reported as compilation errors with line numbers.

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 Type
    Method
    Description
    void
    addError(String msg, org.codehaus.groovy.ast.ASTNode expr)
     
    protected org.codehaus.groovy.control.SourceUnit
     
    static org.codehaus.groovy.control.customizers.CompilationCustomizer
     
    static org.codehaus.groovy.control.customizers.CompilationCustomizer
     
    void
    visitAnnotations(org.codehaus.groovy.ast.AnnotatedNode node)
     
    void
    visitAttributeExpression(org.codehaus.groovy.ast.expr.AttributeExpression attribute)
     
    void
    visitBinaryExpression(org.codehaus.groovy.ast.expr.BinaryExpression expression)
     
    void
    visitCastExpression(org.codehaus.groovy.ast.expr.CastExpression expression)
     
    void
    visitClass(org.codehaus.groovy.ast.ClassNode node)
     
    void
    visitClassExpression(org.codehaus.groovy.ast.expr.ClassExpression expression)
     
    void
    visitConstructorCallExpression(org.codehaus.groovy.ast.expr.ConstructorCallExpression call)
     
    protected void
    visitConstructorOrMethod(org.codehaus.groovy.ast.MethodNode node, boolean isConstructor)
     
    void
    visitDeclarationExpression(org.codehaus.groovy.ast.expr.DeclarationExpression expression)
     
    void
    visitField(org.codehaus.groovy.ast.FieldNode node)
     
    void
    visitMethodCallExpression(org.codehaus.groovy.ast.expr.MethodCallExpression call)
     
    void
    visitMethodPointerExpression(org.codehaus.groovy.ast.expr.MethodPointerExpression pointer)
     
    void
    visitPropertyExpression(org.codehaus.groovy.ast.expr.PropertyExpression property)
     
    void
    visitStaticMethodCallExpression(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, visitWhileLoop

    Methods 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, visitVariableExpression

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods 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:
      getSourceUnit in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • addError

      public void addError(String msg, org.codehaus.groovy.ast.ASTNode expr)
      Specified by:
      addError in interface org.codehaus.groovy.transform.ErrorCollecting
      Overrides:
      addError in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitAnnotations

      public void visitAnnotations(org.codehaus.groovy.ast.AnnotatedNode node)
      Overrides:
      visitAnnotations in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitMethodCallExpression

      public void visitMethodCallExpression(org.codehaus.groovy.ast.expr.MethodCallExpression call)
      Specified by:
      visitMethodCallExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitMethodCallExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitStaticMethodCallExpression

      public void visitStaticMethodCallExpression(org.codehaus.groovy.ast.expr.StaticMethodCallExpression call)
      Specified by:
      visitStaticMethodCallExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitStaticMethodCallExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitPropertyExpression

      public void visitPropertyExpression(org.codehaus.groovy.ast.expr.PropertyExpression property)
      Specified by:
      visitPropertyExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitPropertyExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitAttributeExpression

      public void visitAttributeExpression(org.codehaus.groovy.ast.expr.AttributeExpression attribute)
      Specified by:
      visitAttributeExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitAttributeExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitMethodPointerExpression

      public void visitMethodPointerExpression(org.codehaus.groovy.ast.expr.MethodPointerExpression pointer)
      Specified by:
      visitMethodPointerExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitMethodPointerExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitBinaryExpression

      public void visitBinaryExpression(org.codehaus.groovy.ast.expr.BinaryExpression expression)
      Specified by:
      visitBinaryExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitBinaryExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitClassExpression

      public void visitClassExpression(org.codehaus.groovy.ast.expr.ClassExpression expression)
      Specified by:
      visitClassExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitClassExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitConstructorCallExpression

      public void visitConstructorCallExpression(org.codehaus.groovy.ast.expr.ConstructorCallExpression call)
      Specified by:
      visitConstructorCallExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitConstructorCallExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitCastExpression

      public void visitCastExpression(org.codehaus.groovy.ast.expr.CastExpression expression)
      Specified by:
      visitCastExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitCastExpression in class org.codehaus.groovy.ast.CodeVisitorSupport
    • visitDeclarationExpression

      public void visitDeclarationExpression(org.codehaus.groovy.ast.expr.DeclarationExpression expression)
      Specified by:
      visitDeclarationExpression in interface org.codehaus.groovy.ast.GroovyCodeVisitor
      Overrides:
      visitDeclarationExpression in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitConstructorOrMethod

      protected void visitConstructorOrMethod(org.codehaus.groovy.ast.MethodNode node, boolean isConstructor)
      Overrides:
      visitConstructorOrMethod in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitField

      public void visitField(org.codehaus.groovy.ast.FieldNode node)
      Specified by:
      visitField in interface org.codehaus.groovy.ast.GroovyClassVisitor
      Overrides:
      visitField in class org.codehaus.groovy.ast.ClassCodeVisitorSupport
    • visitClass

      public void visitClass(org.codehaus.groovy.ast.ClassNode node)
      Specified by:
      visitClass in interface org.codehaus.groovy.ast.GroovyClassVisitor
      Overrides:
      visitClass in class org.codehaus.groovy.ast.ClassCodeVisitorSupport