Package: org.codehaus.groovy.transform

## [Groovy] Class ThreadInterruptibleASTTransformation

- org.codehaus.groovy.transform.ThreadInterruptibleASTTransformation

-     @AutoFinal
      @CompileStatic
      @GroovyASTTransformation
      class ThreadInterruptibleASTTransformation
      extends AbstractInterruptibleASTTransformation

  Allows "interrupt-safe" executions of scripts by adding Thread.currentThread().isInterrupted() checks on loops (for, while, do) and first statement of closures. By default, also adds an interrupt check statement on the beginning of method calls.

  See Also:
    ThreadInterrupt
  Since:
    1.8.0

- - Inherited fields
    Fields inherited from class | Fields
    --- | ---
    `class AbstractInterruptibleASTTransformation` | `CHECK_METHOD_START_MEMBER, THROWN_EXCEPTION_TYPE, applyToAllClasses, applyToAllMembers, checkOnMethodStart, source, thrownExceptionType`

  - ### Constructor Summary

    Constructors
    Constructor and description
    `ThreadInterruptibleASTTransformation()`

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `protected Expression` | `createCondition()` Builds the condition that checks the current thread interruption flag.
    `` | `protected String` | `getErrorMessage()` Returns the message used when the current thread has been interrupted.
    `` | `protected ClassNode` | `type()` Returns the annotation type handled by this transformation.
    `` | `void` | `visitClosureExpression(ClosureExpression closure)` Wraps closure bodies with the thread interruption check.
    `` | `void` | `visitMethod(MethodNode method)` Wraps eligible methods with the thread interruption check.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class AbstractInterruptibleASTTransformation` | `createCondition, createInterruptStatement, getBooleanAnnotationParameter, getClassAnnotationParameter, getErrorMessage, getSourceUnit, internalError, setupTransform, type, visit, visitDoWhileLoop, visitForLoop, visitWhileLoop, wrapBlock`
    `class ClassCodeVisitorSupport` | `addError, getSourceUnit, visitAnnotation, visitAnnotations, visitAnnotations, visitAssertStatement, visitBlockStatement, visitBreakStatement, visitCaseStatement, visitCatchStatement, visitClass, visitClassCodeContainer, visitClosureExpression, visitConstructor, visitConstructorOrMethod, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitExpressionStatement, visitField, visitForLoop, visitIfElse, visitImports, visitMethod, visitObjectInitializerStatements, visitPackage, visitProperty, visitReturnStatement, visitStatement, visitStatementAnnotations, visitSwitch, visitSynchronizedStatement, visitThrowStatement, visitTryCatchFinally, visitWhileLoop, visitYieldStatement`
    `class CodeVisitorSupport` | `afterSwitchCaseStatementsVisited, afterSwitchCaseStatementsVisited, afterSwitchConditionExpressionVisited, afterSwitchConditionExpressionVisited, visitArgumentlistExpression, visitArrayExpression, visitAssertStatement, visitAttributeExpression, visitBinaryExpression, visitBitwiseNegationExpression, visitBlockStatement, visitBooleanExpression, visitBreakStatement, visitBytecodeExpression, visitCaseStatement, visitCastExpression, visitCatchStatement, visitClassExpression, visitClosureExpression, visitClosureListExpression, visitConstantExpression, visitConstructorCallExpression, visitContinueStatement, visitDeclarationExpression, visitDoWhileLoop, visitEmptyStatement, visitExpressionStatement, visitFieldExpression, visitForLoop, visitGStringExpression, visitIfElse, visitLambdaExpression, visitListExpression, visitMapEntryExpression, visitMapExpression, visitMethodCallExpression, visitMethodPointerExpression, visitMethodReferenceExpression, visitNotExpression, visitPostfixExpression, visitPrefixExpression, visitPropertyExpression, visitRangeExpression, visitReturnStatement, visitShortTernaryExpression, visitSpreadExpression, visitSpreadMapExpression, visitStaticMethodCallExpression, visitSwitch, visitSwitchExpression, visitSynchronizedStatement, visitTernaryExpression, visitThrowStatement, visitTryCatchFinally, visitTupleExpression, visitUnaryMinusExpression, visitUnaryPlusExpression, visitVariableExpression, visitWhileLoop, visitYieldStatement`

- - ### Constructor Detail

    - #### ThreadInterruptibleASTTransformation()

  - ### Method Detail

    - #### @Override
      protected Expression createCondition()

      Builds the condition that checks the current thread interruption flag.

      Returns:
        the interrupt condition expression

    - #### @Override
      protected String getErrorMessage()

      Returns the message used when the current thread has been interrupted.

      Returns:
        the failure message

    - #### @Override
      protected ClassNode type()

      Returns the annotation type handled by this transformation.

      Returns:
        the handled annotation type

    - #### @Override
      void visitClosureExpression(ClosureExpression closure)

      Wraps closure bodies with the thread interruption check.

      Parameters:
        `closure` - the closure being visited

    - #### @Override
      void visitMethod(MethodNode method)

      Wraps eligible methods with the thread interruption check.

      Parameters:
        `method` - the method being visited