Class BlockParentHandler

java.lang.Object
com.puppycrawl.tools.checkstyle.checks.indentation.AbstractExpressionHandler
com.puppycrawl.tools.checkstyle.checks.indentation.BlockParentHandler
Direct Known Subclasses:
ArrayInitHandler, CatchHandler, ClassDefHandler, DoWhileHandler, ElseHandler, FinallyHandler, ForHandler, IfHandler, MethodDefHandler, ObjectBlockHandler, SlistHandler, StaticInitHandler, SwitchHandler, SynchronizedHandler, TryHandler, WhileHandler

public class BlockParentHandler extends AbstractExpressionHandler
Handler for parents of blocks ('if', 'else', 'while', etc).

The "block" handler classes use a common superclass BlockParentHandler, employing the Template Method pattern.

  • template method to get the lcurly
  • template method to get the rcurly
  • if curlies aren't present, then template method to get expressions is called
  • now all the repetitious code which checks for BOL, if curlies are on same line, etc. can be collapsed into the superclass
  • Constructor Details

    • BlockParentHandler

      public BlockParentHandler(IndentationCheck indentCheck, String name, DetailAST ast, AbstractExpressionHandler parent)
      Construct an instance of this handler with the given indentation check, name, abstract syntax tree, and parent handler.
      Parameters:
      indentCheck - the indentation check
      name - the name of the handler
      ast - the abstract syntax tree
      parent - the parent handler
  • Method Details

    • getCheckedChildren

      protected int[] getCheckedChildren()
      Returns array of token types which should be checked among children.
      Returns:
      array of token types to check.
    • getTopLevelAst

      protected DetailAST getTopLevelAst()
      Get the top level expression being managed by this handler.
      Returns:
      the top level expression
    • checkTopLevelToken

      protected void checkTopLevelToken()
      Check the indent of the top level token.
    • getLeftCurly

      protected DetailAST getLeftCurly()
      Get the left curly brace portion of the expression we are handling.
      Returns:
      the left curly brace expression
    • getRightCurly

      protected DetailAST getRightCurly()
      Get the right curly brace portion of the expression we are handling.
      Returns:
      the right curly brace expression
    • curlyIndent

      protected IndentLevel curlyIndent()
      Get the expected indentation level for the curly braces.
      Returns:
      the curly brace indentation level
    • canChildrenBeNested

      protected boolean canChildrenBeNested()
      Determines if child elements within the expression may be nested.
      Returns:
      false
    • getNonListChild

      protected DetailAST getNonListChild()
      Get the child element that is not a list of statements.
      Returns:
      the non-list child element
    • getListChild

      protected DetailAST getListChild()
      Get the child element representing the list of statements.
      Returns:
      the statement list child
    • checkIndentation

      public void checkIndentation()
      Description copied from class: AbstractExpressionHandler
      Check the indentation of the expression we are handling.
      Specified by:
      checkIndentation in class AbstractExpressionHandler
    • getChildrenExpectedIndent

      protected IndentLevel getChildrenExpectedIndent()
      Gets indentation level expected for children.
      Returns:
      indentation level expected for children
    • getSuggestedChildIndent

      public IndentLevel getSuggestedChildIndent(AbstractExpressionHandler child)
      Description copied from class: AbstractExpressionHandler
      Indentation level suggested for a child element. Children don't have to respect this, but most do.
      Overrides:
      getSuggestedChildIndent in class AbstractExpressionHandler
      Parameters:
      child - child AST (so suggestion level can differ based on child type)
      Returns:
      suggested indentation for child