KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sourceforge > groboutils > codecoverage > v2 > logger > StdoutChannelLogger


1 /*
2  * @(#)StdoutChannelLogger.java
3  *
4  * Copyright (C) 2004 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.logger;
28
29 import java.io.File JavaDoc;
30 import java.io.FileWriter JavaDoc;
31 import java.io.IOException JavaDoc;
32
33 import net.sourceforge.groboutils.codecoverage.v2.IChannelLogger;
34
35
36 /**
37  * Logs coverage reports to a directory of logs. The directories are split
38  * by the channel index, and the directory contains one log per class file
39  * analyzed. The contents are in CSV format:
40  * <PRE>
41  * <i>method index</i> , <i>mark index</i> EOL
42  * </PRE>
43  *
44  * @author Matt Albrecht <a HREF="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a>
45  * @version $Date: 2004/05/11 23:22:33 $
46  * @since May 11, 2004
47  */

48 public class StdoutChannelLogger implements IChannelLogger
49 {
50     private short channelIndex;
51     public StdoutChannelLogger( short index )
52     {
53         this.channelIndex = index;
54     }
55     
56     
57     /**
58      * Records a coverage of a marked bytecode instruction. This method should
59      * never throw an exception.
60      *
61      * @param classSignature a signature of the class file being covered.
62      * this signature includes the fully-qualified name of the class,
63      * along with a checksum to uniquely identify it.
64      * @param methodIndex index for a method within the class. The meta-data
65      * store will know how to translate the index to a method signature.
66      * @param markIndex the index of the bytecode instruction mark for this
67      * particular channel.
68      */

69     public void cover( String JavaDoc classSignature, short methodIndex,
70             short markIndex )
71     {
72         String JavaDoc text = createCoverString( classSignature, methodIndex,
73             markIndex );
74         System.err.println(text);
75     }
76     
77     
78     /**
79      * Make static final so that the invocation time is minimized.
80      */

81     protected final String JavaDoc createCoverString( String JavaDoc classSig,
82             short methodIndex, short markIndex )
83     {
84         // make the string too big, so we don't need to resize it during
85
// execution.
86
StringBuffer JavaDoc sb = new StringBuffer JavaDoc( "[Cover String: " );
87         sb.append( this.channelIndex ).append( ',' ).
88             append( classSig ).append( ',' ).
89             append( methodIndex ).append( ',' ).
90             append( markIndex ).append( ']' );
91         
92         String JavaDoc out = sb.toString();
93         return out;
94     }
95 }
96
97
Popular Tags