1 21 package proguard.io; 22 23 import proguard.classfile.*; 24 import proguard.classfile.io.ProgramClassWriter; 25 26 import java.io.*; 27 28 29 35 public class ClassRewriter implements DataEntryReader 36 { 37 private ClassPool classPool; 38 private DataEntryWriter dataEntryWriter; 39 40 41 public ClassRewriter(ClassPool classPool, 42 DataEntryWriter dataEntryWriter) 43 { 44 this.classPool = classPool; 45 this.dataEntryWriter = dataEntryWriter; 46 } 47 48 49 51 public void read(DataEntry dataEntry) throws IOException 52 { 53 String inputName = dataEntry.getName(); 54 String className = inputName.substring(0, inputName.length() - ClassConstants.CLASS_FILE_EXTENSION.length()); 55 56 ProgramClass programClass = (ProgramClass)classPool.getClass(className); 58 if (programClass != null) 59 { 60 String newClassName = programClass.getName(); 62 if (!className.equals(newClassName)) 63 { 64 dataEntry = new RenamedDataEntry(dataEntry, newClassName + ClassConstants.CLASS_FILE_EXTENSION); 65 } 66 67 OutputStream outputStream = dataEntryWriter.getOutputStream(dataEntry); 69 if (outputStream != null) 70 { 71 DataOutputStream classOutputStream = new DataOutputStream(outputStream); 73 74 new ProgramClassWriter(classOutputStream).visitProgramClass(programClass); 75 76 classOutputStream.flush(); 77 } 78 } 79 } 80 } 81 | Popular Tags |