GrammarResolver.hpp
上传用户:huihehuasu
上传日期:2007-01-10
资源大小:6948k
文件大小:6k
源码类别:

xml/soap/webservice

开发平台:

C/C++

  1. /*
  2.  * The Apache Software License, Version 1.1
  3.  *
  4.  *
  5.  * Copyright (c) 2001 The Apache Software Foundation.  All rights
  6.  * reserved.
  7.  *
  8.  * Redistribution and use in source and binary forms, with or without
  9.  * modification, are permitted provided that the following conditions
  10.  * are met:
  11.  *
  12.  * 1. Redistributions of source code must retain the above copyright
  13.  *    notice, this list of conditions and the following disclaimer.
  14.  *
  15.  * 2. Redistributions in binary form must reproduce the above copyright
  16.  *    notice, this list of conditions and the following disclaimer in
  17.  *    the documentation and/or other materials provided with the
  18.  *    distribution.
  19.  *
  20.  * 3. The end-user documentation included with the redistribution,
  21.  *    if any, must include the following acknowledgment:
  22.  *       "This product includes software developed by the
  23.  *        Apache Software Foundation (http://www.apache.org/)."
  24.  *    Alternately, this acknowledgment may appear in the software itself,
  25.  *    if and wherever such third-party acknowledgments normally appear.
  26.  *
  27.  * 4. The names "Xerces" and "Apache Software Foundation" must
  28.  *    not be used to endorse or promote products derived from this
  29.  *    software without prior written permission. For written
  30.  *    permission, please contact apache@apache.org.
  31.  *
  32.  * 5. Products derived from this software may not be called "Apache",
  33.  *    nor may "Apache" appear in their name, without prior written
  34.  *    permission of the Apache Software Foundation.
  35.  *
  36.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  37.  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  38.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  39.  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  40.  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  41.  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  42.  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  43.  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  44.  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  45.  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  46.  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  47.  * SUCH DAMAGE.
  48.  * ====================================================================
  49.  *
  50.  * This software consists of voluntary contributions made by many
  51.  * individuals on behalf of the Apache Software Foundation and was
  52.  * originally based on software copyright (c) 2001, International
  53.  * Business Machines, Inc., http://www.apache.org.  For more
  54.  * information on the Apache Software Foundation, please see
  55.  * <http://www.apache.org/>.
  56.  */
  57. /**
  58.  * $Id: GrammarResolver.hpp,v 1.3 2001/08/09 15:24:37 knoaman Exp $
  59.  */
  60. #if !defined(GRAMMARRESOLVER_HPP)
  61. #define GRAMMARRESOLVER_HPP
  62. #include <util/RefHashTableOf.hpp>
  63. #include <util/StringPool.hpp>
  64. #include <validators/common/Grammar.hpp>
  65. class DatatypeValidator;
  66. class DatatypeValidatorFactory;
  67. /**
  68.  * This class embodies the representation of a Grammar pool Resolver.
  69.  * This class is called from the validator.
  70.  *
  71.  */
  72. class GrammarResolver {
  73. public:
  74.     /** @name Constructor and Destructor */
  75.     //@{
  76.     /**
  77.      *
  78.      * Default Constructor
  79.      */
  80.     GrammarResolver();
  81.     /**
  82.       * Destructor
  83.       */
  84.     ~GrammarResolver();
  85.     //@}
  86.     /** @name Getter methods */
  87.     //@{
  88.     /**
  89.      * Retrieve the DatatypeValidatorFactory Registry
  90.      * @return the DatatypeValidatorFactory Registry
  91.      */
  92.      DatatypeValidatorFactory* getDatatypeRegistry();
  93.     /**
  94.      * Retrieve the grammar that is associated with the specified namespace key
  95.      *
  96.      * @param  nameSpaceKey   Namespace key into Grammar pool
  97.      * @return Grammar abstraction associated with the NameSpace key.
  98.      */
  99.     Grammar* getGrammar( const XMLCh* const nameSpaceKey ) ;
  100.     /**
  101.      * Get an enumeration of Grammar in the Grammar pool
  102.      *
  103.      * @return enumeration of Grammar in Grammar pool
  104.      */
  105.     RefHashTableOfEnumerator<Grammar> getGrammarEnumerator() const;
  106.     /**
  107.      * Get a string pool of schema grammar element/attribute names/prefixes
  108.      * (used by TraverseSchema)
  109.      *
  110.      * @return a string pool of schema grammar element/attribute names/prefixes
  111.      */
  112.     XMLStringPool* getStringPool();
  113.     /**
  114.      * Is the specified Namespace key in Grammar pool?
  115.      *
  116.      * @param  nameSpaceKey    Namespace key
  117.      * @return True if Namespace key association is in the Grammar pool.
  118.      */
  119.     bool containsNameSpace( const XMLCh* const nameSpaceKey );
  120.     //@}
  121.     /** @name GrammarResolver methods */
  122.     //@{
  123.     /**
  124.      * Add the Grammar with Namespace Key associated to the Grammar Pool.
  125.      * The Grammar will be owned by the Grammar Pool.
  126.      *
  127.      * @param  nameSpaceKey    Key to associate with Grammar abstraction
  128.      * @param  grammarToAdopt  Grammar abstraction used by validator.
  129.      */
  130.     void putGrammar(const XMLCh* const nameSpaceKey, Grammar* const grammarToAdopt );
  131.     /**
  132.      * Remove the Grammar with Namespace Key associated from the Grammar Pool
  133.      *
  134.      * @param  nameSpaceKey    Key to associate with Grammar abstraction
  135.      */
  136.     void removeGrammar( const XMLCh* const nameSpaceKey );
  137.     /**
  138.      * Reset internal Namespace/Grammar registry.
  139.      */
  140.     void reset();
  141.     //@}
  142. private:
  143.     // -----------------------------------------------------------------------
  144.     //  Private data members
  145.     //
  146.     //  fStringPool          The string pool used by TraverseSchema to store
  147.     //                       element/attribute names and prefixes.
  148.     //
  149.     //  fGrammarRegistry     The Grammar Pool.  It represents a mapping
  150.     //                       between Namespace and a Grammar
  151.     //  fDataTypeReg         DatatypeValidatorFactory register
  152.     //
  153.     // -----------------------------------------------------------------------
  154.     XMLStringPool                fStringPool;
  155.     RefHashTableOf<Grammar>*     fGrammarRegistry;
  156.     DatatypeValidatorFactory*    fDataTypeReg;
  157. };
  158. inline XMLStringPool* GrammarResolver::getStringPool() {
  159.     return &fStringPool;
  160. }
  161. #endif