1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package org.apache.any23.validator; 19 20 import org.w3c.dom.Document; 21 22 import java.net.URI; 23 import java.util.List; 24 25 /** 26 * The validator class allows to perform validation - correction of related to <i>HTML</i> {@link org.w3c.dom.Document} 27 * instances. 28 * 29 * @author Michele Mostarda (mostarda@fbk.eu) 30 * @author Davide Palmisano (palmisano@fbk.eu) 31 */ 32 public interface Validator { 33 34 /** 35 * Performs a validation - fixing of the provided document. 36 * 37 * @param document 38 * the {@link DOMDocument} instance wrapping the original <i>HTML</i> document. 39 * @param applyFix 40 * if <code>true</code> tries to fix the document. 41 * 42 * @return a report of the detected issues. 43 * 44 * @throws ValidatorException 45 * if an error occurs during the validation process. 46 */ 47 ValidationReport validate(DOMDocument document, boolean applyFix) throws ValidatorException; 48 49 /** 50 * Performs a validation - fixing of the provided document. 51 * 52 * @param documentIRI 53 * the document source IRI. 54 * @param document 55 * the original <i>HTML</i> document. 56 * @param applyFix 57 * if <code>true</code> tries to fix the document. 58 * 59 * @return a report of the detected issues. 60 * 61 * @throws ValidatorException 62 * if an error occurs during the validation process. 63 */ 64 ValidationReport validate(URI documentIRI, Document document, boolean applyFix) throws ValidatorException; 65 66 /** 67 * Allows to register a new rule to this validator 68 * 69 * @param rule 70 * add a configured {@link org.apache.any23.validator.Rule} 71 */ 72 void addRule(Class<? extends Rule> rule); 73 74 /** 75 * Allows to register a new rule to this validator and associating it to a fix. 76 * 77 * @param rule 78 * add a configured {@link org.apache.any23.validator.Rule} 79 * @param fix 80 * add a configured {@link org.apache.any23.validator.Fix} for the rule 81 */ 82 void addRule(Class<? extends Rule> rule, Class<? extends Fix> fix); 83 84 /** 85 * Allows to remove a rule from the validator and all the related {@link Fix}es. 86 * 87 * @param rule 88 * {@link org.apache.any23.validator.Rule} to remove 89 */ 90 void removeRule(Class<? extends Rule> rule); 91 92 /** 93 * Returns all the registered rules. 94 * 95 * @return a not null list of rules. 96 */ 97 List<Class<? extends Rule>> getAllRules(); 98 99 /** 100 * Returns all fixes registered for the give rule. 101 * 102 * @param rule 103 * {@link org.apache.any23.validator.Rule} to obtain fixes for. 104 * 105 * @return a not null list of fixes. 106 */ 107 List<Class<? extends Fix>> getFixes(Class<? extends Rule> rule); 108 109 }