I am trying to copy methods from one class to another. This is the code I have been 
woking on. I am getting errors with the resulting constant pool. Is this the correct 
way to copy a method, or am i misunderstanding the API.

thanks,

james

public static void main(String[] args) {
   JavaClass j1 = new ClassParser("A.class").parse();
   JavaClass j2 = new ClassParser("B.class").parse();
   copyCode(j1,j2);
}

public static void copyCode(JavaClass src, JavaClass dest) {

    ClassGen        cg1 = new ClassGen(dest);
    ClassGen        cg2 = new ClassGen(dest);
    ConstantPoolGen cp1 = cg1.getConstantPool();
    ConstantPoolGen cp2 = cg2.getConstantPool();

    Method[] methods = src.getMethods();
    for (int i=0; i< methods.length; i++) {
        MethodGen m =  new MethodGen(methods[i],
                                     src.getClassName(),
                                     cp1);

        MethodGen m2 = m.copy(cg2.getClassName(), cp2);

        printCode(new Method[] {m2.getMethod()}, true);
        cg2.addMethod(m2.getMethod());
    }

    JavaClass c3 = cg2.getJavaClass();
    c3.setConstantPool(cp2.getFinalConstantPool());

    try {
        c3.dump("test.class");
    } catch (IOException e) {
        System.out.println(e.getStackTrace());
    }
}

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to