List of usage examples for org.objectweb.asm.signature SignatureWriter visitSuperclass
@Override
public SignatureVisitor visitSuperclass()
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; }