Class ASMContentHandler

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

public class ASMContentHandler extends 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:
  • Field Details

    • computeMax

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

      protected OutputStream os
      Output stream to write result bytecode.
    • 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.
  • Constructor Details

    • ASMContentHandler

      public ASMContentHandler(OutputStream os, boolean computeMax)
      Constructs a new ASMContentHandler object.
      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

    • 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:
      startElement in interface ContentHandler
      Overrides:
      startElement in class 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 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
    • endDocument

      public final void endDocument() throws SAXException
      Process notification of the end of a document and write generated bytecode into output stream.
      Specified by:
      endDocument in interface ContentHandler
      Overrides:
      endDocument in class DefaultHandler
      Throws:
      SAXException - if parsing or writing error is to be reported.