1 20 21 package com.tonicsystems.jarjar.util; 22 23 import java.io.*; 24 import org.objectweb.asm.Attribute; 25 import org.objectweb.asm.ClassReader; 26 import org.objectweb.asm.ClassWriter; 27 import org.objectweb.asm.ClassVisitor; 28 29 abstract public class JarTransformer implements JarProcessor 30 { 31 public boolean process(EntryStruct struct) throws IOException { 32 if (struct.name.endsWith(".class")) { 33 ClassReader reader = new ClassReader(struct.in); 35 struct.in.close(); 36 GetNameClassWriter w = new GetNameClassWriter(true); 37 reader.accept(transform(w), false); 38 struct.in = new ByteArrayInputStream(w.toByteArray()); 39 struct.name = pathFromName(w.getClassName()); 40 } 41 return true; 42 } 43 44 abstract protected ClassVisitor transform(ClassVisitor v); 45 46 private static String pathFromName(String className) { 47 return className.replace('.', '/') + ".class"; 48 } 49 } 50 | Popular Tags |