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

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

Introduction

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

Prototype

public SignatureWriter() 

Source Link

Document

Constructs a new SignatureWriter .

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.  ja  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 ww. j  av  a2s. 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//from w ww. jav  a2 s .  co m
 */
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 String getFieldSignature(TypeToken<?> fieldType) {
    SignatureWriter signWriter = new SignatureWriter();
    signWriter.visitClassType(Type.getInternalName(fieldType.getRawType()));

    if (fieldType.getType() instanceof ParameterizedType) {
        for (java.lang.reflect.Type paramType : ((ParameterizedType) fieldType.getType())
                .getActualTypeArguments()) {
            signWriter.visitTypeArgument(SignatureVisitor.INSTANCEOF);
            visitTypeSignature(fieldType.resolveType(paramType), signWriter);
        }/*from w ww .j  av  a  2 s .c  o  m*/
    }
    signWriter.visitEnd();
    return signWriter.toString();
}

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

License:Apache License

/**
 * @return the getter signature {@code <T> T get(Object object)}
 *///from  w  w  w.  jav a 2 s  .  c  o m
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)}
 *//*from www.j  a v a2 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 {/* www  .ja va2  s.co m*/
            sv.visitClassType(argumentTypes[i].getInternalName());
            sv.visitEnd();
        }
    }

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

    return signWriter.toString();
}

From source file:com.android.tools.layoutlib.create.AbstractClassAdapter.java

License:Apache License

/**
 * Renames the ClassSignature handled by ClassVisitor.visit
 * or the MethodTypeSignature handled by ClassVisitor.visitMethod.
 *//* www .j  av a  2s  . c  o m*/
String renameTypeSignature(String sig) {
    if (sig == null) {
        return null;
    }
    SignatureReader reader = new SignatureReader(sig);
    SignatureWriter writer = new SignatureWriter();
    reader.accept(new RenameSignatureAdapter(writer));
    sig = writer.toString();
    return sig;
}

From source file:com.android.tools.layoutlib.create.RenameClassAdapter.java

License:Apache License

/**
 * Renames the FieldTypeSignature handled by ClassVisitor.visitField
 * or MethodVisitor.visitLocalVariable./* ww  w  . j a va2  s  . co  m*/
 */
String renameFieldSignature(String sig) {
    if (sig == null) {
        return null;
    }
    SignatureReader reader = new SignatureReader(sig);
    SignatureWriter writer = new SignatureWriter();
    reader.acceptType(new RenameSignatureAdapter(writer));
    sig = writer.toString();
    return sig;
}

From source file:com.facebook.buck.jvm.java.abi.SignatureFactory.java

License:Apache License

/**
 * Returns the type signature of the given element. If none is required by the VM spec, returns
 * null.//from w w w  . j  a  v  a  2s.co  m
 */
@Nullable
public String getSignature(Element element) {
    SignatureWriter writer = new SignatureWriter();
    element.accept(elementVisitorAdapter, writer);
    String result = writer.toString();
    return result.isEmpty() ? null : result;
}