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.Iterator;
24 
25 /**
26  * <p>An extension of ValidationState which can be configured to turn
27  * off checking for ID/IDREF errors and unparsed entity errors.</p>
28  *
29  * @xerces.internal
30  *
31  * @author Peter McCracken, IBM
32  * @LastModified: Oct 2017
33  */
34 public final class ConfigurableValidationState extends ValidationState {
35 
36     /**
37      * Whether to check for ID/IDREF errors
38      */
39     private boolean fIdIdrefChecking;
40 
41     /**
42      * Whether to check for unparsed entity errors
43      */
44     private boolean fUnparsedEntityChecking;
45 
46     /**
47      * Creates a new ConfigurableValidationState.
48      * By default, error checking for both ID/IDREFs
49      * and unparsed entities are turned on.
50      */
ConfigurableValidationState()51     public ConfigurableValidationState() {
52         super();
53         fIdIdrefChecking = true;
54         fUnparsedEntityChecking = true;
55     }
56 
57     /**
58      * Turns checking for ID/IDREF errors on and off.
59      * @param setting true to turn on error checking,
60      *                 false to turn off error checking
61      */
setIdIdrefChecking(boolean setting)62     public void setIdIdrefChecking(boolean setting) {
63         fIdIdrefChecking = setting;
64     }
65 
66     /**
67      * Turns checking for unparsed entity errors on and off.
68      * @param setting true to turn on error checking,
69      *                 false to turn off error checking
70      */
setUnparsedEntityChecking(boolean setting)71     public void setUnparsedEntityChecking(boolean setting) {
72         fUnparsedEntityChecking = setting;
73     }
74 
75     /**
76      * Checks if all IDREFs have a corresponding ID.
77      * @return null, if ID/IDREF checking is turned off
78      *         otherwise, returns the value of the super implementation
79      */
checkIDRefID()80     public Iterator<String> checkIDRefID() {
81         return (fIdIdrefChecking) ? super.checkIDRefID() : null;
82     }
83 
84     /**
85      * Checks if an ID has already been declared.
86      * @return false, if ID/IDREF checking is turned off
87      *         otherwise, returns the value of the super implementation
88      */
isIdDeclared(String name)89     public boolean isIdDeclared(String name) {
90         return (fIdIdrefChecking) ? super.isIdDeclared(name) : false;
91     }
92 
93     /**
94      * Checks if an entity is declared.
95      * @return true, if unparsed entity checking is turned off
96      *         otherwise, returns the value of the super implementation
97      */
isEntityDeclared(String name)98     public boolean isEntityDeclared(String name) {
99         return (fUnparsedEntityChecking) ? super.isEntityDeclared(name) : true;
100     }
101 
102     /**
103      * Checks if an entity is unparsed.
104      * @return true, if unparsed entity checking is turned off
105      *         otherwise, returns the value of the super implementation
106      */
isEntityUnparsed(String name)107     public boolean isEntityUnparsed(String name) {
108         return (fUnparsedEntityChecking) ? super.isEntityUnparsed(name) : true;
109     }
110 
111     /**
112      * Adds the ID, if ID/IDREF checking is enabled.
113      * @param name the ID to add
114      */
addId(String name)115     public void addId(String name) {
116         if (fIdIdrefChecking) {
117             super.addId(name);
118         }
119     }
120 
121     /**
122      * Adds the IDREF, if ID/IDREF checking is enabled.
123      * @param name the IDREF to add
124      */
addIdRef(String name)125     public void addIdRef(String name) {
126         if (fIdIdrefChecking) {
127             super.addIdRef(name);
128         }
129     }
130 }
131