List of usage examples for org.objectweb.asm.signature SignatureVisitor visitEnd
public void visitEnd()
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 .j ava 2s. 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(); 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); }//from w w w .j a v a2s . c om } 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// w ww .jav a2 s . c o 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 void visitTypeSignature(TypeToken<?> type, SignatureVisitor visitor) { Class<?> rawType = type.getRawType(); if (rawType.isPrimitive()) { visitor.visitBaseType(Type.getType(rawType).toString().charAt(0)); return;/*from w w w. jav a2s . co 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:co.cask.cdap.internal.io.FieldAccessorGenerator.java
License:Apache License
/** * @return the getter signature {@code <T> T get(Object object)} *///from ww w .ja va 2s .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 ww w .j a va2s .c o m*/ 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 {/*from w w w .j av a 2s. c om*/ sv.visitClassType(argumentTypes[i].getInternalName()); sv.visitEnd(); } } signWriter.visitReturnType().visitBaseType('V'); 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();//from www . ja va 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 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 2s . 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(); }