1 package jester; 2 3 public abstract class SimpleCodeMangler implements CodeMangler { 4 private ClassSourceCodeChanger sourceCodeSystem; 5 private int indexOfLastChange = -1; 7 public SimpleCodeMangler(ClassSourceCodeChanger sourceCodeSystem) { 8 super(); 9 this.sourceCodeSystem = sourceCodeSystem; 10 } 11 int getIndexOfLastChange() { 12 return indexOfLastChange; 13 } 14 IgnoreListDocument getOriginalContents() throws ConfigurationException { 15 return sourceCodeSystem.getOriginalContents(); 16 } 17 boolean makeChange(int index, String valueChangedFrom, String valueChangedTo) throws SourceChangeException { 18 try { 19 sourceCodeSystem.writeOverSourceReplacing(index, valueChangedFrom, valueChangedTo); 20 indexOfLastChange = index; 21 return true; 22 } catch (SourceChangeException ex) { 23 indexOfLastChange = index; 24 return makeSomeChangeToFileSource(); 25 } 26 } 27 public boolean makeChangeToClass() throws SourceChangeException { 28 boolean couldMakeChange = makeSomeChangeToFileSource(); 29 boolean everMadeAChange = indexOfLastChange != -1; 30 if (!couldMakeChange && everMadeAChange) { 31 sourceCodeSystem.writeOriginalContentsBack(); 32 } 33 return couldMakeChange; 34 } 35 abstract boolean makeSomeChangeToFileSource() throws SourceChangeException; 36 } | Popular Tags |