1 30 31 package jbet.cmd; 32 import jbet.*; 33 import java.util.*; 34 35 36 public class dupclass implements Command { 37 38 public int helplevel() { return 3; } 39 public String shorthelp() { return "rename classes"; } 40 public String longhelp() { return "jbet dupclass <classes> : <classes> \n"; } 41 42 public void run (Lexer lexer) throws Exception { 43 ClassFinder f = Jbet.loader.getCopyFinder; 44 lexer.match(Token.END_OF_OPTS); 45 Vector from = new Vector(); 46 lexer.getClasses(from, Jbet.loader.getCopyFinder); 47 lexer.match(':'); 48 Vector to = new Vector (); 49 for (int i = 0; i < from.size(); i++) { 50 to.add( lexer.parse_name() ); 51 } 52 lexer.term(); 53 54 Hashtable subs = new Hashtable(); 55 for (int i = 0; i < to.size(); i++) { 56 ClassInfo cr = (ClassInfo) from.elementAt(i); 57 String newname = (String ) to.elementAt(i); 58 subs.put(cr.name(), newname); 59 HashSet inners = Util.findInnerClasses(cr.name(), 60 Jbet.loader.getCopyFinder); 61 for (Iterator j = inners.iterator(); j.hasNext();) { 62 String icname = (String ) j.next(); 63 ClassInfo iccr = Jbet.loader.getClass(icname); 64 from.add(iccr); 65 subs.put(icname, newname + "$" + 66 iccr.name().substring(cr.name().length()+1)); 67 } 68 } 69 70 Vector newcrs = new Vector (); 71 for (int i = 0; i < from.size(); i++) { 72 ClassInfo cr = (ClassInfo) from.elementAt(i); 73 cr.relocate(subs); 74 cr.dirty = true; 75 Jbet.loader.putClass(cr); 76 } 77 } 78 79 } 80 | Popular Tags |