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

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

Introduction

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

Prototype

public SignatureVisitor visitTypeArgument(final char wildcard) 

Source Link

Document

Visits a type argument of the last visited class or inner class 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/* w w w .j a  v  a 2 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  av  a  2  s.  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: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;// w  w w .  j  a v a  2 s  .  c  o 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:com.google.code.jconts.instrument.gen.ComputationClassGenerator.java

License:Apache License

public void accept(TransformationContext context) {
    ClassVisitor cv = context.writer();/* w ww .j  ava 2  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.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();//from   w  ww .ja  va 2s  . 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);//from w  w  w . j  a  v a 2 s.  co  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: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();//  w  ww . ja va 2  s  .  com

    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() });
}