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 }