1 /*
2  * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
3  */
4 /*
5  * Licensed to the Apache Software Foundation (ASF) under one or more
6  * contributor license agreements.  See the NOTICE file distributed with
7  * this work for additional information regarding copyright ownership.
8  * The ASF licenses this file to You under the Apache License, Version 2.0
9  * (the "License"); you may not use this file except in compliance with
10  * the License.  You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20 
21 package com.sun.org.apache.xerces.internal.impl.validation;
22 
23 import java.util.ArrayList;
24 import java.util.List;
25 
26 /**
27  * ValidationManager is a coordinator property for validators in the
28  * pipeline. Each validator must know how to interact with
29  * this property. Validators are not required to know what kind of
30  * other validators present in the pipeline, but should understand
31  * that there are others and that some coordination is required.
32  *
33  * @xerces.internal
34  *
35  * @author Elena Litani, IBM
36  * @LastModified: Oct 2017
37  */
38 public class ValidationManager {
39 
40     protected final List<ValidationState> fVSs = new ArrayList<>();
41     protected boolean fGrammarFound = false;
42 
43     // used by the DTD validator to tell other components that it has a
44     // cached DTD in hand so there's no reason to
45     // scan external subset or entity decls.
46     protected boolean fCachedDTD = false;
47 
48     /**
49      * Each validator should call this method to add its ValidationState into
50      * the validation manager.
51      */
addValidationState(ValidationState vs)52     public final void addValidationState(ValidationState vs) {
53         fVSs.add(vs);
54     }
55 
56     /**
57      * Set the information required to validate entity values.
58      */
setEntityState(EntityState state)59     public final void setEntityState(EntityState state) {
60         for (int i = fVSs.size()-1; i >= 0; i--) {
61             (fVSs.get(i)).setEntityState(state);
62         }
63     }
64 
setGrammarFound(boolean grammar)65     public final void setGrammarFound(boolean grammar){
66         fGrammarFound = grammar;
67     }
68 
isGrammarFound()69     public final boolean isGrammarFound(){
70         return fGrammarFound;
71     }
72 
setCachedDTD(boolean cachedDTD)73     public final void setCachedDTD(boolean cachedDTD) {
74         fCachedDTD = cachedDTD;
75     } // setCachedDTD(boolean)
76 
isCachedDTD()77     public final boolean isCachedDTD() {
78         return fCachedDTD;
79     } // isCachedDTD():  boolean
80 
81 
reset()82     public final void reset (){
83         fVSs.clear();
84         fGrammarFound = false;
85         fCachedDTD = false;
86     }
87 }
88