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

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

Introduction

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

Prototype

@Override
    public SignatureVisitor visitSuperclass() 

Source Link

Usage

From source file:co.cask.cdap.internal.app.runtime.service.http.HttpHandlerGenerator.java

License:Apache License

/**
 * Generates the class signature of the generate class. The generated class is not parameterized, however
 * it extends from {@link AbstractHttpHandlerDelegator} with parameterized type of the user http handler.
 *
 * @param delegateType Type of the user http handler
 * @return The signature string/*from   w  w w  .j  av  a2s  .c o m*/
 */
private String getClassSignature(TypeToken<?> delegateType) {
    SignatureWriter writer = new SignatureWriter();

    // Construct the superclass signature as "AbstractHttpHandlerDelegator<UserHandlerClass>"
    SignatureVisitor sv = writer.visitSuperclass();
    sv.visitClassType(Type.getInternalName(AbstractHttpHandlerDelegator.class));
    SignatureVisitor tv = sv.visitTypeArgument('=');
    tv.visitClassType(Type.getInternalName(delegateType.getRawType()));
    tv.visitEnd();
    sv.visitEnd();

    return writer.toString();
}

From source file:co.cask.cdap.internal.asm.Signatures.java

License:Apache License

public static String getClassSignature(TypeToken<?> interfaceType) {
    SignatureWriter signWriter = new SignatureWriter();
    SignatureVisitor sv = signWriter.visitSuperclass();
    sv.visitClassType(Type.getInternalName(Object.class));
    sv.visitEnd();/*from   ww  w .  j  a v a 2s . c  om*/

    SignatureVisitor interfaceVisitor = sv.visitInterface();
    interfaceVisitor.visitClassType(Type.getInternalName(interfaceType.getRawType()));

    if (interfaceType.getType() instanceof ParameterizedType) {
        for (java.lang.reflect.Type paramType : ((ParameterizedType) interfaceType.getType())
                .getActualTypeArguments()) {
            interfaceVisitor.visitTypeArgument(SignatureVisitor.INSTANCEOF);
            visitTypeSignature(interfaceType.resolveType(paramType), interfaceVisitor);
        }
    }

    sv.visitEnd();
    return signWriter.toString();
}

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

License:Apache License

public void accept(TransformationContext context) {
    ClassVisitor cv = context.writer();/*w w w . j  a  v  a2  s .co 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);/*from  ww  w. ja v a 2 s . c  o m*/
    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:com.pongasoft.kiwidoc.builder.serializer.type.TypeEncoder.java

License:Apache License

/**
 * @return the signature for a given generic type variable
 *//*from   w w  w .j a va 2 s . c o  m*/
public String encodeGenericTypeVariables(GenericTypeVariables type) {
    SignatureWriter sw = new SignatureWriter();

    for (GenericTypeVariable gtv : type.getGenericTypeVariables()) {
        sw.visitFormalTypeParameter(gtv.getName());

        List<Type> bounds = gtv.getBounds();
        if (bounds.isEmpty())
            bounds = OBJECT_BOUNDS;
        int i = 0;
        for (Type bound : bounds) {
            SignatureVisitor sv;
            if (i > 0) {
                sv = sw.visitInterfaceBound();
            } else {
                sv = sw.visitClassBound();
            }
            buildType(sv, bound);
            i++;
        }
    }

    // the signature is not complete without visiting the superclass... so we visit it and then
    // we remove it from the signature
    SignatureVisitor sv = sw.visitSuperclass();
    buildType(sv, OBJECT_TYPE);
    String signature = sw.toString();

    signature = signature.substring(0, signature.length() - OBJECT_SIGNATURE_LENGTH);

    return signature;
}