##### Coverage Report - org.apache.any23.validator.rule.MetaNameMisuseRule

Classes in this File | Line Coverage | Branch Coverage | Complexity
MetaNameMisuseRule |
0% | 0/14
0% | 0/6
| 2.5;2.5

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.rule;
19 |  |
20 |  |
     import org.apache.any23.validator.DOMDocument;
21 |  |
     import org.apache.any23.validator.Rule;
22 |  |
     import org.apache.any23.validator.RuleContext;
23 |  |
     import org.apache.any23.validator.ValidationReport;
24 |  |
     import org.apache.any23.validator.ValidationReportBuilder;
25 |  |
     import org.w3c.dom.Node;
26 |  |
27 |  |
     import java.util.ArrayList;
28 |  |
     import java.util.List;
29 |  |
30 |  |
     /**
31 |  |
      * Checks whether the meta attribute name is used to contain a property.
32 |  |
      *
33 |  |
      * @see MetaNameMisuseFix
34 |  |
      * @author Davide Palmisano (palmisano@fbk.eu)
35 |  |
      * @author Michele Mostarda (mostarda@fbk.eu)
36 |  |
      */
37 | 0 |
     public class MetaNameMisuseRule implements Rule {
38 |  |
39 |  |
         public static final String ERRORED_META_NODES = "errored-meta-nodes";
40 |  |
41 |  |
         public String getHRName() {
42 | 0 |
             return "meta-name-misuse-rule";
43 |  |
         }
44 |  |
45 |  |
         public boolean applyOn(
46 |  |
                 DOMDocument document,
47 |  |
                 RuleContext context,
48 |  |
                 ValidationReportBuilder validationReportBuilder
49 |  |
         ) {
50 | 0 |
             List<Node> metaNodes = document.getNodes("/HTML/HEAD/META");
51 | 0 |
             boolean foundIssue = false;
52 | 0 |
             final List<Node> wrongMetaNodes = new ArrayList<Node>();
53 | 0 |
             for(Node metaNode : metaNodes) {
54 | 0 |
                 Node nameNode = metaNode.getAttributes().getNamedItem("name");
55 | 0 |
                 if(nameNode != null && nameNode.getTextContent().contains(":")) {
56 | 0 |
                     foundIssue = true;
57 | 0 |
                     wrongMetaNodes.add(metaNode);
58 | 0 |
                     validationReportBuilder.reportIssue(
59 |  |
                             ValidationReport.IssueLevel.error,
60 |  |
                             "Error detected in meta node: name property contains a prefixed value.",
61 |  |
                             metaNode
62 |  |
                     );
63 |  |
                 }
64 | 0 |
             }
65 | 0 |
             context.putData(ERRORED_META_NODES, wrongMetaNodes);
66 | 0 |
             return foundIssue;
67 |  |
         }
68 |  |
69 |  |
     }