1 21 package proguard.obfuscate; 22 23 import proguard.classfile.*; 24 import proguard.classfile.util.SimplifiedVisitor; 25 import proguard.classfile.visitor.MemberVisitor; 26 27 import java.util.Map ; 28 29 37 public class MemberNameCollector 38 extends SimplifiedVisitor 39 implements MemberVisitor 40 { 41 private boolean allowAggressiveOverloading; 42 private Map descriptorMap; 43 44 45 52 public MemberNameCollector(boolean allowAggressiveOverloading, 53 Map descriptorMap) 54 { 55 this.allowAggressiveOverloading = allowAggressiveOverloading; 56 this.descriptorMap = descriptorMap; 57 } 58 59 60 62 public void visitAnyMember(Clazz clazz, Member member) 63 { 64 String name = member.getName(clazz); 67 if (name.equals(ClassConstants.INTERNAL_METHOD_NAME_CLINIT) || 68 name.equals(ClassConstants.INTERNAL_METHOD_NAME_INIT)) 69 { 70 return; 71 } 72 73 String newName = MemberObfuscator.newMemberName(member); 75 76 if (newName != null) 78 { 79 String descriptor = member.getDescriptor(clazz); 81 82 if (!allowAggressiveOverloading) 84 { 85 descriptor = descriptor.substring(0, descriptor.indexOf(')')+1); 88 } 89 90 Map nameMap = MemberObfuscator.retrieveNameMap(descriptorMap, descriptor); 93 94 String otherName = (String )nameMap.get(newName); 97 if (otherName == null || 98 MemberObfuscator.hasFixedNewMemberName(member) || 99 name.compareTo(otherName) < 0) 100 { 101 nameMap.put(newName, name); 103 } 104 } 105 } 106 } 107 | Popular Tags |