Search in sources :

Example 1 with ConstructorBlock

use of org.candle.decompiler.ast.ConstructorBlock in project candle-decompiler by bradsdavis.

the class ClassIntermediateVisitor method extractMethodSignature.

protected MethodBlock extractMethodSignature(MethodGen methodGen) {
    MethodBlock mb = null;
    boolean isConstructor = false;
    ConstantPoolGen cpg = methodGen.getConstantPool();
    LocalVariableTable lvt = methodGen.getLocalVariableTable(cpg);
    String access = Utility.accessToString(methodGen.getAccessFlags());
    String signature = Type.getMethodSignature(methodGen.getType(), methodGen.getArgumentTypes());
    String name = methodGen.getName();
    if (StringUtils.equals(name, Constants.CONSTRUCTOR_NAME)) {
        name = StringUtils.substringAfterLast(methodGen.getClassName(), ".");
        isConstructor = true;
    }
    if (StringUtils.equals(methodGen.getName(), Constants.STATIC_INITIALIZER_NAME)) {
        signature = "static ";
    } else {
        signature = org.apache.bcel.classfile.Utility.methodSignatureToString(signature, name, access, true, lvt);
    }
    StringBuilder builder = new StringBuilder(signature);
    if (methodGen.getExceptions().length > 0) {
        for (String excep : methodGen.getExceptions()) {
            builder.append(" throws ").append(excep);
        }
    }
    if (isConstructor) {
        mb = new ConstructorBlock(builder.toString(), methodGen.getInstructionList().getEnd().getPosition());
    } else {
        mb = new MethodBlock(builder.toString(), methodGen.getInstructionList().getEnd().getPosition());
    }
    return mb;
}
Also used : LocalVariableTable(org.apache.bcel.classfile.LocalVariableTable) MethodBlock(org.candle.decompiler.ast.MethodBlock) ConstantPoolGen(org.apache.bcel.generic.ConstantPoolGen) ConstructorBlock(org.candle.decompiler.ast.ConstructorBlock)

Aggregations

LocalVariableTable (org.apache.bcel.classfile.LocalVariableTable)1 ConstantPoolGen (org.apache.bcel.generic.ConstantPoolGen)1 ConstructorBlock (org.candle.decompiler.ast.ConstructorBlock)1 MethodBlock (org.candle.decompiler.ast.MethodBlock)1