Example usage for org.objectweb.asm.signature SignatureVisitor visitClassType

List of usage examples for org.objectweb.asm.signature SignatureVisitor visitClassType

Introduction

In this page you can find the example usage for org.objectweb.asm.signature SignatureVisitor visitClassType.

Prototype

public void visitClassType(final String name) 

Source Link

Document

Starts the visit of a signature corresponding to a class or interface type.

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 ww  .j a  v  a2 s.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 w w w.j a  v a2  s .c o  m

    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:co.cask.cdap.internal.asm.Signatures.java

License:Apache License

/**
 * Generates signature for the given method.
 *
 * @param method Method that needs signature to be generated
 * @param types List of {@link TypeToken} that matches with the number of arguments in the given method.
 *              For a given method argument, if the coresponding {@link TypeToken} is non-null, it will be
 *              used to generate the type parameter in the signature, otherwise, the one in the method will be used.
 *              It's useful if the method is parameterized so that parameterize type information can be passed
 *              through the type tokens.
 * @return A method signature string/*www  .  j av  a2s.  c  om*/
 */
public static String getMethodSignature(Method method, TypeToken<?>... types) {
    SignatureWriter signWriter = new SignatureWriter();

    Type[] argumentTypes = method.getArgumentTypes();

    for (int i = 0; i < argumentTypes.length; i++) {
        SignatureVisitor sv = signWriter.visitParameterType();
        if (types[i] != null) {
            visitTypeSignature(types[i], sv);
        } else {
            sv.visitClassType(argumentTypes[i].getInternalName());
            sv.visitEnd();
        }
    }

    signWriter.visitReturnType().visitBaseType('V');

    return signWriter.toString();
}

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

License:Apache License

public static void visitTypeSignature(TypeToken<?> type, SignatureVisitor visitor) {
    Class<?> rawType = type.getRawType();
    if (rawType.isPrimitive()) {
        visitor.visitBaseType(Type.getType(rawType).toString().charAt(0));
        return;/*from  www  .j a  v  a 2s .co  m*/
    } else if (rawType.isArray()) {
        visitTypeSignature(type.getComponentType(), visitor.visitArrayType());
        return;
    } else {
        visitor.visitClassType(Type.getInternalName(rawType));
    }

    java.lang.reflect.Type visitType = type.getType();
    if (visitType instanceof ParameterizedType) {
        for (java.lang.reflect.Type argType : ((ParameterizedType) visitType).getActualTypeArguments()) {
            visitTypeSignature(TypeToken.of(argType), visitor.visitTypeArgument(SignatureVisitor.INSTANCEOF));
        }
    }

    visitor.visitEnd();
}

From source file:co.cask.cdap.internal.io.FieldAccessorGenerator.java

License:Apache License

/**
 * @return the getter signature {@code <T> T get(Object object)}
 *//*  w  ww  . j  av a2 s . c om*/
private String getterSignature() {
    SignatureWriter writer = new SignatureWriter();
    writer.visitFormalTypeParameter("T");
    SignatureVisitor sv = writer.visitClassBound();
    sv.visitClassType(Type.getInternalName(Object.class));
    sv.visitEnd();

    sv = writer.visitParameterType();
    sv.visitClassType(Type.getInternalName(Object.class));
    sv.visitEnd();

    sv = sv.visitReturnType();
    sv.visitTypeVariable("T");

    return writer.toString();
}

From source file:co.cask.cdap.internal.io.FieldAccessorGenerator.java

License:Apache License

/**
 * @return the setter signature {@code <T> void set(Object object, T value)}
 *//*  w  w  w . j  a  v a 2 s  .c  om*/
private String setterSignature() {
    SignatureWriter writer = new SignatureWriter();
    writer.visitFormalTypeParameter("T");
    SignatureVisitor sv = writer.visitClassBound();
    sv.visitClassType(Type.getInternalName(Object.class));
    sv.visitEnd();

    sv = writer.visitParameterType();
    sv.visitClassType(Type.getInternalName(Object.class));
    sv.visitEnd();

    sv = writer.visitParameterType();
    sv.visitTypeVariable("T");

    sv.visitReturnType().visitBaseType('V');

    return writer.toString();
}

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

License:Apache License

public static String getMethodSignature(Method method, TypeToken<?>[] types) {
    SignatureWriter signWriter = new SignatureWriter();

    Type[] argumentTypes = method.getArgumentTypes();

    for (int i = 0; i < argumentTypes.length; i++) {
        SignatureVisitor sv = signWriter.visitParameterType();
        if (types[i] != null) {
            visitTypeSignature(types[i], sv);
        } else {/*from   ww  w  . j av  a 2s  .c  o m*/
            sv.visitClassType(argumentTypes[i].getInternalName());
            sv.visitEnd();
        }
    }

    signWriter.visitReturnType().visitBaseType('V');

    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();/*from   w ww  . j  a  va 2  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.ComputationClassGenerator.java

License:Apache License

private void contSignature(SignatureVisitor sign) {
    sign.visitClassType(CONTINUATION_NAME);
    SignatureVisitor argsv = sign.visitTypeArgument('-');
    new SignatureReader(info.valueSignature).acceptType(argsv);
    sign.visitEnd();/* www  .ja  v a 2  s  .  c o m*/

}

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);
    v.visitEnd();//from w  w w.  j av a  2 s .  c o  m
    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();
}