Class BlockParentHandler

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

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
  • Field Details

    • CHECKED_CHILDREN

      private static final int[] CHECKED_CHILDREN
      Children checked by parent handlers.
  • Constructor Details

    • BlockParentHandler

      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

      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.
    • hasCurlies

      private boolean hasCurlies()
      Determines if this block expression has curly braces.
      Returns:
      true if curly braces are present, false otherwise
    • 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
    • checkLeftCurly

      private void checkLeftCurly()
      Check the indentation of the left curly brace.
    • 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
    • checkRightCurly

      private void checkRightCurly()
      Check the indentation of the right curly brace.
    • getNonListChild

      Get the child element that is not a list of statements.
      Returns:
      the non-list child element
    • checkNonListChild

      private void checkNonListChild()
      Check the indentation level of a child that is not a list of statements.
    • getListChild

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

      Get the right parenthesis portion of the expression we are handling.
      Returns:
      the right parenthesis expression
    • getLeftParen

      Get the left parenthesis portion of the expression we are handling.
      Returns:
      the left parenthesis expression
    • 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

      Gets indentation level expected for children.
      Returns:
      indentation level expected for children
    • getSuggestedChildIndent

      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
    • getLineWrappingIndent

      private int getLineWrappingIndent()
      A shortcut for IndentationCheck property.
      Returns:
      value of lineWrappingIndentation property of IndentationCheck