List of usage examples for org.objectweb.asm AnnotationVisitor visitArray
public AnnotationVisitor visitArray(final String name)
From source file:ch.raffael.contracts.processor.pmap.ParameterMapAnnotationProcessor.java
License:Apache License
private void writeType(AnnotationVisitor annotation, TypeElement element, AnnotationVisitor innerClassArray) { AnnotationVisitor methodsArray = annotation.visitArray("methods"); for (Element elem : element.getEnclosedElements()) { String methodName;//from w w w .j av a2 s . co m if (elem.getKind() == ElementKind.CONSTRUCTOR) { methodName = CTOR_NAME; } else if (elem.getKind() == ElementKind.METHOD) { methodName = elem.getSimpleName().toString(); } else { continue; } AnnotationVisitor methodAnnotation = methodsArray.visitAnnotation(null, Type.getDescriptor(ParameterMap.Method.class)); methodAnnotation.visit("descriptor", getMethodDescriptor((ExecutableElement) elem)); AnnotationVisitor paramNames = methodAnnotation.visitArray("parameterNames"); for (VariableElement param : ((ExecutableElement) elem).getParameters()) { paramNames.visit(null, param.getSimpleName().toString()); } paramNames.visitEnd(); methodAnnotation.visitEnd(); } methodsArray.visitEnd(); boolean endInnerClassArray = false; if (innerClassArray == null) { innerClassArray = annotation.visitArray("innerClasses"); endInnerClassArray = true; } for (Element innerElem : element.getEnclosedElements()) { if (isType(innerElem)) { AnnotationVisitor innerClass = innerClassArray.visitAnnotation(null, Type.getDescriptor(ParameterMap.InnerClass.class)); innerClass.visit("name", toInternalName( processingEnv.getElementUtils().getBinaryName((TypeElement) innerElem).toString())); writeType(innerClass, (TypeElement) innerElem, innerClassArray); innerClass.visitEnd(); } } if (endInnerClassArray) { innerClassArray.visitEnd(); } }
From source file:com.facebook.buck.java.abi.AnnotationValueMirror.java
License:Apache License
public void accept(@Nullable String name, AnnotationVisitor visitor) { if (primitiveValue != null) { visitor.visit(name, primitiveValue); } else if (enumValue != null) { visitor.visitEnum(name, enumValue.desc, enumValue.value); } else if (annotationValue != null) { annotationValue.appendTo(visitor, name); } else if (arrayValue != null) { AnnotationVisitor arrayVisitor = visitor.visitArray(name); for (AnnotationValueMirror element : arrayValue) { element.accept(null, arrayVisitor); }//from w w w . jav a 2s. co m arrayVisitor.visitEnd(); } }
From source file:com.facebook.presto.byteCode.AnnotationDefinition.java
License:Apache License
private void visit(AnnotationVisitor visitor, String name, Object value) { if (value instanceof AnnotationDefinition) { AnnotationDefinition annotation = (AnnotationDefinition) value; AnnotationVisitor annotationVisitor = visitor.visitAnnotation(name, annotation.type.getType()); annotation.visit(annotationVisitor); } else if (value instanceof Enum) { Enum<?> enumConstant = (Enum<?>) value; visitor.visitEnum(name, type(enumConstant.getDeclaringClass()).getClassName(), enumConstant.name()); } else if (value instanceof ParameterizedType) { ParameterizedType parameterizedType = (ParameterizedType) value; visitor.visit(name, Type.getType(parameterizedType.getType())); } else if (value instanceof Class) { Class<?> clazz = (Class<?>) value; visitor.visit(name, Type.getType(clazz)); } else if (value instanceof List) { AnnotationVisitor arrayVisitor = visitor.visitArray(name); for (Object element : (List<?>) value) { visit(arrayVisitor, null, element); }//from www .j a v a 2s . co m arrayVisitor.visitEnd(); } else { visitor.visit(name, value); } }
From source file:com.google.code.nanorm.internal.introspect.asm.MapperBuilder.java
License:Apache License
/** * Visit annotation property (String, primitive value, class reference or * other annotation)//from w w w .ja va2 s. c o m * @param name annotation name * @param obj value * @param visitor annotation visitar */ private static void visitAnnotationProperty(String name, Object obj, AnnotationVisitor visitor) { final Class<?> objClass = obj.getClass(); if (objClass.isArray()) { // Array final AnnotationVisitor arrayVisitor = visitor.visitArray(name); for (Object o : (Object[]) obj) { visitAnnotationProperty(name, o, arrayVisitor); } arrayVisitor.visitEnd(); } else if (objClass.isEnum()) { // Enumeration visitor.visitEnum(name, Type.getDescriptor(obj.getClass()), obj.toString()); } else if (Annotation.class.isAssignableFrom(obj.getClass())) { // Nested annotation Annotation nested = (Annotation) obj; AnnotationVisitor nestedVisitor = visitor.visitAnnotation(name, Type.getDescriptor(nested.annotationType())); visitAnnotation(nestedVisitor, nested); } else if (obj instanceof Class<?>) { // Class reference visitor.visit(name, Type.getDescriptor((Class<?>) obj)); } else { // String or primitive type visitor.visit(name, obj); } }
From source file:com.google.template.soy.jbcsrc.AnnotationRef.java
License:Apache License
/** Writes an array valued field to the annotation visitor. */ private static FieldWriter arrayFieldWriter(final String name) { return new FieldWriter() { @Override//from ww w. j a va 2s. c o m public void write(AnnotationVisitor visitor, Object value) { int len = Array.getLength(value); AnnotationVisitor arrayVisitor = visitor.visitArray(name); for (int i = 0; i < len; i++) { arrayVisitor.visit(null, Array.get(value, i)); } arrayVisitor.visitEnd(); } }; }
From source file:com.google.template.soy.jbcsrc.restricted.AnnotationRef.java
License:Apache License
/** Writes an simple array valued field to the annotation visitor. */ private static FieldWriter simpleArrayFieldWriter(final String name) { return new FieldWriter() { @Override/* w w w.j a va2 s . c om*/ public void write(AnnotationVisitor visitor, Object value) { int len = Array.getLength(value); AnnotationVisitor arrayVisitor = visitor.visitArray(name); for (int i = 0; i < len; i++) { arrayVisitor.visit(null, Array.get(value, i)); } arrayVisitor.visitEnd(); } }; }
From source file:com.google.template.soy.jbcsrc.restricted.AnnotationRef.java
License:Apache License
/** Writes an annotation array valued field to the annotation visitor. */ private static <T extends Annotation> FieldWriter annotationArrayFieldWriter(final String name, final AnnotationRef<T> ref) { return new FieldWriter() { @Override//from w w w .j av a2s . c o m public void write(AnnotationVisitor visitor, Object value) { int len = Array.getLength(value); AnnotationVisitor arrayVisitor = visitor.visitArray(name); for (int i = 0; i < len; i++) { ref.doWrite(ref.annType.cast(Array.get(value, i)), arrayVisitor.visitAnnotation(null, ref.typeDescriptor)); } arrayVisitor.visitEnd(); } }; }
From source file:com.googlecode.ddom.weaver.asm.AnnotationVisitorTee.java
License:Apache License
public AnnotationVisitor visitArray(String name) { AnnotationVisitor result = null;/* ww w. ja v a 2 s . c o m*/ for (AnnotationVisitor visitor : visitors) { result = mergeVisitors(result, visitor.visitArray(name)); } return result; }
From source file:com.googlecode.dex2jar.v3.AnnotationNode.java
License:Apache License
@SuppressWarnings("unchecked") public static void accept(String name, Object v, AnnotationVisitor av) { if (v instanceof AnnotationNode) { AnnotationNode a = (AnnotationNode) v; AnnotationVisitor av1 = av.visitAnnotation(name, a.type); accept(a.items, av1);//w w w . java 2 s . com av1.visitEnd(); } else if (v instanceof Field) { Field e = (Field) v; av.visitEnum(name, e.getOwner(), e.getName()); } else if (v instanceof List) { List<Object> list = (List<Object>) v; AnnotationVisitor av1 = av.visitArray(name); for (Object i : list) { accept(null, i, av1); } av1.visitEnd(); } else if (v instanceof Method) { // Method method = (Method) v; // AnnotationVisitor av1 = av.visitAnnotation(item.name, "Lcom.googlecode.Method;"); // av1.visit("owner", method.getOwner()); // av1.visit("name", method.getName()); // av1.visit("desc", method.getType().getDesc()); // av1.visitEnd(); av.visit(name, v); } else if (v instanceof DexType) { av.visit(name, ((DexType) v).desc); } else { av.visit(name, v); } }
From source file:com.googlecode.dex2jar.v3.V3AnnAdapter.java
License:Apache License
public static void accept(List<Item> items, AnnotationVisitor av) { if (av == null) { return;/* ww w. j a v a2 s. c o m*/ } for (Item item : items) { Object v = item.value; if (v instanceof Annotation) { Annotation a = (Annotation) v; if (a.type != null) { AnnotationVisitor av1 = av.visitAnnotation(item.name, a.type); accept(a.items, av1); av1.visitEnd(); } else {// array AnnotationVisitor av1 = av.visitArray(item.name); accept(a.items, av1); av1.visitEnd(); } } else if (v instanceof Field) { Field e = (Field) v; av.visitEnum(item.name, e.getType(), e.getName()); } else if (v instanceof Method) { // Method method = (Method) v; // AnnotationVisitor av1 = av.visitAnnotation(item.name, "Lcom.googlecode.Method;"); // av1.visit("owner", method.getOwner()); // av1.visit("name", method.getName()); // av1.visit("desc", method.getType().getDesc()); // av1.visitEnd(); av.visit(item.name, v); } else { av.visit(item.name, v); } } }