1 21 package proguard.obfuscate; 22 23 import proguard.classfile.*; 24 import proguard.classfile.attribute.*; 25 import proguard.classfile.attribute.visitor.AttributeVisitor; 26 import proguard.classfile.editor.ConstantPoolEditor; 27 import proguard.classfile.util.SimplifiedVisitor; 28 import proguard.classfile.visitor.ClassVisitor; 29 30 37 public class SourceFileRenamer 38 extends SimplifiedVisitor 39 implements ClassVisitor, 40 AttributeVisitor 41 { 42 private ConstantPoolEditor constantPoolEditor = new ConstantPoolEditor(); 43 44 private String newSourceFileAttribute; 45 46 47 52 public SourceFileRenamer(String newSourceFileAttribute) 53 { 54 this.newSourceFileAttribute = newSourceFileAttribute; 55 } 56 57 58 60 public void visitProgramClass(ProgramClass programClass) 61 { 62 programClass.attributesAccept(this); 64 } 65 66 67 public void visitLibraryClass(LibraryClass libraryClass) 68 { 69 } 71 72 73 75 public void visitAnyAttribute(Clazz clazz, Attribute attribute) {} 76 77 78 public void visitSourceFileAttribute(Clazz clazz, SourceFileAttribute sourceFileAttribute) 79 { 80 sourceFileAttribute.u2sourceFileIndex = 82 constantPoolEditor.addUtf8Constant((ProgramClass)clazz, 83 newSourceFileAttribute); 84 } 85 86 87 public void visitSourceDirAttribute(Clazz clazz, SourceDirAttribute sourceDirAttribute) 88 { 89 sourceDirAttribute.u2sourceDirIndex = 91 constantPoolEditor.addUtf8Constant((ProgramClass)clazz, 92 newSourceFileAttribute); 93 } 94 } 95 | Popular Tags |