# Class VersionAwareHandler

java.lang.Object
org.xml.sax.helpers.DefaultHandler
org.apache.cayenne.configuration.xml.SAXNestedTagHandler
org.apache.cayenne.configuration.xml.NamespaceAwareNestedTagHandler
org.apache.cayenne.configuration.xml.VersionAwareHandler

All Implemented Interfaces:
  `ContentHandler, DTDHandler, EntityResolver, ErrorHandler`

Direct Known Subclasses:
  `DataChannelHandler, RootDataMapHandler`

public abstract class VersionAwareHandler extends NamespaceAwareNestedTagHandler
Handler that can validate root tag name, version and namespace.

Since:
  4.1

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected String`
  `rootTag`

  ### Fields inherited from class NamespaceAwareNestedTagHandler

  `allowAllNamespaces, targetNamespace`

  ### Fields inherited from class SAXNestedTagHandler

  `loaderContext, locator, parentHandler`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `VersionAwareHandler(LoaderContext loaderContext, String rootTag)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected boolean`
  `processElement(String namespaceURI, String localName, Attributes attributes)`
  Main method to process XML content.
  `protected void`
  `validateNamespace(String realNamespace)`
  `protected void`
  `validateVersion(Attributes attributes, String[] supportedVersions)`

  ### Methods inherited from class NamespaceAwareNestedTagHandler

  `characters, createChildTagHandler, endElement, processCharData, setAllowAllNamespaces, setTargetNamespace, startElement`

  ### Methods inherited from class SAXNestedTagHandler

  `beforeScopeEnd, getParentHandler, setDocumentLocator, stop, unexpectedTagMessage`

  ### Methods inherited from class DefaultHandler

  `endDocument, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, skippedEntity, startDocument, startPrefixMapping, unparsedEntityDecl, warning`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface ContentHandler

  `declaration`

- ## Field Details

  - ### rootTag

    protected String rootTag

- ## Constructor Details

  - ### VersionAwareHandler

    public VersionAwareHandler(LoaderContext loaderContext, String rootTag)

- ## Method Details

  - ### processElement

    protected boolean processElement(String namespaceURI, String localName, Attributes attributes) throws SAXException
    Description copied from class: `SAXNestedTagHandler`
    Main method to process XML content. Should be override in subclasses, by default do nothing. Return value should be true if tag was fully processed and shouldn't be passed down to child handler.
    Specified by:
      `processElement` in class `NamespaceAwareNestedTagHandler`
    Parameters:
      `namespaceURI` - namespace for tag
      `localName` - tag local name (i.e. w/o namespace prefix)
      `attributes` - tag attributes
    Returns:
      true if tag was processed
    Throws:
      `SAXException` - can be thrown to abort parsing
    See Also:
      - `SAXNestedTagHandler.createChildTagHandler(String, String, String, Attributes)`

  - ### validateVersion

    protected void validateVersion(Attributes attributes, String[] supportedVersions)

  - ### validateNamespace

    protected void validateNamespace(String realNamespace)