001    /*
002     * Cobertura - http://cobertura.sourceforge.net/
003     *
004     * Copyright (C) 2003 jcoverage ltd.
005     * Copyright (C) 2005 Mark Doliner <thekingant@users.sourceforge.net>
006     *
007     * Cobertura is free software; you can redistribute it and/or modify
008     * it under the terms of the GNU General Public License as published
009     * by the Free Software Foundation; either version 2 of the License,
010     * or (at your option) any later version.
011     *
012     * Cobertura is distributed in the hope that it will be useful, but
013     * WITHOUT ANY WARRANTY; without even the implied warranty of
014     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015     * General Public License for more details.
016     *
017     * You should have received a copy of the GNU General Public License
018     * along with Cobertura; if not, write to the Free Software
019     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
020     * USA
021     */
022    
023    package net.sourceforge.cobertura.coverage;
024    
025    import java.io.Serializable;
026    
027    /**
028     * <p>
029     * This class implements HasBeenInstrumented so that when cobertura
030     * instruments itself, it will omit this class.  It does this to
031     * avoid an infinite recursion problem because instrumented classes
032     * make use of this class.
033     * </p>
034     */
035    public class LineInformation implements HasBeenInstrumented, Serializable
036    {
037            private static final long serialVersionUID = 1;
038    
039            private long hits;
040            private boolean isConditional;
041            private final int lineNumber;
042            private String methodDescriptor;
043            private String methodName;
044    
045            LineInformation(int lineNumber)
046            {
047                    this(lineNumber, null, null);
048            }
049    
050            LineInformation(int lineNumber, String methodName, String methodDescriptor)
051            {
052                    this.hits = 0;
053                    this.isConditional = false;
054                    this.lineNumber = lineNumber;
055                    this.methodName = methodName;
056                    this.methodDescriptor = methodDescriptor;
057            }
058    
059            long getHits()
060            {
061                    return hits;
062            }
063    
064            int getLineNumber()
065            {
066                    return lineNumber;
067            }
068    
069            String getMethodDescriptor()
070            {
071                    return methodDescriptor;
072            }
073    
074            String getMethodName()
075            {
076                    return methodName;
077            }
078    
079            boolean isConditional()
080            {
081                    return isConditional;
082            }
083    
084            public void setConditional(boolean isConditional)
085            {
086                    this.isConditional = isConditional;
087            }
088    
089            public void setMethodNameAndDescriptor(String name, String descriptor)
090            {
091                    this.methodName = name;
092                    this.methodDescriptor = descriptor;
093            }
094    
095            void touch()
096            {
097                    this.hits++;
098            }
099    
100    }