org.objectweb.asm.xml

Class ASMContentHandler

Implemented Interfaces:
Constants

public class ASMContentHandler
extends DefaultHandler
implements Constants

A ContentHandler that transforms XML document into Java class file. This class can be feeded by any kind of SAX 2.0 event producers, e.g. XML parser, XSLT or XPath engines, or custom code.
Author:
Eugene Kuleshov
See Also:
SAXClassAdapter, Processor

Field Summary

protected boolean
computeMax
true if the maximum stack size and number of local variables must be automatically computed.
protected ClassWriter
cw
Current instance of the ClassWriter used to write class bytecode.
protected Map
labels
Map of the active Label instances for current method.
protected CodeVisitor
mw
Current instance of the CodeVisitor used to write method bytecode
protected OutputStream
os
Output stream to write result bytecode.

Fields inherited from interface org.objectweb.asm.Constants

AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DREM, DRETURN, DSTORE, DSUB, DUP, DUP2, DUP2_X1, DUP2_X2, DUP_X1, DUP_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, TABLESWITCH, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, V1_1, V1_2, V1_3, V1_4, V1_5

Constructor Summary

ASMContentHandler(OutputStream os, boolean computeMax)
Constructs a new ASMContentHandler object.

Method Summary

void
endDocument()
Process notification of the end of a document and write generated bytecode into output stream.
void
endElement(String ns, String localName, String qName)
Process notification of the end of an XML element being reached.
void
startElement(String ns, String localName, String qName, Attributes list)
Process notification of the start of an XML element being reached.
byte[]
toByteArray()
Returns the bytecode of the class that was build with underneath class writer.

Field Details

computeMax

protected boolean computeMax
true if the maximum stack size and number of local variables must be automatically computed.

cw

protected ClassWriter cw
Current instance of the ClassWriter used to write class bytecode.

labels

protected Map labels
Map of the active Label instances for current method.

mw

protected CodeVisitor mw
Current instance of the CodeVisitor used to write method bytecode

os

protected OutputStream os
Output stream to write result bytecode.

Constructor Details

ASMContentHandler

public ASMContentHandler(OutputStream os,
                         boolean computeMax)
Parameters:
os - output stream to write generated class.
computeMax - true if the maximum stack size and the maximum number of local variables must be automatically computed. This value is passed to ClassWriter instance.

Method Details

endDocument

public final void endDocument()
            throws SAXException
Process notification of the end of a document and write generated bytecode into output stream.

endElement

public final void endElement(String ns,
                             String localName,
                             String qName)
            throws SAXException
Process notification of the end of an XML element being reached.
Parameters:
ns - - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
localName - - The local name (without prefix), or the empty string if Namespace processing is not being performed.
qName - - The qualified XML 1.0 name (with prefix), or the empty string if qualified names are not available.

startElement

public final void startElement(String ns,
                               String localName,
                               String qName,
                               Attributes list)
            throws SAXException
Process notification of the start of an XML element being reached.
Parameters:
ns - - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.
localName - - The local name (without prefix), or the empty string if Namespace processing is not being performed.
qName - - The qualified name (with prefix), or the empty string if qualified names are not available.
list - - The attributes attached to the element. If there are no attributes, it shall be an empty Attributes object.

toByteArray

public byte[] toByteArray()
Returns the bytecode of the class that was build with underneath class writer.
Returns:
the bytecode of the class that was build with underneath class writer or null if there are no classwriter created.