Clover Coverage Report - PMD-3.8
Coverage timestamp: Sat May 5 2007 15:33:30 EST
44   137   11   3.14
14   108   0.55   3.5
14     1.71  
4    
 
  SourceCode       Line # 17 16 5 92.6% 0.9259259
  SourceCode.CodeLoader       Line # 19 20 7 83.3% 0.8333333
  SourceCode.FileCodeLoader       Line # 61 3 1 0% 0.0
  SourceCode.StringCodeLoader       Line # 77 5 1 100% 1.0
 
  (13)
 
1    /**
2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3    */
4    package net.sourceforge.pmd.cpd;
5   
6    import net.sourceforge.pmd.PMD;
7   
8    import java.io.File;
9    import java.io.FileReader;
10    import java.io.LineNumberReader;
11    import java.io.Reader;
12    import java.io.StringReader;
13    import java.lang.ref.SoftReference;
14    import java.util.ArrayList;
15    import java.util.List;
16   
 
17    public class SourceCode {
18   
 
19    public static abstract class CodeLoader {
20    private SoftReference code;
21   
 
22  20 toggle public List getCode() {
23  20 List c = null;
24  20 if (code != null) {
25  7 c = (List) code.get();
26    }
27  20 if (c != null) {
28  7 return c;
29    }
30  13 this.code = new SoftReference(load());
31  13 return (List) code.get();
32    }
33   
34    public abstract String getFileName();
35   
36    protected abstract Reader getReader() throws Exception;
37   
 
38  13 toggle protected List load() {
39  13 LineNumberReader lnr = null;
40  13 try {
41  13 lnr = new LineNumberReader(getReader());
42  13 List lines = new ArrayList();
43  13 String currentLine;
44  0 while ((currentLine = lnr.readLine()) != null) {
45  54 lines.add(currentLine);
46    }
47  13 return lines;
48    } catch (Exception e) {
49  0 throw new RuntimeException("Problem while reading " + getFileName() + ":" + e.getMessage());
50    } finally {
51  13 try {
52  13 if (lnr != null)
53  13 lnr.close();
54    } catch (Exception e) {
55  0 throw new RuntimeException("Problem while reading " + getFileName() + ":" + e.getMessage());
56    }
57    }
58    }
59    }
60   
 
61    public static class FileCodeLoader extends CodeLoader {
62    private File file;
63   
 
64  0 toggle public FileCodeLoader(File file) {
65  0 this.file = file;
66    }
67   
 
68  0 toggle public Reader getReader() throws Exception {
69  0 return new FileReader(file);
70    }
71   
 
72  0 toggle public String getFileName() {
73  0 return this.file.getAbsolutePath();
74    }
75    }
76   
 
77    public static class StringCodeLoader extends CodeLoader {
78    public static final String DEFAULT_NAME = "CODE_LOADED_FROM_STRING";
79   
80    private String source_code;
81   
82    private String name;
83   
 
84  10 toggle public StringCodeLoader(String code) {
85  10 this(code, DEFAULT_NAME);
86    }
87   
 
88  13 toggle