in src/main/java/org/apache/bcel/util/BCELifier.java [248:298]
public void visitJavaClass(final JavaClass clazz) {
String className = clazz.getClassName();
final String superName = clazz.getSuperclassName();
final String packageName = clazz.getPackageName();
final String inter = Utility.printArray(clazz.getInterfaceNames(), false, true);
if (StringUtils.isNotEmpty(packageName)) {
className = className.substring(packageName.length() + 1);
printWriter.println("package " + packageName + ";");
printWriter.println();
}
printWriter.println("import " + BASE_PACKAGE + ".generic.*;");
printWriter.println("import " + BASE_PACKAGE + ".classfile.*;");
printWriter.println("import " + BASE_PACKAGE + ".*;");
printWriter.println("import java.io.*;");
printWriter.println();
printWriter.println("public class " + className + "Creator {");
printWriter.println(" private InstructionFactory _factory;");
printWriter.println(" private ConstantPoolGen _cp;");
printWriter.println(" private ClassGen _cg;");
printWriter.println();
printWriter.println(" public " + className + "Creator() {");
printWriter.println(" _cg = new ClassGen(\"" + (packageName.isEmpty() ? className : packageName + "." + className) + "\", \"" + superName
+ "\", " + "\"" + clazz.getSourceFileName() + "\", " + printFlags(clazz.getAccessFlags(), FLAGS.CLASS) + ", " + "new String[] { " + inter + " });");
printWriter.println(" _cg.setMajor(" + clazz.getMajor() + ");");
printWriter.println(" _cg.setMinor(" + clazz.getMinor() + ");");
printWriter.println();
printWriter.println(" _cp = _cg.getConstantPool();");
printWriter.println(" _factory = new InstructionFactory(_cg, _cp);");
printWriter.println(" }");
printWriter.println();
printCreate();
final Field[] fields = clazz.getFields();
if (fields.length > 0) {
printWriter.println(" private void createFields() {");
printWriter.println(" FieldGen field;");
for (final Field field : fields) {
field.accept(this);
}
printWriter.println(" }");
printWriter.println();
}
final Method[] methods = clazz.getMethods();
for (int i = 0; i < methods.length; i++) {
printWriter.println(" private void createMethod_" + i + "() {");
methods[i].accept(this);
printWriter.println(" }");
printWriter.println();
}
printMain();
printWriter.println("}");
}