Class XMLGrammarPoolImpl

  • All Implemented Interfaces:
    XMLGrammarPool
    Direct Known Subclasses:
    CachingParserPool.ShadowedGrammarPool, XSGrammarPool

    public class XMLGrammarPoolImpl
    extends Object
    implements XMLGrammarPool
    Stores grammars in a pool associated to a specific key. This grammar pool implementation stores two types of grammars: those keyed by the root element name, and those keyed by the grammar's target namespace. This is the default implementation of the GrammarPool interface. As we move forward, this will become more function-rich and robust.
    Version:
    $Id$
    Author:
    Jeffrey Rodriguez, IBM, Andy Clark, IBM, Neil Graham, IBM, Pavani Mukthipudi, Sun Microsystems, Neeraj Bajaj, SUN Microsystems
    • Field Detail

      • fPoolIsLocked

        protected boolean fPoolIsLocked
      • fGrammarCount

        protected int fGrammarCount
    • Constructor Detail

      • XMLGrammarPoolImpl

        public XMLGrammarPoolImpl()
        Constructs a grammar pool with a default number of buckets.
      • XMLGrammarPoolImpl

        public XMLGrammarPoolImpl​(int initialCapacity)
        Constructs a grammar pool with a specified number of buckets.
    • Method Detail

      • retrieveInitialGrammarSet

        public Grammar[] retrieveInitialGrammarSet​(String grammarType)
        Description copied from interface: XMLGrammarPool

        retrieve the initial known set of grammars. this method is called by a validator before the validation starts. the application can provide an initial set of grammars available to the current validation attempt.

        Specified by:
        retrieveInitialGrammarSet in interface XMLGrammarPool
        Parameters:
        grammarType - the type of the grammar, from the org.smooks.engine.delivery.sax.ng.org.apache.xerces.xni.grammars.Grammar interface.
        Returns:
        the set of grammars the validator may put in its "bucket"
      • cacheGrammars

        public void cacheGrammars​(String grammarType,
                                  Grammar[] grammars)
        Description copied from interface: XMLGrammarPool

        return the final set of grammars that the validator ended up with. This method is called after the validation finishes. The application may then choose to cache some of the returned grammars.

        Specified by:
        cacheGrammars in interface XMLGrammarPool
        Parameters:
        grammarType - the type of the grammars being returned;
        grammars - an array containing the set of grammars being returned; order is not significant.
      • retrieveGrammar

        public Grammar retrieveGrammar​(XMLGrammarDescription desc)
        Description copied from interface: XMLGrammarPool

        This method requests that the application retrieve a grammar corresponding to the given GrammarIdentifier from its cache. If it cannot do so it must return null; the parser will then call the EntityResolver. An application must not call its EntityResolver itself from this method; this may result in infinite recursions.

        Specified by:
        retrieveGrammar in interface XMLGrammarPool
        Parameters:
        desc - The description of the Grammar being requested.
        Returns:
        the Grammar corresponding to this description or null if no such Grammar is known.
      • putGrammar

        public void putGrammar​(Grammar grammar)
        Puts the specified grammar into the grammar pool and associates it to its root element name or its target namespace.
        Parameters:
        grammar - The Grammar.
      • getGrammar

        public Grammar getGrammar​(XMLGrammarDescription desc)
        Returns the grammar associated to the specified grammar description. Currently, the root element name is used as the key for DTD grammars and the target namespace is used as the key for Schema grammars.
        Parameters:
        desc - The Grammar Description.
      • removeGrammar

        public Grammar removeGrammar​(XMLGrammarDescription desc)
        Removes the grammar associated to the specified grammar description from the grammar pool and returns the removed grammar. Currently, the root element name is used as the key for DTD grammars and the target namespace is used as the key for Schema grammars.
        Parameters:
        desc - The Grammar Description.
        Returns:
        The removed grammar.
      • containsGrammar

        public boolean containsGrammar​(XMLGrammarDescription desc)
        Returns true if the grammar pool contains a grammar associated to the specified grammar description. Currently, the root element name is used as the key for DTD grammars and the target namespace is used as the key for Schema grammars.
        Parameters:
        desc - The Grammar Description.
      • lockPool

        public void lockPool()
        Description copied from interface: XMLGrammarPool
        Causes the XMLGrammarPool not to store any grammars when the cacheGrammars(String, Grammar[[]) method is called.
        Specified by:
        lockPool in interface XMLGrammarPool
      • unlockPool

        public void unlockPool()
        Description copied from interface: XMLGrammarPool
        Allows the XMLGrammarPool to store grammars when its cacheGrammars(String, Grammar[]) method is called. This is the default state of the object.
        Specified by:
        unlockPool in interface XMLGrammarPool
      • clear

        public void clear()
        Description copied from interface: XMLGrammarPool
        Removes all grammars from the pool.
        Specified by:
        clear in interface XMLGrammarPool
      • equals

        public boolean equals​(XMLGrammarDescription desc1,
                              XMLGrammarDescription desc2)
        This method checks whether two grammars are the same. Currently, we compare the root element names for DTD grammars and the target namespaces for Schema grammars. The application can override this behaviour and add its own logic.
        Parameters:
        desc1 - The grammar description
        desc2 - The grammar description of the grammar to be compared to
        Returns:
        True if the grammars are equal, otherwise false
      • hashCode

        public int hashCode​(XMLGrammarDescription desc)
        Returns the hash code value for the given grammar description.
        Parameters:
        desc - The grammar description
        Returns:
        The hash code value