diff --git a/jode/jode/obfuscator/ClassBundle.java b/jode/jode/obfuscator/ClassBundle.java index 107469f..20c087a 100644 --- a/jode/jode/obfuscator/ClassBundle.java +++ b/jode/jode/obfuscator/ClassBundle.java @@ -22,21 +22,34 @@ import jode.GlobalOptions; import jode.bytecode.ClassInfo; import jode.bytecode.Reference; import java.io.*; -import java.util.*; import java.util.zip.ZipOutputStream; +///#ifdef JDK12 +///import java.util.Collection; +///import java.util.Iterator; +///import java.util.Set; +///import java.util.HashSet; +///import java.util.Map; +///import java.util.TreeMap; +///import java.util.WeakHashMap; +///#else +import jode.util.Collection; +import jode.util.Iterator; +import jode.util.Set; +import jode.util.HashSet; +import jode.util.Map; +import jode.util.TreeMap; +import jode.util.HashMap; +///#endif + public class ClassBundle { - int preserveRule; + ModifierMatcher preserveRule = null; PackageIdentifier basePackage; /** * the identifiers that must be analyzed. */ -///#ifdef JDK12 -/// Set toAnalyze = new HashSet(); -///#else - Stack toAnalyze = new Stack(); -///#endif + Set toAnalyze = new HashSet(); public ClassBundle() { basePackage = new PackageIdentifier(this, null, "", false); @@ -47,8 +60,9 @@ public class ClassBundle { ///#ifdef JDK12 /// private static final Map aliasesHash = new WeakHashMap(); ///#else - private static final Hashtable aliasesHash = new Hashtable(); + private static final Map aliasesHash = new HashMap(); ///#endif + public Reference getReferenceAlias(Reference ref) { Reference alias = (Reference) aliasesHash.get(ref); if (alias == null) { @@ -86,7 +100,9 @@ public class ClassBundle { } public ClassIdentifier getClassIdentifier(String name) { - return (ClassIdentifier) basePackage.getIdentifier(name); + ClassIdentifier ident + = (ClassIdentifier) basePackage.getIdentifier(name); + return ident; } public Identifier getIdentifier(Reference ref) { @@ -103,6 +119,7 @@ public class ClassBundle { } public void loadClasses(String wildcard) { + System.err.println("Loading: "+wildcard); basePackage.loadMatchingClasses(new WildCard(wildcard)); } @@ -110,70 +127,53 @@ public class ClassBundle { basePackage.reachableIdentifier(fqn, isVirtual); } - public void setPreserved(int preserveRule, Vector fullqualifiednames) { + public void setPreserved(ModifierMatcher preserveRule, + Collection fullqualifiednames) { this.preserveRule = preserveRule; basePackage.applyPreserveRule(preserveRule); - Enumeration enum = fullqualifiednames.elements(); - while (enum.hasMoreElements()) { + for (Iterator i = fullqualifiednames.iterator(); i.hasNext(); ) { basePackage.preserveMatchingIdentifier - (new WildCard((String) enum.nextElement())); + (new WildCard((String) i.next())); } analyze(); } -///#ifdef JDK12 -/// public void analyzeIdentifier(Identifier i) { -/// if (!toAnalyze.contains(i)) -/// toAnalyze.add(i); -/// } -/// -/// public void analyze() { -/// while(!toAnalyze.isEmpty()) { -/// Identifier ident = (Identifier) toAnalyze.iterator().next(); -/// toAnalyze.remove(ident); -/// ident.analyze(); -/// } -/// } -///#else public void analyzeIdentifier(Identifier i) { - if (!toAnalyze.contains(i)) - toAnalyze.addElement(i); + toAnalyze.add(i); } public void analyze() { - while (!toAnalyze.isEmpty()) - ((Identifier) toAnalyze.pop()).analyze(); + while(!toAnalyze.isEmpty()) { + Identifier ident = (Identifier) toAnalyze.iterator().next(); + toAnalyze.remove(ident); + ident.analyze(); + } } -///#endif - public void buildTable(int renameRule) { + public void buildTable(Renamer renameRule) { basePackage.buildTable(renameRule); } public void readTable(String filename) { - Properties prop = new Properties(); try { + TranslationTable table = new TranslationTable(); InputStream input = new FileInputStream(filename); - prop.load(input); + table.load(input); input.close(); + basePackage.readTable(table); } catch (java.io.IOException ex) { GlobalOptions.err.println("Can't read rename table "+filename); ex.printStackTrace(GlobalOptions.err); } - basePackage.readTable(prop); } public void writeTable(String filename) { - Properties prop = new Properties(); - basePackage.writeTable(prop); + TranslationTable table = new TranslationTable(); + basePackage.writeTable(table); try { OutputStream out = new FileOutputStream(filename); -///#ifdef JDK12 -/// prop.store(out, "Reverse renaming table"); -///#else - prop.save(out, "Reverse renaming table"); -///#endif + table.store(out); out.close(); } catch (java.io.IOException ex) { GlobalOptions.err.println("Can't write rename table "+filename);