List of usage examples for org.objectweb.asm ClassWriter visitAttribute
@Override
public final void visitAttribute(final Attribute attribute)
From source file:com.j2biz.pencil.asm.Transformer.java
License:Open Source License
public final byte[] start(ASMClassInfoNode classNode) { assert classNode != null; // TODO: zuerst den logger initialisieren. bzw. zusaetzliche transformationen ausfhren. // erst dann schreiben for (final Iterator i = classNode.methods(); i.hasNext();) { final MethodInfoNode method = (MethodInfoNode) i.next(); // visit(classNode, node, writer); beforeWriteMethod(classNode, method); }//from w ww. ja va 2s . co m init(classNode); final ClassWriter writer = new ClassWriter(true, Defaults.SKIP_UNKNOWN_ATTRIBUTES); writer.visit(classNode.getVersion(), classNode.getAccessFlags(), classNode.getClassName(), classNode.getSuperClassName(), classNode.getInterfaces(), classNode.getJavaSource()); for (final Iterator i = classNode.innerClassNodes(); i.hasNext();) { final InnerClassNode node = (InnerClassNode) i.next(); visit(classNode, node, writer); } for (final Iterator i = classNode.fields(); i.hasNext();) { final FieldVariableDefinition node = (FieldVariableDefinition) i.next(); visit(classNode, node, writer); } for (final Iterator i = classNode.methods(); i.hasNext();) { final MethodInfoNode node = (MethodInfoNode) i.next(); visit(classNode, node, writer); } Attribute attrs = classNode.getFirstAttribute(); while (attrs != null) { writer.visitAttribute(attrs); attrs = attrs.next; } end(); return writer.toByteArray(); }