1 20 21 package com.tonicsystems.jarjar; 22 23 import com.tonicsystems.jarjar.util.*; 24 import java.io.*; 25 import org.objectweb.asm.*; 26 27 class StringDumper 28 { 29 public StringDumper() { 30 } 31 32 public void run(String classPath, final PrintWriter pw) throws IOException { 33 try { 34 StringVisitor sv = new StringVisitor() { 35 private String className; 36 private boolean needName; 37 public void visitStart(String className) { 38 this.className = className; 39 needName = true; 40 } 41 public void visitString(String value, int line) { 42 if (value.length() > 0) { 43 if (needName) { 44 pw.println(className.replace('/', '.')); 45 needName = false; 46 } 47 pw.print("\t"); 48 if (line >= 0) 49 pw.print(line + ": "); 50 pw.print(IoUtils.escapeStringLiteral(value)); 51 pw.println(); 52 } 53 } 54 public void visitEnd() { 55 pw.flush(); 56 } 57 }; 58 StringReader stringReader = new StringReader(sv); 59 ClassPathIterator cp = new ClassPathIterator(classPath); 60 while (cp.hasNext()) { 61 new ClassReader(cp.getInputStream(cp.next())).accept(stringReader, false); 62 } 63 } catch (RuntimeIOException e) { 64 throw (IOException)e.getCause(); 65 } 66 } 67 } 68 | Popular Tags |