Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.sun.msv.reader
Class GrammarReader

    java.lang.Object
      org.xml.sax.helpers.XMLFilterImpl
          com.sun.msv.reader.GrammarReader

All Implemented Interfaces:
  org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler, IDContextProvider2, ValidationContext, org.xml.sax.XMLFilter, org.xml.sax.XMLReader

Direct Known Subclasses:
  RELAXReader, TREXBaseReader, XMLSchemaReader

public abstract class GrammarReader
extends org.xml.sax.helpers.XMLFilterImpl
implements IDContextProvider2

base implementation of grammar readers that read grammar from SAX2 stream. GrammarReader class can be used as a ContentHandler that parses a grammar. So the typical usage is

     GrammarReader reader = new RELAXGrammarReader(...);
     XMLReader parser = .... // create a new XMLReader here

     parser.setContentHandler(reader);
     parser.parse(whateverYouLike);
     return reader.grammar;  // obtain parsed grammar.

Or you may want to use several pre-defined static "parse" methods for ease of use.

Author:
  Kohsuke KAWAGUCHI

Nested Class Summary
`static interface` | `GrammarReader.BackPatch`
`class` | `GrammarReader.BackwardReferenceMap` memorizes what declarations are referenced from where.
`class` | `GrammarReader.ChainPrefixResolver`
`static interface` | `GrammarReader.PrefixResolver` namespace prefix to URI conversion map.

Field Summary
`GrammarReader.BackwardReferenceMap` | `backwardReference` keeps track of all backward references to every ReferenceExp.
`static GrammarReader.PrefixResolver` | `basePrefixResolver` The namespace prefix resolver that only resolves "xml" prefix.
`Controller` | `controller` this object receives errors and warnings
`static java.lang.String` | `ERR_BAD_ATTRIBUTE_VALUE`
`static java.lang.String` | `ERR_BAD_TYPE`
`static java.lang.String` | `ERR_CHARACTERS`
`static java.lang.String` | `ERR_CONFLICTING_ATTRIBUTES`
`static java.lang.String` | `ERR_DATATYPE_ALREADY_DEFINED`
`static java.lang.String` | `ERR_DISALLOWED_ATTRIBUTE`
`static java.lang.String` | `ERR_FRAGMENT_IDENTIFIER`
`static java.lang.String` | `ERR_ILLEGAL_FINAL_VALUE`
`static java.lang.String` | `ERR_MALPLACED_ELEMENT`
`static java.lang.String` | `ERR_MISSING_ATTRIBUTE`
`static java.lang.String` | `ERR_MISSING_ATTRIBUTE_2`
`static java.lang.String` | `ERR_MISSING_CHILD_EXPRESSION`
`static java.lang.String` | `ERR_MISSING_CHILD_TYPE`
`static java.lang.String` | `ERR_MISSING_TOPLEVEL`
`static java.lang.String` | `ERR_MORE_THAN_ONE_CHILD_EXPRESSION`
`static java.lang.String` | `ERR_MORE_THAN_ONE_CHILD_TYPE`
`static java.lang.String` | `ERR_RECURSIVE_DATATYPE`
`static java.lang.String` | `ERR_RECURSIVE_INCLUDE`
`static java.lang.String` | `ERR_RUNAWAY_EXPRESSION`
`static java.lang.String` | `ERR_UNDEFINED_DATATYPE`
`org.xml.sax.Locator` | `locator` document Locator that is given by XML reader
`javax.xml.parsers.SAXParserFactory` | `parserFactory` Reader may create another SAXParser from this factory
`ExpressionPool` | `pool` this object must be used to create a new expression
`GrammarReader.PrefixResolver` | `prefixResolver`
`static java.lang.String` | `WRN_DEPRECATED_TYPENAME`
`static java.lang.String` | `WRN_MAYBE_WRONG_NAMESPACE`

Method Summary
`void` | `_parse(java.lang.Object source, org.xml.sax.Locator errorSource)` parses a grammar from the specified source
`void` | `addBackPatchJob(GrammarReader.BackPatch job)`
`void` | `addBackPatchJob(XSDatatypeExp job)`
`java.lang.String` | `combineURI(java.lang.String baseURI, java.lang.String relativeURI)` converts the relative URL to the absolute one by using the specified base URL.
`java.lang.String` | `combineURL(java.lang.String baseURI, java.lang.String relativeURI)` Deprecated. use the combineURI method.
`abstract State` | `createExpressionChildState(State parent, StartTagInfo tag)` this method must be implemented by the derived class to create language-default expresion state.
`void` | `detectUndefinedOnes(ReferenceContainer container, java.lang.String errMsg)` detects undefined ReferenceExp and reports it as an error.
`void` | `endPrefixMapping(java.lang.String prefix)`
`XSDatatype` | `getBackwardCompatibleType(java.lang.String typeName)` tries to obtain a DataType object by resolving obsolete names.
`java.lang.String` | `getBaseUri()`
`State` | `getCurrentState()` gets current State object.
`org.xml.sax.Locator` | `getDeclaredLocationOf(java.lang.Object o)`
`abstract Grammar` | `getResultAsGrammar()` gets the parsed AGM.
`boolean` | `isNotation(java.lang.String notationName)`
`boolean` | `isUnparsedEntity(java.lang.String entityName)`
`java.util.Iterator` | `iterateInscopeNamespaces()` Iterates Map.Entry objects which has the prefix as key and the namespace URI as value.
`void` | `onID(Datatype dt, StringToken token)` this method is called when a type with ID semantics is matched.
`void` | `parse(org.xml.sax.InputSource source)` parses a grammar from the specified source
`void` | `parse(java.lang.String source)` parses a grammar from the specified source
`void` | `popState()` pops the previous state from the stack
`void` | `pushState(State newState, State parentState, StartTagInfo startTag)` pushs the current state into the stack and sets new one
`void` | `reportError(java.lang.Exception nestedException, java.lang.String propertyName)`
`void` | `reportError(java.lang.Exception nestedException, java.lang.String propertyName, java.lang.Object arg1)`
`void` | `reportError(org.xml.sax.Locator[] locs, java.lang.String propertyName, java.lang.Object[] args)`
`void` | `reportError(java.lang.String propertyName)`
`void` | `reportError(java.lang.String propertyName, java.lang.Object arg1)`
`void` | `reportError(java.lang.String propertyName, java.lang.Object[] args, java.lang.Exception nestedException, org.xml.sax.Locator[] errorLocations)` reports an error to the controller
`void` | `reportError(java.lang.String propertyName, java.lang.Object arg1, java.lang.Object arg2)`
`void` | `reportError(java.lang.String propertyName, java.lang.Object arg1, java.lang.Object arg2, java.lang.Object arg3)`
`void` | `reportWarning(java.lang.String propertyName)`
`void` | `reportWarning(java.lang.String propertyName, java.lang.Object arg1)`
`void` | `reportWarning(java.lang.String propertyName, java.lang.Object[] args, org.xml.sax.Locator[] locations)` reports a warning to the controller
`void` | `reportWarning(java.lang.String propertyName, java.lang.Object arg1, java.lang.Object arg2)`
`org.xml.sax.InputSource` | `resolveLocation(State sourceState, java.lang.String uri)` obtains InputSource for the specified url.
`java.lang.String` | `resolveNamespacePrefix(java.lang.String prefix)`
`void` | `runBackPatchJob()` Performs all back-patchings.
`void` | `setDeclaredLocationOf(java.lang.Object o)`
`void` | `setDocumentLocator(org.xml.sax.Locator loc)`
`java.lang.String[]` | `splitQName(java.lang.String qName)` Resolves a QName into a pair of (namespace URI,local name).
`void` | `startPrefixMapping(java.lang.String prefix, java.lang.String uri)`
`void` | `switchSource(org.xml.sax.InputSource source, State newState)`
`void` | `switchSource(State sourceState, java.lang.String url, State newState)` Switchs InputSource to the specified URL and parses it by the specified state.

Methods inherited from class org.xml.sax.helpers.XMLFilterImpl
`characters, endDocument, endElement, error, fatalError, getContentHandler, getDTDHandler, getEntityResolver, getErrorHandler, getFeature, getParent, getProperty, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setContentHandler, setDTDHandler, setEntityResolver, setErrorHandler, setFeature, setParent, setProperty, skippedEntity, startDocument, startElement, unparsedEntityDecl, warning`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### locator

    public org.xml.sax.Locator locator

  document Locator that is given by XML reader

### controller

    public final Controller controller

  this object receives errors and warnings

### parserFactory

    public final javax.xml.parsers.SAXParserFactory parserFactory

  Reader may create another SAXParser from this factory

### pool

    public final ExpressionPool pool

  this object must be used to create a new expression

### basePrefixResolver

    public static final GrammarReader.PrefixResolver basePrefixResolver

  The namespace prefix resolver that only resolves "xml" prefix. This class should be used as the base resolver.

### prefixResolver

    public GrammarReader.PrefixResolver prefixResolver

### backwardReference

    public final GrammarReader.BackwardReferenceMap backwardReference

  keeps track of all backward references to every ReferenceExp. this map should be used to report the source of error of undefined-something.

### ERR_MALPLACED_ELEMENT

    public static final java.lang.String ERR_MALPLACED_ELEMENT

See Also:
  Constant Field Values

### ERR_CHARACTERS

    public static final java.lang.String ERR_CHARACTERS

See Also:
  Constant Field Values

### ERR_DISALLOWED_ATTRIBUTE

    public static final java.lang.String ERR_DISALLOWED_ATTRIBUTE

See Also:
  Constant Field Values

### ERR_MISSING_ATTRIBUTE

    public static final java.lang.String ERR_MISSING_ATTRIBUTE

See Also:
  Constant Field Values

### ERR_BAD_ATTRIBUTE_VALUE

    public static final java.lang.String ERR_BAD_ATTRIBUTE_VALUE

See Also:
  Constant Field Values

### ERR_MISSING_ATTRIBUTE_2

    public static final java.lang.String ERR_MISSING_ATTRIBUTE_2

See Also:
  Constant Field Values

### ERR_CONFLICTING_ATTRIBUTES

    public static final java.lang.String ERR_CONFLICTING_ATTRIBUTES

See Also:
  Constant Field Values

### ERR_RECURSIVE_INCLUDE

    public static final java.lang.String ERR_RECURSIVE_INCLUDE

See Also:
  Constant Field Values

### ERR_FRAGMENT_IDENTIFIER

    public static final java.lang.String ERR_FRAGMENT_IDENTIFIER

See Also:
  Constant Field Values

### ERR_UNDEFINED_DATATYPE

    public static final java.lang.String ERR_UNDEFINED_DATATYPE

See Also:
  Constant Field Values

### ERR_DATATYPE_ALREADY_DEFINED

    public static final java.lang.String ERR_DATATYPE_ALREADY_DEFINED

See Also:
  Constant Field Values

### ERR_MISSING_CHILD_EXPRESSION

    public static final java.lang.String ERR_MISSING_CHILD_EXPRESSION

See Also:
  Constant Field Values

### ERR_MORE_THAN_ONE_CHILD_EXPRESSION

    public static final java.lang.String ERR_MORE_THAN_ONE_CHILD_EXPRESSION

See Also:
  Constant Field Values

### ERR_MORE_THAN_ONE_CHILD_TYPE

    public static final java.lang.String ERR_MORE_THAN_ONE_CHILD_TYPE

See Also:
  Constant Field Values

### ERR_MISSING_CHILD_TYPE

    public static final java.lang.String ERR_MISSING_CHILD_TYPE

See Also:
  Constant Field Values

### ERR_ILLEGAL_FINAL_VALUE

    public static final java.lang.String ERR_ILLEGAL_FINAL_VALUE

See Also:
  Constant Field Values

### ERR_RUNAWAY_EXPRESSION

    public static final java.lang.String ERR_RUNAWAY_EXPRESSION

See Also:
  Constant Field Values

### ERR_MISSING_TOPLEVEL

    public static final java.lang.String ERR_MISSING_TOPLEVEL

See Also:
  Constant Field Values

### WRN_MAYBE_WRONG_NAMESPACE

    public static final java.lang.String WRN_MAYBE_WRONG_NAMESPACE

See Also:
  Constant Field Values

### WRN_DEPRECATED_TYPENAME

    public static final java.lang.String WRN_DEPRECATED_TYPENAME

See Also:
  Constant Field Values

### ERR_BAD_TYPE

    public static final java.lang.String ERR_BAD_TYPE

See Also:
  Constant Field Values

### ERR_RECURSIVE_DATATYPE

    public static final java.lang.String ERR_RECURSIVE_DATATYPE

See Also:
  Constant Field Values

Method Detail

### getResultAsGrammar

    public abstract Grammar getResultAsGrammar()

  gets the parsed AGM. Should any error happens, this method should returns null. derived classes should implement type-safe getGrammar method, along with this method.

### startPrefixMapping

    public void startPrefixMapping(java.lang.String prefix,
                                   java.lang.String uri)
                            throws org.xml.sax.SAXException

  Specified by:
    `startPrefixMapping` in interface `org.xml.sax.ContentHandler`
  Throws:
    `org.xml.sax.SAXException`

### endPrefixMapping

    public void endPrefixMapping(java.lang.String prefix)
                          throws org.xml.sax.SAXException

  Specified by:
    `endPrefixMapping` in interface `org.xml.sax.ContentHandler`
  Throws:
    `org.xml.sax.SAXException`

### iterateInscopeNamespaces

    public java.util.Iterator iterateInscopeNamespaces()

  Iterates Map.Entry objects which has the prefix as key and the namespace URI as value.

### splitQName

    public java.lang.String[] splitQName(java.lang.String qName)

  Resolves a QName into a pair of (namespace URI,local name). Therefore this method returns null if it fails to process QName.

### getBackwardCompatibleType

    public XSDatatype getBackwardCompatibleType(java.lang.String typeName)

  tries to obtain a DataType object by resolving obsolete names. this method is useful for backward compatibility purpose.

### resolveLocation

    public final org.xml.sax.InputSource resolveLocation(State sourceState,
                                                         java.lang.String uri)
                                                  throws AbortException

  obtains InputSource for the specified url. Also this method allows GrammarReaderController to redirect or prohibit inclusion.

  Parameters:
    `sourceState` - The base URI of this state is used to resolve the resource.
  Returns:
    always return non-null valid object
  Throws:
    `AbortException`

### combineURI

    public final java.lang.String combineURI(java.lang.String baseURI,
                                             java.lang.String relativeURI)

  converts the relative URL to the absolute one by using the specified base URL.

### combineURL

    public final java.lang.String combineURL(java.lang.String baseURI,
                                             java.lang.String relativeURI)

  Deprecated. use the combineURI method.

### switchSource

    public void switchSource(State sourceState,
                             java.lang.String url,
                             State newState)
                      throws AbortException

  Switchs InputSource to the specified URL and parses it by the specified state. The method will return after the parsing of the new source is completed. derived classes can use this method to realize semantics of 'include'.

  Parameters:
    `sourceState` - this state is used to resolve the URL.
    `newState` - this state will parse top-level of new XML source. this state receives document element by its createChildState method.
  Throws:
    `AbortException`

### switchSource

    public void switchSource(org.xml.sax.InputSource source,
                             State newState)

### parse

    public final void parse(java.lang.String source)

  parses a grammar from the specified source

  Specified by:
    `parse` in interface `org.xml.sax.XMLReader`

### parse

    public final void parse(org.xml.sax.InputSource source)

  parses a grammar from the specified source

  Specified by:
    `parse` in interface `org.xml.sax.XMLReader`

### _parse

    public final void _parse(java.lang.Object source,
                             org.xml.sax.Locator errorSource)

  parses a grammar from the specified source

### setDeclaredLocationOf

    public void setDeclaredLocationOf(java.lang.Object o)

### getDeclaredLocationOf

    public org.xml.sax.Locator getDeclaredLocationOf(java.lang.Object o)

### detectUndefinedOnes

    public void detectUndefinedOnes(ReferenceContainer container,
                                    java.lang.String errMsg)

  detects undefined ReferenceExp and reports it as an error. this method is used in the final wrap-up process of parsing.

### pushState

    public void pushState(State newState,
                          State parentState,
                          StartTagInfo startTag)

  pushs the current state into the stack and sets new one

### popState

    public void popState()

  pops the previous state from the stack

### getCurrentState

    public final State getCurrentState()

  gets current State object.

### createExpressionChildState

    public abstract State createExpressionChildState(State parent,
                                                     StartTagInfo tag)

  this method must be implemented by the derived class to create language-default expresion state.

  Returns:
    null if the start tag is an error.

### setDocumentLocator

    public void setDocumentLocator(org.xml.sax.Locator loc)

  Specified by:
    `setDocumentLocator` in interface `org.xml.sax.ContentHandler`

### resolveNamespacePrefix

    public java.lang.String resolveNamespacePrefix(java.lang.String prefix)

  Specified by:
    `resolveNamespacePrefix` in interface `ValidationContext`

### isUnparsedEntity

    public boolean isUnparsedEntity(java.lang.String entityName)

  Specified by:
    `isUnparsedEntity` in interface `ValidationContext`

### isNotation

    public boolean isNotation(java.lang.String notationName)

  Specified by:
    `isNotation` in interface `ValidationContext`

### getBaseUri

    public java.lang.String getBaseUri()

  Specified by:
    `getBaseUri` in interface `ValidationContext`

### onID

    public final void onID(Datatype dt,
                           StringToken token)

  Description copied from interface: `IDContextProvider2`
  this method is called when a type with ID semantics is matched. It is the callee's responsibility that stores ID and checks doubly defined ID, if it is necessary.

  Specified by:
    `onID` in interface `IDContextProvider2`

### addBackPatchJob

    public final void addBackPatchJob(GrammarReader.BackPatch job)

### addBackPatchJob

    public final void addBackPatchJob(XSDatatypeExp job)

### runBackPatchJob

    public final void runBackPatchJob()

  Performs all back-patchings.

### reportError

    public final void reportError(java.lang.String propertyName)

### reportError

    public final void reportError(java.lang.String propertyName,
                                  java.lang.Object arg1)

### reportError

    public final void reportError(java.lang.String propertyName,
                                  java.lang.Object arg1,
                                  java.lang.Object arg2)

### reportError

    public final void reportError(java.lang.String propertyName,
                                  java.lang.Object arg1,
                                  java.lang.Object arg2,
                                  java.lang.Object arg3)

### reportError

    public final void reportError(java.lang.Exception nestedException,
                                  java.lang.String propertyName)

### reportError

    public final void reportError(java.lang.Exception nestedException,
                                  java.lang.String propertyName,
                                  java.lang.Object arg1)

### reportError

    public final void reportError(org.xml.sax.Locator[] locs,
                                  java.lang.String propertyName,
                                  java.lang.Object[] args)

### reportWarning

    public final void reportWarning(java.lang.String propertyName)

### reportWarning

    public final void reportWarning(java.lang.String propertyName,
                                    java.lang.Object arg1)

### reportWarning

    public final void reportWarning(java.lang.String propertyName,
                                    java.lang.Object arg1,
                                    java.lang.Object arg2)

### reportError

    public final void reportError(java.lang.String propertyName,
                                  java.lang.Object[] args,
                                  java.lang.Exception nestedException,
                                  org.xml.sax.Locator[] errorLocations)

  reports an error to the controller

### reportWarning

    public final void reportWarning(java.lang.String propertyName,
                                    java.lang.Object[] args,
                                    org.xml.sax.Locator[] locations)

  reports a warning to the controller

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD