/** * @param bytes * @return * @throws IOException * @throws Exception */ private byte[] process(final byte[] bytes) throws Exception { final ClassReader reader = new ClassReader(new ByteArrayInputStream(bytes)); final String name[] = ClassNameReader.getClassInfo(reader); final DebuggingClassWriter w = new DebuggingClassWriter(ClassWriter.COMPUTE_FRAMES); final ClassTransformer t = getClassTransformer(name); if (t != null) { if (verbose) { log("processing " + name[0]); } new TransformingClassGenerator( new ClassReaderGenerator( new ClassReader(new ByteArrayInputStream(bytes)), attributes(), getFlags()), t) .generateClass(w); final ByteArrayOutputStream out = new ByteArrayOutputStream(); out.write(w.toByteArray()); return out.toByteArray(); } return bytes; }
/** * @param file * @throws Exception * @throws FileNotFoundException * @throws IOException * @throws MalformedURLException */ private void processClassFile(final File file) throws Exception, FileNotFoundException, IOException, MalformedURLException { final ClassReader reader = getClassReader(file); final String name[] = ClassNameReader.getClassInfo(reader); final DebuggingClassWriter w = new DebuggingClassWriter(ClassWriter.COMPUTE_FRAMES); final ClassTransformer t = getClassTransformer(name); if (t != null) { if (verbose) { log("processing " + file.toURI()); } new TransformingClassGenerator( new ClassReaderGenerator(getClassReader(file), attributes(), getFlags()), t) .generateClass(w); final FileOutputStream fos = new FileOutputStream(file); try { fos.write(w.toByteArray()); } finally { fos.close(); } } }