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
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
-
-
Field Summary
Fields Modifier and Type Field Description private static int[]
CHECKED_CHILDREN
Children checked by parent handlers.
-
Constructor Summary
Constructors Constructor Description 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.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean
canChildrenBeNested()
Determines if child elements within the expression may be nested.void
checkIndentation()
Check the indentation of the expression we are handling.private void
checkLeftCurly()
Check the indentation of the left curly brace.private void
checkNonListChild()
Check the indentation level of a child that is not a list of statements.private void
checkRightCurly()
Check the indentation of the right curly brace.protected void
checkTopLevelToken()
Check the indent of the top level token.protected IndentLevel
curlyIndent()
Get the expected indentation level for the curly braces.protected int[]
getCheckedChildren()
Returns array of token types which should be checked among children.protected IndentLevel
getChildrenExpectedIndent()
Gets indentation level expected for children.protected DetailAST
getLeftCurly()
Get the left curly brace portion of the expression we are handling.private DetailAST
getLeftParen()
Get the left parenthesis portion of the expression we are handling.private int
getLineWrappingIndent()
A shortcut forIndentationCheck
property.protected DetailAST
getListChild()
Get the child element representing the list of statements.protected DetailAST
getNonListChild()
Get the child element that is not a list of statements.protected DetailAST
getRightCurly()
Get the right curly brace portion of the expression we are handling.private DetailAST
getRightParen()
Get the right parenthesis portion of the expression we are handling.IndentLevel
getSuggestedChildIndent(AbstractExpressionHandler child)
Indentation level suggested for a child element.protected DetailAST
getTopLevelAst()
Get the top level expression being managed by this handler.private boolean
hasCurlies()
Determines if this block expression has curly braces.-
Methods inherited from class com.puppycrawl.tools.checkstyle.checks.indentation.AbstractExpressionHandler
checkChildren, checkExpressionSubtree, checkLeftParen, checkModifiers, checkRightParen, checkWrappingIndentation, checkWrappingIndentation, expandedTabsColumnNo, findSubtreeAst, getBasicOffset, getBraceAdjustment, getFirstAstNode, getFirstLine, getFirstToken, getIndent, getIndentCheck, getIndentImpl, getLineStart, getLineStart, getMainAst, getParent, isOnStartOfLine, logError, logError, shouldIncreaseIndent
-
-
-
-
Field Detail
-
CHECKED_CHILDREN
private static final int[] CHECKED_CHILDREN
Children checked by parent handlers.
-
-
Constructor Detail
-
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 checkname
- the name of the handlerast
- the abstract syntax treeparent
- the parent handler
-
-
Method Detail
-
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.
-
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
protected DetailAST 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
private DetailAST getRightParen()
Get the right parenthesis portion of the expression we are handling.- Returns:
- the right parenthesis expression
-
getLeftParen
private DetailAST 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 classAbstractExpressionHandler
-
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 classAbstractExpressionHandler
- Parameters:
child
- child AST (so suggestion level can differ based on child type)- Returns:
- suggested indentation for child
-
getLineWrappingIndent
private int getLineWrappingIndent()
A shortcut forIndentationCheck
property.- Returns:
- value of lineWrappingIndentation property
of
IndentationCheck
-
-