org.jboss.ant.tasks.retro
Class Weaver

java.lang.Object
  extended by org.jboss.ant.tasks.retro.Weaver

public class Weaver
extends java.lang.Object

takes jar or class files and retro weaves the bytecode


Field Summary
static java.net.URLClassLoader loader
           
 boolean suppress
           
 boolean verbose
           
 
Constructor Summary
Weaver()
           
 
Method Summary
 void compileFile(org.jboss.ant.tasks.retro.Weaver.CompilerClassInfo info, java.util.Map<java.lang.String,java.lang.String> classRenames, CodeConverter[] converters, ExprEditor[] editors)
           
 boolean doWeave(java.lang.ClassLoader cl, org.jboss.ant.tasks.retro.Weaver.CompilerClassInfo info, java.util.Map classRenames, CodeConverter[] converters, ExprEditor[] editors)
           
 boolean isJarFile(java.io.File src)
           
static void main(java.lang.String[] args)
           
static CtClass rewriteEnum(java.lang.ClassLoader cl, org.jboss.ant.tasks.retro.Weaver.CompilerClassInfo info)
          Transform a jdk5 java.lang.Enum subtype into a jdk14 compatible org.jboss.lang.Enum subtype.
static void rewriteLDC(ConstPool constPool, MethodInfo method)
          This rewrites the load constant ClassInfo to be Class.forName()
 void usage()
           
 void weave(java.lang.String[] args)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

verbose

public boolean verbose

suppress

public boolean suppress

loader

public static java.net.URLClassLoader loader
Constructor Detail

Weaver

public Weaver()
Method Detail

isJarFile

public boolean isJarFile(java.io.File src)

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception
Throws:
java.lang.Exception

usage

public void usage()

weave

public void weave(java.lang.String[] args)
           throws java.lang.Exception
Throws:
java.lang.Exception

compileFile

public void compileFile(org.jboss.ant.tasks.retro.Weaver.CompilerClassInfo info,
                        java.util.Map<java.lang.String,java.lang.String> classRenames,
                        CodeConverter[] converters,
                        ExprEditor[] editors)
                 throws java.lang.Exception
Throws:
java.lang.Exception

doWeave

public boolean doWeave(java.lang.ClassLoader cl,
                       org.jboss.ant.tasks.retro.Weaver.CompilerClassInfo info,
                       java.util.Map classRenames,
                       CodeConverter[] converters,
                       ExprEditor[] editors)
                throws java.lang.Exception
Throws:
java.lang.Exception

rewriteLDC

public static void rewriteLDC(ConstPool constPool,
                              MethodInfo method)
                       throws java.lang.Exception
This rewrites the load constant ClassInfo to be Class.forName()

Parameters:
constPool - the constant pool
method - the method
Throws:
java.lang.Exception - for any error

rewriteEnum

public static CtClass rewriteEnum(java.lang.ClassLoader cl,
                                  org.jboss.ant.tasks.retro.Weaver.CompilerClassInfo info)
                           throws java.lang.Exception
Transform a jdk5 java.lang.Enum subtype into a jdk14 compatible org.jboss.lang.Enum subtype. This requires jdk5 APIs that cannot be weaved.

Parameters:
cl - the classloader
info - the compiler info
Throws:
java.lang.Exception - for any error