Class XMLSchemaParser

  • All Implemented Interfaces:
    SchemaParser, MetaDataParser, org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler, org.xml.sax.ext.LexicalHandler

    public class XMLSchemaParser
    extends XMLMetaDataParser
    implements SchemaParser
    Custom SAX parser used to parse Schema objects. The parser will place all parsed schemas into the current SchemaGroup, set via the setSchemaGroup(org.apache.openjpa.jdbc.schema.SchemaGroup) method. This allows parsing of multiple files into a single schema group. The parser deserializes from the following XML format:
    <!ELEMENT schemas (schema)+>
    <!ELEMENT schema (table|sequence)+>
    <!ATTLIST schema name CDATA #IMPLIED>
    <!ELEMENT table (column|index|pk|fk|unique)+>
    <!ATTLIST table name CDATA #REQUIRED>
    <!ELEMENT column EMPTY>
    <!ATTLIST column name CDATA #REQUIRED>
    <!ATTLIST column type (array|bigint|binary|bit|blob|char|clob |date|decimal|distinct|double|float|integer|java_object |longvarbinary|longvarchar|null|numeric|other|real|ref|smallint|struct |time|timstamp|tinyint|varbinary|varchar) #REQUIRED>
    <!ATTLIST column type-name CDATA #IMPLIED>
    <!ATTLIST column size CDATA #IMPLIED>
    <!ATTLIST column decimal-digits CDATA #IMPLIED>
    <!ATTLIST column not-null (true|false) "false">
    <!ATTLIST column default CDATA #IMPLIED>
    <!ATTLIST column auto-assign (true|false) "false">
    <!ELEMENT index (on)*>
    <!ATTLIST index name CDATA #REQUIRED>
    <!ATTLIST index column CDATA #IMPLIED>
    <!ATTLIST index unique (true|false) "false">
    <!ELEMENT on EMPTY>
    <!ATTLIST on column CDATA #REQUIRED>
    <!ELEMENT pk (on)*>
    <!ATTLIST pk name CDATA #IMPLIED>
    <!ATTLIST pk column CDATA #IMPLIED>
    <!ELEMENT fk (join)*>
    <!ATTLIST fk name CDATA #IMPLIED>
    <!ATTLIST fk deferred (true|false) "false">
    <!ATTLIST fk column CDATA #IMPLIED>
    <!ATTLIST fk to-table CDATA #REQUIRED>
    <!ATTLIST fk delete-action (cascade|default|restrict|none|null) "none">
    <!ATTLIST fk update-action (cascade|default|restrict|none|null) "none">
    <!ELEMENT unique (on)*>
    <!ATTLIST unique name CDATA #IMPLIED>
    <!ATTLIST unique column CDATA #IMPLIED>
    <!ATTLIST unique deferred (true|false) "false">
    <!ELEMENT join EMPTY>
    <!ATTLIST join column CDATA #IMPLIED>
    <!ATTLIST join value CDATA #IMPLIED>
    <!ATTLIST join to-column CDATA #REQUIRED>
    <!ELEMENT sequence EMPTY>
    <!ATTLIST sequence name CDATA #REQUIRED>
    <!ATTLIST sequence initial-value CDATA #IMPLIED>
    <!ATTLIST sequence increment CDATA #IMPLIED>
    <!ATTLIST sequence allocate CDATA #IMPLIED>
    Schema parsers are not threadsafe.
    Author:
    Abe White
    • Constructor Detail

      • XMLSchemaParser

        public XMLSchemaParser​(JDBCConfiguration conf)
        Constructor. Supply configuration.
    • Method Detail

      • setDelayConstraintResolve

        public void setDelayConstraintResolve​(boolean delay)
        Description copied from interface: SchemaParser
        Delay resolution of foreign key constraints until SchemaParser.resolveConstraints() is called. This allows you to parse multiple resources where a foreign key in one resource might refer to a table in another.
        Specified by:
        setDelayConstraintResolve in interface SchemaParser
      • resolveConstraints

        public void resolveConstraints()
        Description copied from interface: SchemaParser
        If this parser is in delayed resolve mode, resolve all constraints.
        Specified by:
        resolveConstraints in interface SchemaParser
      • setSchemaGroup

        public void setSchemaGroup​(SchemaGroup group)
        Description copied from interface: SchemaParser
        Set the current schema group; this clears all state from the last group.
        Specified by:
        setSchemaGroup in interface SchemaParser
      • finish

        protected void finish()
        Parse the schema relating to the given class. The schemas will be added to the current schema group.
        Overrides:
        finish in class XMLMetaDataParser
      • reset

        protected void reset()
        Description copied from class: XMLMetaDataParser
        Override this method to clear any state and ready the parser for a new document. Subclasses should call super.reset() to clear superclass state.
        Overrides:
        reset in class XMLMetaDataParser
      • getDocType

        protected java.io.Reader getDocType()
                                     throws java.io.IOException
        Description copied from class: XMLMetaDataParser
        Override this method to return any DOCTYPE declaration that should be dynamically included in xml documents that will be validated. Returns null by default.
        Overrides:
        getDocType in class XMLMetaDataParser
        Throws:
        java.io.IOException
      • startElement

        protected boolean startElement​(java.lang.String name,
                                       org.xml.sax.Attributes attrs)
                                throws org.xml.sax.SAXException
        Description copied from class: XMLMetaDataParser
        Override this method marking the start of some element. If this method returns false, the content of the element and the end element event will be ignored.
        Specified by:
        startElement in class XMLMetaDataParser
        Throws:
        org.xml.sax.SAXException
      • endElement

        protected void endElement​(java.lang.String name)
        Description copied from class: XMLMetaDataParser
        Override this method marking the end of some element.
        Specified by:
        endElement in class XMLMetaDataParser