org.objectweb.asm.xml
Class ASMContentHandler

java.lang.Object
  extended by org.xml.sax.helpers.DefaultHandler
      extended by org.objectweb.asm.xml.ASMContentHandler
All Implemented Interfaces:
Opcodes, ContentHandler, DTDHandler, EntityResolver, ErrorHandler

public class ASMContentHandler
extends org.xml.sax.helpers.DefaultHandler
implements Opcodes

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

Nested Class Summary
protected  class ASMContentHandler.Rule
          Rule
 
Field Summary
protected  ClassVisitor cv
          Current instance of the ClassVisitor used to visit classfile bytecode.
protected  Map<Object,Label> labels
          Map of the active Label instances for current method.
 
Fields inherited from interface org.objectweb.asm.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, ASM4, 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, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, 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, 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
ASMContentHandler(ClassVisitor cv)
          Constructs a new ASMContentHandler object.
 
Method Summary
 void endElement(String ns, String lName, String qName)
          Process notification of the end of an XML element being reached.
 void startElement(String ns, String lName, String qName, Attributes list)
          Process notification of the start of an XML element being reached.
 
Methods inherited from class org.xml.sax.helpers.DefaultHandler
characters, endDocument, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startDocument, startPrefixMapping, unparsedEntityDecl, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cv

protected ClassVisitor cv
Current instance of the ClassVisitor used to visit classfile bytecode.


labels

protected Map<Object,Label> labels
Map of the active Label instances for current method.

Constructor Detail

ASMContentHandler

public ASMContentHandler(ClassVisitor cv)
Constructs a new ASMContentHandler object.

Parameters:
cv - class visitor that will be called to reconstruct the classfile using the XML stream.
Method Detail

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:
startElement in interface ContentHandler
Overrides:
startElement in class org.xml.sax.helpers.DefaultHandler
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

public final void endElement(String ns,
                             String lName,
                             String qName)
                      throws SAXException
Process notification of the end of an XML element being reached.

Specified by:
endElement in interface ContentHandler
Overrides:
endElement in class org.xml.sax.helpers.DefaultHandler
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