KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > puppycrawl > tools > checkstyle > checks > whitespace > AbstractParenPadCheck


1 ////////////////////////////////////////////////////////////////////////////////
2
// checkstyle: Checks Java source code for adherence to a set of rules.
3
// Copyright (C) 2001-2005 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.whitespace;
20
21 import com.puppycrawl.tools.checkstyle.api.DetailAST;
22 import com.puppycrawl.tools.checkstyle.api.Utils;
23 import com.puppycrawl.tools.checkstyle.checks.AbstractOptionCheck;
24
25 /**
26  * <p>Abstract class for checking the padding of parentheses. That is whether a
27  * space is required after a left parenthesis and before a right parenthesis,
28  * or such spaces are forbidden.
29  * </p>
30  * @author Oliver Burn
31  * @version 1.0
32  */

33 abstract class AbstractParenPadCheck
34     extends AbstractOptionCheck
35 {
36     /**
37      * Sets the paren pad otion to nospace.
38      */

39     AbstractParenPadCheck()
40     {
41         super(PadOption.NOSPACE);
42     }
43
44     /**
45      * Process a token representing a left parentheses.
46      * @param aAST the token representing a left parentheses
47      */

48     protected void processLeft(DetailAST aAST)
49     {
50         final String JavaDoc line = getLines()[aAST.getLineNo() - 1];
51         final int after = aAST.getColumnNo() + 1;
52         if (after < line.length()) {
53             if ((PadOption.NOSPACE == getAbstractOption())
54                 && (Character.isWhitespace(line.charAt(after))))
55             {
56                 log(aAST.getLineNo(), after, "ws.followed", "(");
57             }
58             else if ((PadOption.SPACE == getAbstractOption())
59                      && !Character.isWhitespace(line.charAt(after))
60                      && (line.charAt(after) != ')'))
61             {
62                 log(aAST.getLineNo(), after, "ws.notFollowed", "(");
63             }
64         }
65     }
66
67     /**
68      * Process a token representing a right parentheses.
69      * @param aAST the token representing a right parentheses
70      */

71     protected void processRight(DetailAST aAST)
72     {
73         final String JavaDoc line = getLines()[aAST.getLineNo() - 1];
74         final int before = aAST.getColumnNo() - 1;
75         if (before >= 0) {
76             if ((PadOption.NOSPACE == getAbstractOption())
77                 && Character.isWhitespace(line.charAt(before))
78                 && !Utils.whitespaceBefore(before, line))
79             {
80                 log(aAST.getLineNo(), before, "ws.preceded", ")");
81             }
82             else if ((PadOption.SPACE == getAbstractOption())
83                 && !Character.isWhitespace(line.charAt(before))
84                 && (line.charAt(before) != '('))
85             {
86                 log(aAST.getLineNo(), aAST.getColumnNo(),
87                     "ws.notPreceded", ")");
88             }
89         }
90     }
91 }
92
Popular Tags