Example usage for org.objectweb.asm.signature SignatureWriter visitInterface

List of usage examples for org.objectweb.asm.signature SignatureWriter visitInterface

Introduction

In this page you can find the example usage for org.objectweb.asm.signature SignatureWriter visitInterface.

Prototype

@Override
    public SignatureVisitor visitInterface() 

Source Link

Usage

From source file:com.google.code.jconts.instrument.gen.ComputationClassGenerator.java

License:Apache License

public void accept(TransformationContext context) {
    ClassVisitor cv = context.writer();// ww  w.j  a  v a2  s.  c  o  m

    // extends Object implements Computation<ValueType>
    SignatureWriter sign = new SignatureWriter();
    SignatureVisitor supsign = sign.visitSuperclass();
    supsign.visitClassType(OBJECT_NAME);
    supsign.visitEnd();
    SignatureVisitor iface = sign.visitInterface();
    iface.visitClassType(COMPUTATION_NAME);
    SignatureVisitor argsign = iface.visitTypeArgument('=');
    new SignatureReader(info.valueSignature).acceptType(argsign);
    argsign.visitEnd();

    cv.visit(Opcodes.V1_6, Opcodes.ACC_FINAL, info.computationClassName, sign.toString(), OBJECT_NAME,
            new String[] { COMPUTATION_NAME });

    cv.visitSource(info.ownerSource, null);
    cv.visitInnerClass(info.stateClassName, info.owner, info.stateSimpleName, 0);
    cv.visitInnerClass(info.computationClassName, info.owner, info.computationSimpleName, 0);

    cv.visitField(Opcodes.ACC_PRIVATE | Opcodes.ACC_FINAL, "state", stateDesc, null, null);

    generateConstructor(cv);
    generateExecute(cv);

    cv.visitEnd();
}

From source file:com.google.code.jconts.instrument.gen.ContinuationClassGenerator.java

License:Apache License

public ContinuationClassGenerator(MethodContext info) {
    this.info = info;
    this.stateDesc = info.stateType.getDescriptor();

    SignatureWriter sign = new SignatureWriter();

    // Name<T> implements Continuation<T>
    sign.visitFormalTypeParameter("T");
    SignatureVisitor v = sign.visitClassBound();
    v.visitClassType(OBJECT_NAME);//w ww.j ava2 s.com
    v.visitEnd();
    v = sign.visitSuperclass();
    v.visitClassType(OBJECT_NAME);
    v.visitEnd();
    v = sign.visitInterface();
    v.visitClassType(CONTINUATION_NAME);
    v.visitTypeArgument('=').visitTypeVariable("T");
    v.visitEnd();
    this.signature = sign.toString();
}

From source file:org.apache.commons.weaver.privilizer.ActionGenerator.java

License:Apache License

private void begin() {
    owner.visitInnerClass(action.getInternalName(), owner.className, simpleName,
            Opcodes.ACC_PRIVATE | Opcodes.ACC_STATIC);

    final SignatureWriter type = new SignatureWriter();
    final SignatureVisitor actionImplemented = type.visitInterface();
    actionImplemented.visitClassType(actionInterface.getInternalName());
    final SignatureVisitor visitTypeArgument = actionImplemented.visitTypeArgument('=');
    new SignatureReader(Privilizer.wrap(methd.getReturnType()).getDescriptor()).accept(visitTypeArgument);
    actionImplemented.visitEnd();//ww w.  java 2 s  . c o m

    final String signature = type.toString();

    visit(Opcodes.V1_5, Opcodes.ACC_SUPER | Opcodes.ACC_SYNTHETIC | Opcodes.ACC_FINAL, action.getInternalName(),
            signature, Type.getType(Object.class).getInternalName(),
            new String[] { actionInterface.getInternalName() });
}