Package org.objectweb.asm.signature

Examples of org.objectweb.asm.signature.SignatureWriter


* Util class for generating class signature.
*/
public final class Signatures {

  public static String getClassSignature(TypeToken<?> interfaceType) {
    SignatureWriter signWriter = new SignatureWriter();
    SignatureVisitor sv = signWriter.visitSuperclass();
    sv.visitClassType(Type.getInternalName(Object.class));
    sv.visitEnd();

    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();
  }
View Full Code Here


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

  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();
  }
View Full Code Here

    return signWriter.toString();
  }


  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);
      }
    }
    signWriter.visitEnd();
    return signWriter.toString();
  }
View Full Code Here

    cr.accept(new TraceClassVisitor(null, ifier, new PrintWriter(System.out)),0);
  }

  @Test
  public void tiny2() {
    SignatureWriter sw = new SignatureWriter();
    sw.visitClassType(Type.getInternalName(Pair.class));
    SignatureVisitor sw2 = sw.visitTypeArgument('=');
    sw2.visitClassType(Type.getInternalName(String.class));
    sw2.visitEnd();
    sw.visitEnd();
    String res = sw.toString();
  }
View Full Code Here

    }
  }

  @Test
  public void testSig1() {
    SignatureWriter sw = new SignatureWriter();
    wyvern.tools.types.Type toGen = new Arrow(new Tuple(new wyvern.tools.types.Type[] {Int.getInstance(), Int.getInstance(), Bool.getInstance()}), Bool.getInstance());
    getSignature(toGen, sw, true);
    String res = sw.toString();
    ClassSignature mts = sun.reflect.generics.parser.SignatureParser.make().parseClassSig(res);
  }
View Full Code Here

        // Also: abstract class vs interface...
        String superName;
        if (_implementedType.isInterface()) {
            superName = getInternalClassName(Object.class.getName());

            SignatureWriter sw = new SignatureWriter();
            final SignatureVisitor sv = sw.visitSuperclass();
            sv.visitClassType(superName);
            sv.visitEnd();

            generateSignature(_implementedType, sw.visitInterface());
            sw.visitEnd();

            cw.visit(V1_5, ACC_ABSTRACT + ACC_PUBLIC + ACC_SUPER, internalClass, sw.toString(),
                    superName, new String[] { implName });
        } else {
            superName = implName;

            SignatureWriter sw = new SignatureWriter();
            generateSignature(_implementedType, sw.visitSuperclass());

            sw.visitEnd();

            cw.visit(V1_5, ACC_ABSTRACT + ACC_PUBLIC + ACC_SUPER, internalClass, sw.toString(),
                    superName, null);
        }
        cw.visitSource(className + ".java", null);
        BeanBuilder.generateDefaultConstructor(cw, superName);
        cw.visitEnd();
View Full Code Here

TOP

Related Classes of org.objectweb.asm.signature.SignatureWriter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.