Clover Coverage Report - Checkstyle
Coverage timestamp: Fri May 9 2008 10:48:13 EST
../../../../../../img/srcFileCovDistChart10.png 0% of files have more coverage
22   101   9   5.5
10   49   0.41   4
4     2.25  
1    
 
  BeanManagedMethodChecker       Line # 29 94.4% 0.9444444
9.01 22 9 9 0.41
 
  (6)
 
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.j2ee;
20   
21    import com.puppycrawl.tools.checkstyle.api.DetailAST;
22    import com.puppycrawl.tools.checkstyle.api.TokenTypes;
23   
24    /**
25    * Checks methods of entity beans with bean-managed persistence.
26    * Reference: Enterprise JavaBeansTM Specification,Version 2.0, Chapter 12
27    * @author Rick Giles
28    */
 
29    public class BeanManagedMethodChecker
30    extends EntityBeanMethodChecker
31    {
32    /** true if the bean has method ejbFindByPrimaryKey */
33    private boolean mHasEjbFindByPrimaryKey;
34   
35    /**
36    * Constructs a <code>BeanManagedMethodChecker</code>.
37    * @param aCheck the entity bean check.
38    */
 
39  6 toggle public BeanManagedMethodChecker(EntityBeanCheck aCheck)
40    {
41  6 super(aCheck);
42    }
43   
44    /**
45    * {@inheritDoc}
46    */
 
47  6 toggle public void checkMethods(DetailAST aAST)
48    {
49  6 mHasEjbFindByPrimaryKey = false;
50  6 super.checkMethods(aAST);
51  6 if (!mHasEjbFindByPrimaryKey) {
52  1 final DetailAST nameAST = aAST.findFirstToken(TokenTypes.IDENT);
53  1 final String name = nameAST.getText();
54  1 final String arg = "Entity bean '" + name + "'";
55  1 log(aAST, "missingmethod.bean",
56    new Object[] {arg, "ejbFindByPrimaryKey"});
57    }
58    }
59   
60    /**
61    * {@inheritDoc}
62    */
 
63  46 toggle public void checkMethod(DetailAST aMethodAST)
64    {
65  46 super.checkMethod(aMethodAST);
66   
67  46 final DetailAST nameAST = aMethodAST.findFirstToken(TokenTypes.IDENT);
68  46 final String name = nameAST.getText();
69   
70  46 if (name.startsWith("ejbFind")) {
71  6 if (name.equals("ejbFindByPrimaryKey")) {
72  5 mHasEjbFindByPrimaryKey = true;
73    // the method must have one parameter
74  5 final DetailAST paramAST =
75    aMethodAST.findFirstToken(TokenTypes.PARAMETERS);
76  5 final int paramCount = paramAST.getChildCount();
77  5 if (paramCount != 1) {
78  0 logName(aMethodAST, "paramcount.bean", new Object[] {"1"});
79    }
80    }
81  6 checkFindMethod(aMethodAST);
82    }
83    }
84   
85    /**
86    * Checks whether an ejbFind&lt;METHOD&gt;(...) method of an
87    * entity bean satisfies requirements.
88    * @param aMethodAST the AST for the method definition.
89    */
 
90  6 toggle private void checkFindMethod(DetailAST aMethodAST)
91    {
92    // the method must not be final
93  6 super.checkMethod(aMethodAST, false);
94   
95    // The return type must be the entity bean's primary key type,
96    // or a collection of primary keys
97  6 if (Utils.isVoid(aMethodAST)) {
98  1 logName(aMethodAST, "voidmethod.bean", new Object[] {});
99    }
100    }
101    }