Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/puppycrawl/tools/checkstyle/checks/indentation/SwitchHandler.java


1   ////////////////////////////////////////////////////////////////////////////////
2   // checkstyle: Checks Java source code for adherence to a set of rules.
3   // Copyright (C) 2001-2003  Oliver Burn
4   //
5   // This library is free software; you can redistribute it and/or
6   // modify it under the terms of the GNU Lesser General Public
7   // License as published by the Free Software Foundation; either
8   // version 2.1 of the License, or (at your option) any later version.
9   //
10  // This library is distributed in the hope that it will be useful,
11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  // Lesser General Public License for more details.
14  //
15  // You should have received a copy of the GNU Lesser General Public
16  // License along with this library; if not, write to the Free Software
17  // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  ////////////////////////////////////////////////////////////////////////////////
19  package com.puppycrawl.tools.checkstyle.checks.indentation;
20  
21  import com.puppycrawl.tools.checkstyle.api.DetailAST;
22  import com.puppycrawl.tools.checkstyle.api.TokenTypes;
23  
24  /**
25   * Handler for switch statements.
26   *
27   * @author jrichard
28   */
29  public class SwitchHandler extends BlockParentHandler
30  {
31      /**
32       * Construct an instance of this handler with the given indentation check,
33       * abstract syntax tree, and parent handler.
34       *
35       * @param aIndentCheck   the indentation check
36       * @param aAst           the abstract syntax tree
37       * @param aParent        the parent handler
38       */
39      public SwitchHandler(IndentationCheck aIndentCheck,
40          DetailAST aAst, ExpressionHandler aParent)
41      {
42          super(aIndentCheck, "switch", aAst, aParent);
43      }
44  
45      /**
46       * Get the left curly brace portion of the expression we are handling.
47       *
48       * @return the left curly brace expression
49       */
50      protected DetailAST getLCurly()
51      {
52          return getMainAst().findFirstToken(TokenTypes.LCURLY);
53      }
54  
55      /**
56       * Get the right curly brace portion of the expression we are handling.
57       *
58       * @return the right curly brace expression
59       */
60      protected DetailAST getRCurly()
61      {
62          return getMainAst().findFirstToken(TokenTypes.RCURLY);
63      }
64  
65      /**
66       * There is no list of statements child for this handler.
67       *
68       * @return null
69       */
70      protected DetailAST getListChild()
71      {
72          // all children should be taken care of by case handler (plus
73          // there is no parent of just the cases, if checking is needed
74          // here in the future, an additional way beyond checkChildren()
75          // will have to be devised to get children)
76          return null;
77      }
78  
79      /**
80       * There is no child element that is not a list of statements.
81       *
82       * @return null
83       */
84      protected DetailAST getNonlistChild()
85      {
86          return null;
87      }
88  
89      /**
90       * Check the indentation of the switch expression.
91       */
92      private void checkSwitchExpr()
93      {
94          checkExpressionSubtree(
95              (DetailAST) getMainAst().findFirstToken(TokenTypes.LPAREN).
96                  getNextSibling(),
97              getLevel(),
98              false,
99              false);
100     }
101 
102     /**
103      * Check the indentation of the expression we are handling.
104      */
105     public void checkIndentation()
106     {
107         checkSwitchExpr();
108         super.checkIndentation();
109     }
110 }