Top Description Inners Fields Constructors Methods
org.apache.bcel.util

public Class BCELifier

extends EmptyVisitor
Class Inheritance
Imports
java.io.IOException, .OutputStream, .OutputStreamWriter, .PrintWriter, java.nio.charset.StandardCharsets, java.util.Locale, org.apache.bcel.Const, .Repository, org.apache.bcel.classfile.ClassParser, .Code, .ConstantValue, .ExceptionTable, .Field, .JavaClass, .Method, .StackMap, .StackMapEntry, .StackMapType, .Utility, org.apache.bcel.generic.ArrayType, .ConstantPoolGen, .MethodGen, .Type, org.apache.commons.lang3.ArrayUtils, .StringUtils

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.

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static enum
BCELifier.FLAGS

Enum corresponding to flag source.

Field Summary

Modifier and TypeField and Description
private static final String
private final JavaClass
private static final String
private final ConstantPoolGen
private final PrintWriter

Constructor Summary

AccessConstructor and Description
public
BCELifier(final JavaClass
Java class to "decompile".
clazz
,
final OutputStream
where to print the Java program in UTF-8.
out
)

Constructs a new instance.

Method Summary

Modifier and TypeMethod and Description
pack-priv static JavaClass
getJavaClass(final String name)

public static void
main(final String[] argv)

Default main method

pack-priv static String
printArgumentTypes(final Type[] argTypes)

private void
pack-priv static String
printFlags(final int flags)

public static String

Returns:

the formatted string
printFlags
(final int
the flags field to interpret
flags
,
final BCELifier.FLAGS
the item type
location
)

Return a string with the flag settings

private void
pack-priv static String
printType(final String signature)

pack-priv static String
printType(final Type type)

public void
start()

Start Java code generation

public void
public void
public void
public void
public void
public void
private void
Inherited from org.apache.bcel.classfile.EmptyVisitor:
visitAnnotationvisitAnnotationDefaultvisitAnnotationEntryvisitBootstrapMethodsvisitCodevisitCodeExceptionvisitConstantClassvisitConstantDoublevisitConstantDynamicvisitConstantFieldrefvisitConstantFloatvisitConstantIntegervisitConstantInterfaceMethodrefvisitConstantInvokeDynamicvisitConstantLongvisitConstantMethodHandlevisitConstantMethodrefvisitConstantMethodTypevisitConstantModulevisitConstantNameAndTypevisitConstantPackagevisitConstantPoolvisitConstantStringvisitConstantUtf8visitConstantValuevisitDeprecatedvisitEnclosingMethodvisitExceptionTablevisitInnerClassvisitInnerClassesvisitLineNumbervisitLineNumberTablevisitLocalVariablevisitLocalVariableTablevisitLocalVariableTypeTablevisitMethodParametervisitMethodParametersvisitModulevisitModuleExportsvisitModuleMainClassvisitModuleOpensvisitModulePackagesvisitModuleProvidesvisitModuleRequiresvisitNestHostvisitNestMembersvisitParameterAnnotationvisitParameterAnnotationEntryvisitSignaturevisitSourceFilevisitSyntheticvisitUnknown

Field Detail

BASE_PACKAGEback to summary
private static final String BASE_PACKAGE
clazzback to summary
private final JavaClass clazz
CONSTANT_PREFIXback to summary
private static final String CONSTANT_PREFIX
constantPoolGenback to summary
private final ConstantPoolGen constantPoolGen
printWriterback to summary
private final PrintWriter printWriter

Constructor Detail

BCELifierback to summary
public BCELifier(final JavaClass clazz, final OutputStream out)

Constructs a new instance.

Parameters
clazz:JavaClass

Java class to "decompile".

out:OutputStream

where to print the Java program in UTF-8.

Method Detail

getJavaClassback to summary
pack-priv static JavaClass getJavaClass(final String name) throws ClassNotFoundException, IOException
mainback to summary
public static void main(final String[] argv) throws Exception

Default main method

printArgumentTypesback to summary
pack-priv static String printArgumentTypes(final Type[] argTypes)
printCreateback to summary
private void printCreate()
printFlagsback to summary
pack-priv static String printFlags(final int flags)
printFlagsback to summary
public static String printFlags(final int flags, final BCELifier.FLAGS location)

Return a string with the flag settings

Parameters
flags:int

the flags field to interpret

location:BCELifier.FLAGS

the item type

Returns:String

the formatted string

Since
6.0 made public
printMainback to summary
private void printMain()
printTypeback to summary
pack-priv static String printType(final String signature)
printTypeback to summary
pack-priv static String printType(final Type type)
startback to summary
public void start()

Start Java code generation

visitFieldback to summary
public void visitField(final Field field)

Overrides org.apache.bcel.classfile.EmptyVisitor.visitField.

Implements org.apache.bcel.classfile.Visitor.visitField.

Annotations
@Override
visitJavaClassback to summary
public void visitJavaClass(final JavaClass clazz)

Overrides org.apache.bcel.classfile.EmptyVisitor.visitJavaClass.

Implements org.apache.bcel.classfile.Visitor.visitJavaClass.

Annotations
@Override
visitMethodback to summary
public void visitMethod(final Method method)

Overrides org.apache.bcel.classfile.EmptyVisitor.visitMethod.

Implements org.apache.bcel.classfile.Visitor.visitMethod.

Annotations
@Override
visitStackMapback to summary
public void visitStackMap(final StackMap stackMap)

Overrides org.apache.bcel.classfile.EmptyVisitor.visitStackMap.

Implements org.apache.bcel.classfile.Visitor.visitStackMap.

Annotations
@Override
visitStackMapEntryback to summary
public void visitStackMapEntry(final StackMapEntry stackMapEntry)

Overrides org.apache.bcel.classfile.EmptyVisitor.visitStackMapEntry.

Implements org.apache.bcel.classfile.Visitor.visitStackMapEntry.

Annotations
@Override
visitStackMapTypeback to summary
public void visitStackMapType(final StackMapType stackMapType)

Overrides org.apache.bcel.classfile.EmptyVisitor.visitStackMapType.

Overrides default org.apache.bcel.classfile.Visitor.visitStackMapType.

Visits a StackMapType object.

Parameters
stackMapType:StackMapType

object to visit

Annotations
@Override
Since
6.7.1
visitStackMapTypeArrayback to summary
private void visitStackMapTypeArray(final StackMapType[] types)
org.apache.bcel.util back to summary

public final Enum BCELifier.FLAGS

extends Enum<BCELifier.FLAGS>
Class Inheritance

Enum corresponding to flag source.

Field Summary

Modifier and TypeField and Description
public static final BCELifier.FLAGS
public static final BCELifier.FLAGS
public static final BCELifier.FLAGS

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static BCELifier.FLAGS
public static BCELifier.FLAGS[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

CLASSback to summary
public static final BCELifier.FLAGS CLASS
METHODback to summary
public static final BCELifier.FLAGS METHOD
UNKNOWNback to summary
public static final BCELifier.FLAGS UNKNOWN

Constructor Detail

FLAGSback to summary
private FLAGS()

Method Detail

valueOfback to summary
public static BCELifier.FLAGS valueOf(String name)
valuesback to summary
public static BCELifier.FLAGS[] values()