public class ASMContentHandler extends org.xml.sax.helpers.DefaultHandler implements Constants
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.SAXClassAdapter
,
Processor
Modifier and Type | Field and Description |
---|---|
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 java.util.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 java.io.OutputStream |
os
Output stream to write result bytecode.
|
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, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_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, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, 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, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, V1_1, V1_2, V1_3, V1_4, V1_5
Constructor and Description |
---|
ASMContentHandler(java.io.OutputStream os,
boolean computeMax)
Constructs a new
ASMContentHandler object. |
Modifier and Type | Method and Description |
---|---|
void |
endDocument()
Process notification of the end of a document and write generated bytecode
into output stream.
|
void |
endElement(java.lang.String ns,
java.lang.String localName,
java.lang.String qName)
Process notification of the end of an XML element being reached.
|
void |
startElement(java.lang.String ns,
java.lang.String localName,
java.lang.String qName,
org.xml.sax.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.
|
protected boolean computeMax
protected java.io.OutputStream os
protected ClassWriter cw
ClassWriter
used to write class bytecode.protected CodeVisitor mw
CodeVisitor
used to write method bytecodeprotected java.util.Map labels
Label
instances for current method.public ASMContentHandler(java.io.OutputStream os, boolean computeMax)
ASMContentHandler
object.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.public byte[] toByteArray()
public final void startElement(java.lang.String ns, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes list) throws org.xml.sax.SAXException
startElement
in interface org.xml.sax.ContentHandler
startElement
in class org.xml.sax.helpers.DefaultHandler
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.org.xml.sax.SAXException
- if a parsing error is to be reportedpublic final void endElement(java.lang.String ns, java.lang.String localName, java.lang.String qName) throws org.xml.sax.SAXException
endElement
in interface org.xml.sax.ContentHandler
endElement
in class org.xml.sax.helpers.DefaultHandler
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.org.xml.sax.SAXException
- if a parsing error is to be reportedpublic final void endDocument() throws org.xml.sax.SAXException
endDocument
in interface org.xml.sax.ContentHandler
endDocument
in class org.xml.sax.helpers.DefaultHandler
org.xml.sax.SAXException
- if parsing or writing error is to be reported.