## gate.creole
Class CreoleXmlHandler

    java.lang.Object
      |
      +--org.xml.sax.helpers.DefaultHandler
            |
            +--gate.creole.CreoleXmlHandler

All Implemented Interfaces:
  org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

public class CreoleXmlHandler
extends org.xml.sax.helpers.DefaultHandler

This is a SAX handler for processing `creole.xml` files. It would have been better to write it using DOM or JDOM but.... Resource data objects are created and added to the CREOLE register. URLs for resource JAR files are added to the GATE class loader.

Field Summary
`private SimpleErrorHandler` `_seh` This object indicates what to do when the parser encounts an error
`private Stack` `contentStack` A stack to stuff PCDATA onto for reading back at element ends.
`private org.xml.sax.Attributes` `currentAttributes` The current element's attribute list
`private FeatureMap` `currentAutoinstanceParams` This field represents the params map required for autoinstantiation Its a map from param name to param value.
`private List` `currentAutoinstances` This field holds autoinstanceParams describing the resource that needs to be instantiated
`private Parameter` `currentParam` The current parameter
`private List` `currentParamDisjunction` The current parameter disjunction
`private ParameterList` `currentParamList` The current parameter list
`private static boolean` `DEBUG` Debug flag
`private CreoleRegister` `register` The register object that we add ResourceData objects to during parsing.
`private ResourceData` `resourceData` The current resource data object
`private URL` `sourceUrl` The source URL of the directory file being parsed.

Constructor Summary
`CreoleXmlHandler(CreoleRegister register, URL directoryUrl)` Construction

Method Summary
`private String` `attributes2String(org.xml.sax.Attributes atts)` A verboase method for Attributes
`void` `characters(char[] text, int start, int length)` Called when the SAX parser encounts text (PCDATA) in the XML doc
`private void` `checkStack(String methodName, String elementName)` Utility function to throw exceptions on stack errors.
`void` `endDocument()` Called when the SAX parser encounts the end of the XML document
`void` `endElement(String uri, String qName, String elementName)` Called when the SAX parser encounts the end of an XML element.
`void` `error(org.xml.sax.SAXParseException ex)` Called for parse errors.
`void` `fatalError(org.xml.sax.SAXParseException ex)` Called for fatal errors.
`void` `ignorableWhitespace(char[] ch, int start, int length)` Called when the SAX parser encounts white space
`void` `startDocument()` Called when the SAX parser encounts the beginning of the XML document
`void` `startElement(String uri, String qName, String elementName, org.xml.sax.Attributes atts)` Called when the SAX parser encounts the beginning of an XML element
`void` `warning(org.xml.sax.SAXParseException ex)` Called for warnings.

Methods inherited from class org.xml.sax.helpers.DefaultHandler
`endPrefixMapping, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startPrefixMapping, unparsedEntityDecl`

Methods inherited from class java.lang.Object
`<clinit>, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait`

Field Detail

### contentStack

    private Stack contentStack

  A stack to stuff PCDATA onto for reading back at element ends. (Probably redundant to have a stack as we only push one item onto it. Probably. Ok, so I should check, but a) it works, b) I'm bald already and c) life is short.)

### resourceData

    private ResourceData resourceData

  The current resource data object

### currentParamList

    private ParameterList currentParamList

  The current parameter list

### currentParamDisjunction

    private List currentParamDisjunction

  The current parameter disjunction

### currentParam

    private Parameter currentParam

  The current parameter

### currentAttributes

    private org.xml.sax.Attributes currentAttributes

  The current element's attribute list

### DEBUG

    private static final boolean DEBUG

  Debug flag

### sourceUrl

    private URL sourceUrl

  The source URL of the directory file being parsed.

### _seh

    private SimpleErrorHandler _seh

  This object indicates what to do when the parser encounts an error

### currentAutoinstanceParams

    private FeatureMap currentAutoinstanceParams

  This field represents the params map required for autoinstantiation Its a map from param name to param value.

### currentAutoinstances

    private List currentAutoinstances

  This field holds autoinstanceParams describing the resource that needs to be instantiated

### register

    private CreoleRegister register

  The register object that we add ResourceData objects to during parsing.

Constructor Detail

### CreoleXmlHandler

    public CreoleXmlHandler(CreoleRegister register,
                            URL directoryUrl)

  Construction

Method Detail

### startDocument

    public void startDocument()
                       throws GateSaxException

  Called when the SAX parser encounts the beginning of the XML document
  Overrides:
    `startDocument` in class `org.xml.sax.helpers.DefaultHandler`

### endDocument

    public void endDocument()
                     throws GateSaxException

  Called when the SAX parser encounts the end of the XML document
  Overrides:
    `endDocument` in class `org.xml.sax.helpers.DefaultHandler`

### attributes2String

    private String attributes2String(org.xml.sax.Attributes atts)

  A verboase method for Attributes

### startElement

    public void startElement(String uri,
                             String qName,
                             String elementName,
                             org.xml.sax.Attributes atts)

  Called when the SAX parser encounts the beginning of an XML element
  Overrides:
    `startElement` in class `org.xml.sax.helpers.DefaultHandler`

### checkStack

    private void checkStack(String methodName,
                            String elementName)
                     throws GateSaxException

  Utility function to throw exceptions on stack errors.

### endElement

    public void endElement(String uri,
                           String qName,
                           String elementName)
                    throws GateSaxException

  Called when the SAX parser encounts the end of an XML element. This is where ResourceData objects get values set, and where they are added to the CreoleRegister when we parsed their complete metadata entries.
  Overrides:
    `endElement` in class `org.xml.sax.helpers.DefaultHandler`

### characters

    public void characters(char[] text,
                           int start,
                           int length)
                    throws org.xml.sax.SAXException

  Called when the SAX parser encounts text (PCDATA) in the XML doc
  Overrides:
    `characters` in class `org.xml.sax.helpers.DefaultHandler`

### ignorableWhitespace

    public void ignorableWhitespace(char[] ch,
                                    int start,
                                    int length)
                             throws org.xml.sax.SAXException

  Called when the SAX parser encounts white space
  Overrides:
    `ignorableWhitespace` in class `org.xml.sax.helpers.DefaultHandler`

### error

    public void error(org.xml.sax.SAXParseException ex)
               throws org.xml.sax.SAXException

  Called for parse errors.
  Overrides:
    `error` in class `org.xml.sax.helpers.DefaultHandler`

### fatalError

    public void fatalError(org.xml.sax.SAXParseException ex)
                    throws org.xml.sax.SAXException

  Called for fatal errors.
  Overrides:
    `fatalError` in class `org.xml.sax.helpers.DefaultHandler`

### warning

    public void warning(org.xml.sax.SAXParseException ex)
                 throws org.xml.sax.SAXException

  Called for warnings.
  Overrides:
    `warning` in class `org.xml.sax.helpers.DefaultHandler`