public static void premain()

in agent/src/main/java/org/mvndaemon/mvnd/agent/Agent.java [40:71]


    public static void premain(String args, Instrumentation instrumentation) throws Exception {
        instrumentation.addTransformer(new ClassFileTransformer() {
            @Override
            public byte[] transform(
                    ClassLoader loader,
                    String className,
                    Class<?> classBeingRedefined,
                    ProtectionDomain protectionDomain,
                    byte[] classfileBuffer)
                    throws IllegalClassFormatException {
                if ("java/lang/ProcessBuilder".equals(className)) {
                    try {
                        ClassPool pool = ClassPool.getDefault();
                        CtClass clazz = pool.get("java.lang.ProcessBuilder");
                        pool.importPackage("org.mvndaemon.mvnd.pump");
                        clazz.getDeclaredMethod(
                                        "start",
                                        new CtClass[] {clazz.getClassPool().get("java.lang.ProcessBuilder$Redirect[]")})
                                .insertBefore(START_WITH_PIPES);
                        byte[] data = clazz.toBytecode();
                        clazz.detach();
                        return data;
                    } catch (Throwable e) {
                        System.err.println(e);
                        throw new IllegalClassFormatException(e.toString());
                    }
                } else {
                    return classfileBuffer;
                }
            }
        });
    }