org.apache.bcel.util

Class BCELifier

Implemented Interfaces:
Visitor

public class BCELifier
extends EmptyVisitor

This class takes a given JavaClass object and converts it to a Java program that creates that very class using BCEL. This gives new users of BCEL a useful example showing how things are done with BCEL. It does not cover all features of BCEL, but tries to mimic hand-written code as close as possible.
Version:
$Id: BCELifier.java 394939 2006-04-18 13:23:49Z tcurdt $
Author:
M. Dahm

Field Summary

private static int
FLAG_FOR_CLASS
private static int
FLAG_FOR_METHOD
private static int
FLAG_FOR_UNKNOWN
private JavaClass
_clazz
private ConstantPoolGen
_cp
private PrintWriter
_out

Constructor Summary

BCELifier(JavaClass clazz, OutputStream out)

Method Summary

static void
main(String[] argv)
Default main method
(package private) static String
printArgumentTypes(Type[] arg_types)
private void
printCreate()
(package private) static String
printFlags(int flags)
(package private) static String
printFlags(int flags, int reason)
private void
printMain()
(package private) static String
printType(String signature)
(package private) static String
printType(Type type)
void
start()
Start Java code generation
void
visitField(Field field)
void
visitJavaClass(JavaClass clazz)
void
visitMethod(Method method)

Methods inherited from class org.apache.bcel.classfile.EmptyVisitor

visitCode, visitCodeException, visitConstantClass, visitConstantDouble, visitConstantFieldref, visitConstantFloat, visitConstantInteger, visitConstantInterfaceMethodref, visitConstantLong, visitConstantMethodref, visitConstantNameAndType, visitConstantPool, visitConstantString, visitConstantUtf8, visitConstantValue, visitDeprecated, visitExceptionTable, visitField, visitInnerClass, visitInnerClasses, visitJavaClass, visitLineNumber, visitLineNumberTable, visitLocalVariable, visitLocalVariableTable, visitMethod, visitSignature, visitSourceFile, visitStackMap, visitStackMapEntry, visitSynthetic, visitUnknown

Field Details

FLAG_FOR_CLASS

private static final int FLAG_FOR_CLASS
Field Value:
0

FLAG_FOR_METHOD

private static final int FLAG_FOR_METHOD
Field Value:
1

FLAG_FOR_UNKNOWN

private static final int FLAG_FOR_UNKNOWN
Field Value:
-1

_clazz

private JavaClass _clazz

_cp

private ConstantPoolGen _cp

_out

private PrintWriter _out

Constructor Details

BCELifier

public BCELifier(JavaClass clazz,
                 OutputStream out)
Parameters:
clazz - Java class to "decompile"
out - where to output Java program

Method Details

main

public static void main(String[] argv)
            throws Exception
Default main method

printArgumentTypes

(package private) static String printArgumentTypes(Type[] arg_types)

printCreate

private void printCreate()

printFlags

(package private) static String printFlags(int flags)

printFlags

(package private) static String printFlags(int flags,
                                           int reason)

printMain

private void printMain()

printType

(package private) static String printType(String signature)

printType

(package private) static String printType(Type type)

start

public void start()
Start Java code generation

visitField

public void visitField(Field field)
Specified by:
visitField in interface Visitor
Overrides:
visitField in interface EmptyVisitor

visitJavaClass

public void visitJavaClass(JavaClass clazz)
Specified by:
visitJavaClass in interface Visitor
Overrides:
visitJavaClass in interface EmptyVisitor

visitMethod

public void visitMethod(Method method)
Specified by:
visitMethod in interface Visitor
Overrides:
visitMethod in interface EmptyVisitor