1 34 package jarg; 35 36 import java.util.Map ; 37 import java.util.TreeMap ; 38 import java.util.Iterator ; 39 40 import org.apache.bcel.classfile.*; 41 42 48 class PackageCollection { 49 private Jarg app; 50 Map packages = new TreeMap (); 51 52 PackageCollection(Jarg app) { 53 this.app = app; 54 } 55 56 void addPackageHandler(PackageHandler pkgh) { 57 String key = pkgh.packagename; 58 this.packages.put(key, pkgh); 59 } 60 61 void markUsedClass(String classname) { 62 if (classname.charAt(0) == '[') { 67 } else { 69 markUsedClass0(classname); 70 } 71 } 72 73 private void markUsedClass0(String classname) { 74 String pkey = ""; 75 String ckey = classname.replace('/','.'); 76 int idx = classname.lastIndexOf('/'); 77 if (idx >= 0) { 78 pkey = classname.substring(0, idx+1); 79 } 80 PackageHandler pkgh = (PackageHandler)this.packages.get(pkey); 81 if (pkgh != null) { 82 ClassHandler clsh = (ClassHandler)pkgh.classes.get(ckey); 83 if (clsh != null) { 84 clsh.isUsed = true; 85 } 86 } 87 } 88 89 void doCheckUsedClass() { 90 Iterator pit = this.packages.keySet().iterator(); 91 while (pit.hasNext()) { 92 String pkey = (String )pit.next(); 93 PackageHandler pkgh = (PackageHandler)this.packages.get(pkey); 94 95 pkgh.doCheckUsedClass(this); 97 } 98 } 99 100 void doOptimize() { 101 Iterator pit = this.packages.keySet().iterator(); 102 while (pit.hasNext()) { 103 String pkey = (String )pit.next(); 104 PackageHandler pkgh = (PackageHandler)this.packages.get(pkey); 105 106 pkgh.doOptimize(); 108 } 109 } 110 } 111 | Popular Tags |