001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package org.apache.xerces.impl.dtd;
019:
020: import org.apache.xerces.xni.grammars.XMLGrammarDescription;
021: import java.util.Hashtable;
022:
023: /**
024: * This very simple class is the skeleton of what the DTDValidator could use
025: * to store various grammars that it gets from the GrammarPool. As in the
026: * case of XSGrammarBucket, one thinks of this object as being closely
027: * associated with its validator; when fully mature, this class will be
028: * filled from the GrammarPool when the DTDValidator is invoked on a
029: * document, and, if a new DTD grammar is parsed, the new set will be
030: * offered back to the GrammarPool for possible inclusion.
031: *
032: * @xerces.internal
033: *
034: * @author Neil Graham, IBM
035: *
036: * @version $Id: DTDGrammarBucket.java 572055 2007-09-02 17:55:43Z mrglavas $
037: */
038: public class DTDGrammarBucket {
039:
040: // REVISIT: make this class smarter and *way* more complete!
041:
042: //
043: // Data
044: //
045:
046: /** Grammars associated with element root name. */
047: protected final Hashtable fGrammars;
048:
049: // the unique grammar from fGrammars (or that we're
050: // building) that is used in validation.
051: protected DTDGrammar fActiveGrammar;
052:
053: // is the "active" grammar standalone?
054: protected boolean fIsStandalone;
055:
056: //
057: // Constructors
058: //
059:
060: /** Default constructor. */
061: public DTDGrammarBucket() {
062: fGrammars = new Hashtable();
063: } // <init>()
064:
065: //
066: // Public methods
067: //
068:
069: /**
070: * Puts the specified grammar into the grammar pool and associate it to
071: * a root element name (this being internal, the lack of generality is irrelevant).
072: *
073: * @param grammar The grammar.
074: */
075: public void putGrammar(DTDGrammar grammar) {
076: XMLDTDDescription desc = (XMLDTDDescription) grammar
077: .getGrammarDescription();
078: fGrammars.put(desc, grammar);
079: } // putGrammar(DTDGrammar)
080:
081: // retrieve a DTDGrammar given an XMLDTDDescription
082: public DTDGrammar getGrammar(XMLGrammarDescription desc) {
083: return (DTDGrammar) (fGrammars.get((XMLDTDDescription) desc));
084: } // putGrammar(DTDGrammar)
085:
086: public void clear() {
087: fGrammars.clear();
088: fActiveGrammar = null;
089: fIsStandalone = false;
090: } // clear()
091:
092: // is the active grammar standalone? This must live here because
093: // at the time the validator discovers this we don't yet know
094: // what the active grammar should be (no info about root)
095: void setStandalone(boolean standalone) {
096: fIsStandalone = standalone;
097: }
098:
099: boolean getStandalone() {
100: return fIsStandalone;
101: }
102:
103: // set the "active" grammar:
104: void setActiveGrammar(DTDGrammar grammar) {
105: fActiveGrammar = grammar;
106: }
107:
108: DTDGrammar getActiveGrammar() {
109: return fActiveGrammar;
110: }
111: } // class DTDGrammarBucket
|