List of usage examples for org.objectweb.asm.tree MethodNode visitParameterAnnotation
@Override @SuppressWarnings("unchecked") public AnnotationVisitor visitParameterAnnotation(final int parameter, final String descriptor, final boolean visible)
From source file:pxb.android.dex2jar.v3.V3MethodAdapter.java
License:Apache License
private void build() { List<String> exceptions = new ArrayList<String>(); String signature = null;// w w w . jav a2 s . co m for (Iterator<Ann> it = anns.iterator(); it.hasNext();) { Ann ann = it.next(); if ("Ldalvik/annotation/Throws;".equals(ann.type)) { it.remove(); for (Item item : ann.items) { if (item.name.equals("value")) { Ann values = (Ann) item.value; for (Item i : values.items) { exceptions.add(i.value.toString()); } } } } else if ("Ldalvik/annotation/Signature;".equals(ann.type)) { it.remove(); for (Item item : ann.items) { if (item.name.equals("value")) { Ann values = (Ann) item.value; StringBuilder sb = new StringBuilder(); for (Item i : values.items) { sb.append(i.value.toString()); } signature = sb.toString(); } } } } MethodNode methodNode = this.methodNode; methodNode.access = method.getAccessFlags(); methodNode.name = method.getName(); methodNode.desc = method.getType().getDesc(); methodNode.signature = signature; methodNode.exceptions = exceptions; for (Ann ann : anns) { AnnotationVisitor av = methodNode.visitAnnotation(ann.type, ann.visible); V3AnnAdapter.accept(ann.items, av); av.visitEnd(); } for (int i = 0; i < paramAnns.length; i++) { for (Ann ann : paramAnns[i]) { AnnotationVisitor av = methodNode.visitParameterAnnotation(i, ann.type, ann.visible); V3AnnAdapter.accept(ann.items, av); av.visitEnd(); } } }