KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jester > RealMutationsList


1 package jester;
2
3 import java.io.*;
4 import java.util.StringTokenizer JavaDoc;
5
6 public class RealMutationsList implements MutationsList {
7     public static final String JavaDoc DEFAULT_MUTATIONS_FILENAME = "mutations.cfg";
8     
9     private String JavaDoc myFileName;
10     private PrintStream myErrorStream;
11     
12     public RealMutationsList(String JavaDoc fileName, PrintStream errorStream) {
13         super();
14         myFileName = fileName;
15         myErrorStream = errorStream;
16     }
17     public RealMutationsList(String JavaDoc fileName) {
18         this(fileName, System.err);
19     }
20     public void visit(BufferedReader aBufferedReader, MutationMaker aMutationMaker) throws IOException, SourceChangeException {
21         String JavaDoc line = aBufferedReader.readLine();
22         while (line != null) {
23             visitLine(line, aMutationMaker);
24             line = aBufferedReader.readLine();
25         }
26     }
27     public void visit(MutationMaker aMutationMaker) throws SourceChangeException {
28         try {
29             InputStream mutationsFile = ClassLoader.getSystemResourceAsStream(myFileName);
30             if (mutationsFile == null) {
31                 myErrorStream.println("Warning - could not find "+DEFAULT_MUTATIONS_FILENAME+" so using default mutations.");
32                 aMutationMaker.mutate("true", "false");
33                 aMutationMaker.mutate("false", "true");
34                 aMutationMaker.mutate("if(", "if(true ||");
35                 aMutationMaker.mutate("if (", "if (true ||");
36                 aMutationMaker.mutate("if(", "if(false &&");
37                 aMutationMaker.mutate("if (", "if (false &&");
38                 aMutationMaker.mutate("==", "!=");
39                 aMutationMaker.mutate("!=", "==");
40             } else {
41                 BufferedReader aBufferedReader = new BufferedReader(new InputStreamReader(mutationsFile));
42
43                 visit(aBufferedReader, aMutationMaker);
44             }
45         } catch (IOException ex) {
46             throw new SourceChangeException("could not visit mutations " + ex);
47         }
48     }
49     private void visitLine(String JavaDoc line, MutationMaker aMutationMaker) throws SourceChangeException {
50         if(line.length() == 0){
51             return;
52         }
53         String JavaDoc delimiter = line.substring(0, 1);
54         StringTokenizer JavaDoc aStringTokenizer = new StringTokenizer JavaDoc(line.substring(1), delimiter, false);
55         int numberOfItems = 2;
56         String JavaDoc[] strings = new String JavaDoc[numberOfItems];
57         int i = 0;
58         while (i < numberOfItems && aStringTokenizer.hasMoreTokens()) {
59             String JavaDoc s = aStringTokenizer.nextToken();
60             strings[i] = s;
61             i++;
62         }
63         if (i != numberOfItems) {
64             return;
65         }
66         aMutationMaker.mutate(strings[0], strings[1]);
67     }
68 }
Popular Tags