private static byte[] toBytecode(ClassFile cf) throws IOException { ByteArrayOutputStream barray = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(barray); try { cf.write(out); } finally { out.close(); } return barray.toByteArray(); }
private void dumpClassFile(ClassFile cf) throws IOException { DataOutputStream dump = makeFileOutput(debugDump); try { cf.write(dump); } finally { dump.close(); } }
private static byte[] toBytecode(ClassFile cf) throws IOException { ByteArrayOutputStream barray = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(barray); try { cf.write(out); } finally { out.close(); } return barray.toByteArray(); }
/** * Converts a ClassFile object into a byte array * for saving memory space. */ private synchronized void saveClassFile() { /* getMembers() and removeClassFile() are also synchronized. */ if (classfile == null || hasMemberCache() != null) return; ByteArrayOutputStream barray = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(barray); try { classfile.write(out); barray.close(); rawClassfile = barray.toByteArray(); classfile = null; } catch (IOException e) {} }
private void dumpClassFile(ClassFile cf) throws IOException { DataOutputStream dump = makeFileOutput(debugDump); try { cf.write(dump); } finally { dump.close(); } }
private static void writeFile0(ClassFile cf, String directoryName) throws CannotCompileException, IOException { String classname = cf.getName(); String filename = directoryName + File.separatorChar + classname.replace('.', File.separatorChar) + ".class"; int pos = filename.lastIndexOf(File.separatorChar); if (pos > 0) { String dir = filename.substring(0, pos); if (!dir.equals(".")) new File(dir).mkdirs(); } DataOutputStream out = new DataOutputStream(new BufferedOutputStream( new FileOutputStream(filename))); try { cf.write(out); } catch (IOException e) { throw e; } finally { out.close(); } } }
/** * Converts a ClassFile object into a byte array * for saving memory space. */ private synchronized void saveClassFile() { /* getMembers() and removeClassFile() are also synchronized. */ if (classfile == null || hasMemberCache() != null) return; ByteArrayOutputStream barray = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(barray); try { classfile.write(out); barray.close(); rawClassfile = barray.toByteArray(); classfile = null; } catch (IOException e) {} }
private static void writeFile0(ClassFile cf, String directoryName) throws CannotCompileException, IOException { String classname = cf.getName(); String filename = directoryName + File.separatorChar + classname.replace('.', File.separatorChar) + ".class"; int pos = filename.lastIndexOf(File.separatorChar); if (pos > 0) { String dir = filename.substring(0, pos); if (!dir.equals(".")) new File(dir).mkdirs(); } DataOutputStream out = new DataOutputStream(new BufferedOutputStream( new FileOutputStream(filename))); try { cf.write(out); } catch (IOException e) { throw e; } finally { out.close(); } } }
@Override public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException { // Lambdas and anonymous methods in Java 8 do not have a class name defined and so no transformation should be done if (className == null || StringUtils.isBlank(getTargetedClass()) || StringUtils.isBlank(getTableName())) { return null; } byte[] classBytes = null; String convertedClassName = className.replace('/', '.'); if (convertedClassName.equalsIgnoreCase(getTargetedClass())) { try { String targetValue = getTableName(); if (LOG.isDebugEnabled()) { LOG.debug("Altering " + convertedClassName + " table name"); } ClassFile classFile = new ClassFile(new DataInputStream(new ByteArrayInputStream(classfileBuffer))); ConstPool constantPool = classFile.getConstPool(); alterTableAnnotation(classFile, targetValue, constantPool); ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream os = new DataOutputStream(bos); classFile.write(os); os.close(); classBytes = bos.toByteArray(); } catch (Exception ex) { ex.printStackTrace(); throw new IllegalClassFormatException("Unable to convert " + convertedClassName + " to a SingleTable inheritance strategy: " + ex.getMessage()); } } return classBytes; }
classFile.write(os); os.close();
ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream os = new DataOutputStream(bos); classFile.write(os); os.close();
ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream os = new DataOutputStream(bos); classFile.write(os); os.close();
dumpClassFile(cf); cf.write(out); out.flush(); fieldInitializers = null;
dumpClassFile(cf); cf.write(out); out.flush(); fieldInitializers = null;
private static byte[] toBytecode(ClassFile cf) throws IOException { ByteArrayOutputStream barray = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(barray); try { cf.write(out); } finally { out.close(); } return barray.toByteArray(); }
private static byte[] toBytecode(ClassFile cf) throws IOException { ByteArrayOutputStream barray = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(barray); try { cf.write(out); } finally { out.close(); } return barray.toByteArray(); }
private static byte[] toBytecode(ClassFile cf) throws IOException { ByteArrayOutputStream barray = new ByteArrayOutputStream(); DataOutputStream out = new DataOutputStream(barray); try { cf.write(out); } finally { out.close(); } return barray.toByteArray(); }
private void dumpClassFile(ClassFile cf) throws IOException { DataOutputStream dump = makeFileOutput(debugDump); try { cf.write(dump); } finally { dump.close(); } }
private void dumpClassFile(ClassFile cf) throws IOException { DataOutputStream dump = makeFileOutput(debugDump); try { cf.write(dump); } finally { dump.close(); } }
public void transform(File file) throws Exception { DataInputStream in = new DataInputStream(new FileInputStream(file)); ClassFile classfile = new ClassFile(in); transform(classfile); DataOutputStream out = new DataOutputStream(new FileOutputStream(file)); try { classfile.write(out); } finally { out.close(); } }