1 /*
   2  * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
   3  * @LastModified: Oct 2017
   4  */
   5 /*
   6  * Licensed to the Apache Software Foundation (ASF) under one or more
   7  * contributor license agreements.  See the NOTICE file distributed with
   8  * this work for additional information regarding copyright ownership.
   9  * The ASF licenses this file to You under the Apache License, Version 2.0
  10  * (the "License"); you may not use this file except in compliance with
  11  * the License.  You may obtain a copy of the License at
  12  *
  13  *      http://www.apache.org/licenses/LICENSE-2.0
  14  *
  15  * Unless required by applicable law or agreed to in writing, software
  16  * distributed under the License is distributed on an "AS IS" BASIS,
  17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  18  * See the License for the specific language governing permissions and
  19  * limitations under the License.
  20  */
  21 
  22 package com.sun.org.apache.xerces.internal.impl.validation;
  23 
  24 import java.util.Iterator;
  25 
  26 /**
  27  * <p>An extension of ValidationState which can be configured to turn
  28  * off checking for ID/IDREF errors and unparsed entity errors.</p>
  29  *
  30  * @xerces.internal
  31  *
  32  * @author Peter McCracken, IBM
  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      */
  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      */
  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      */
  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      */
  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      */
  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      */
  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      */
 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      */
 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      */
 125     public void addIdRef(String name) {
 126         if (fIdIdrefChecking) {
 127             super.addIdRef(name);
 128         }
 129     }
 130 }