List of usage examples for org.objectweb.asm.signature SignatureVisitor visitTypeArgument
public SignatureVisitor visitTypeArgument(final char wildcard)
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() }); }