KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sourceforge > groboutils > codecoverage > v2 > module > AbstractMeasure


1 /*
2  * @(#)AbstractMeasure.java
3  *
4  * Copyright (C) 2003 Matt Albrecht
5  * groboclown@users.sourceforge.net
6  * http://groboutils.sourceforge.net
7  *
8  * Permission is hereby granted, free of charge, to any person obtaining a
9  * copy of this software and associated documentation files (the "Software"),
10  * to deal in the Software without restriction, including without limitation
11  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12  * and/or sell copies of the Software, and to permit persons to whom the
13  * Software is furnished to do so, subject to the following conditions:
14  *
15  * The above copyright notice and this permission notice shall be included in
16  * all copies or substantial portions of the Software.
17  *
18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24  * DEALINGS IN THE SOFTWARE.
25  */

26
27 package net.sourceforge.groboutils.codecoverage.v2.module;
28
29
30 import java.util.HashSet JavaDoc;
31 import java.util.Set JavaDoc;
32
33 import net.sourceforge.groboutils.codecoverage.v2.IAnalysisMetaData;
34 import net.sourceforge.groboutils.codecoverage.v2.IAnalysisModule;
35 import net.sourceforge.groboutils.codecoverage.v2.IMethodCode;
36
37 /**
38  * Offers additional capability to detect when a probe has been measured
39  * more than once.
40  *
41  * @author Matt Albrecht <a HREF="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a>
42  * @version $Date: 2004/04/15 05:48:26 $
43  * @since January 26, 2003
44  * @see IAnalysisMetaData
45  */

46 public abstract class AbstractMeasure implements IAnalysisModule
47 {
48     private Set JavaDoc beenCovered = new HashSet JavaDoc();
49     
50     protected void markInstruction( IMethodCode method, int instrPos,
51             IAnalysisMetaData data, boolean allowDuplicates )
52     {
53         boolean addMark = true;
54         if (!allowDuplicates)
55         {
56             String JavaDoc id = getPositionID( method, instrPos );
57             if (this.beenCovered.contains( id ))
58             {
59                 addMark = false;
60             }
61             else
62             {
63                 this.beenCovered.add( id );
64             }
65         }
66         
67         if (addMark)
68         {
69             method.markInstruction( instrPos, data );
70         }
71     }
72     
73     
74     private String JavaDoc getPositionID( IMethodCode m, int instrPos )
75     {
76         StringBuffer JavaDoc sb = new StringBuffer JavaDoc( m.getClassName() );
77         sb.append( '#' ).append( m.getMethodName() );
78         sb.append( '#' ).append( instrPos );
79         
80         // more memory conservative
81
return new String JavaDoc( sb );
82     }
83 }
84
85
Popular Tags