Class ASMContentHandler
java.lang.Object
org.xml.sax.helpers.DefaultHandler
org.objectweb.asm.xml.ASMContentHandler
- All Implemented Interfaces:
Opcodes, ContentHandler, DTDHandler, EntityResolver, ErrorHandler
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:
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleantrue if the maximum stack size and number of local variables must be automatically computed.protected ClassWriterCurrent instance of theClassWriterused to write class bytecode.protected MapMap of the activeLabelinstances for current method.protected OutputStreamOutput stream to write result bytecode.Fields inherited from interface Opcodes
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, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, 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, INTEGER, INVOKEDYNAMIC, INVOKEDYNAMIC_OWNER, 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, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, 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, TOP, UNINITIALIZED_THIS, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7 -
Constructor Summary
ConstructorsConstructorDescriptionASMContentHandler(OutputStream os, boolean computeMax) Constructs a newASMContentHandlerobject. -
Method Summary
Modifier and TypeMethodDescriptionfinal voidProcess notification of the end of a document and write generated bytecode into output stream.final voidendElement(String ns, String lName, String qName) Process notification of the end of an XML element being reached.final voidstartElement(String ns, String lName, String qName, Attributes list) Process notification of the start of an XML element being reached.byte[]Returns the bytecode of the class that was build with underneath class writer.Methods inherited from class DefaultHandler
characters, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startDocument, startPrefixMapping, unparsedEntityDecl, warningMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ContentHandler
declaration
-
Field Details
-
computeMax
protected boolean computeMaxtrue if the maximum stack size and number of local variables must be automatically computed. -
os
Output stream to write result bytecode. -
cw
Current instance of theClassWriterused to write class bytecode. -
labels
-
-
Constructor Details
-
ASMContentHandler
Constructs a newASMContentHandlerobject.- 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 toClassWriterinstance.
-
-
Method Details
-
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.
-
startElement
public final void startElement(String ns, String lName, String qName, Attributes list) throws SAXException Process notification of the start of an XML element being reached.- Specified by:
startElementin interfaceContentHandler- Overrides:
startElementin classDefaultHandler- Parameters:
ns- - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.lName- - 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.- Throws:
SAXException- if a parsing error is to be reported
-
endElement
Process notification of the end of an XML element being reached.- Specified by:
endElementin interfaceContentHandler- Overrides:
endElementin classDefaultHandler- Parameters:
ns- - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed.lName- - 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.- Throws:
SAXException- if a parsing error is to be reported
-
endDocument
Process notification of the end of a document and write generated bytecode into output stream.- Specified by:
endDocumentin interfaceContentHandler- Overrides:
endDocumentin classDefaultHandler- Throws:
SAXException- if parsing or writing error is to be reported.
-