import java.io.FileNotFoundException; import java.io.PrintWriter; import gov.nasa.jpf.ListenerAdapter; import gov.nasa.jpf.search.Search; import gov.nasa.jpf.search.SearchListener; public class SimpleStateSpace extends ListenerAdapter implements SearchListener { private int source; private int target; private PrintWriter writer; public SimpleStateSpace() { super(); this.source = -1; this.target = -1; } public void searchStarted(Search search) { String name = search.getVM().getSUTName() + ".dot"; try { this.writer = new PrintWriter(name); this.writer.println("digraph statespace {"); this.writer.println("node [style=filled]"); this.writer.println("0 [fillcolor=green]"); } catch (FileNotFoundException e) { System.out.println("Listener could not write to file " + name); search.terminate(); } } public void stateAdvanced(Search search) { this.source = target; this.target = search.getStateId(); if (this.source != -1) { System.out.printf("%d -> %d\n", this.source, this.target); } if (search.isEndState()) { System.out.printf("%d [fillcolor=red]", this.target); } } public void stateBacktracked(Search search) { this.target = search.getStateId(); } public void stateRestored(Search search) { this.target = search.getStateId(); } public void searchFinished(Search search) { System.out.println("}"); } }