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

Classes in this File | Line Coverage | Branch Coverage | Complexity
MissingOpenGraphNamespaceRule |
0% | 0/16
0% | 0/10
| 4.0;4

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.List;
28 |  |
29 |  |
     /**
30 |  |
      * This rule detects the issue of missing Open Graph namespace.
31 |  |
      *
32 |  |
      * @see OpenGraphNamespaceFix
33 |  |
      * @author Michele Mostarda (mostarda@fbk.eu)
34 |  |
      * @author Davide Palmisano (palmisano@fbk.eu)
35 |  |
      */
36 | 0 |
     public class MissingOpenGraphNamespaceRule implements Rule {
37 |  |
38 |  |
         public String getHRName() {
39 | 0 |
             return "missing-opengraph-namespace-rule";
40 |  |
         }
41 |  |
42 |  |
         public boolean applyOn(
43 |  |
                 DOMDocument document,
44 |  |
                 RuleContext context,
45 |  |
                 ValidationReportBuilder validationReportBuilder
46 |  |
         ) {
47 | 0 |
             List<Node> metas = document.getNodes("/HTML/HEAD/META");
48 | 0 |
             boolean foundPrecondition = false;
49 | 0 |
             for(Node meta : metas) {
50 | 0 |
                 Node propertyNode = meta.getAttributes().getNamedItem("property");
51 | 0 |
                 if( propertyNode != null && propertyNode.getTextContent().indexOf("og:") == 0) {
52 | 0 |
                     foundPrecondition = true;
53 | 0 |
                     break;
54 |  |
                 }
55 | 0 |
             }
56 | 0 |
             if(foundPrecondition) {
57 | 0 |
                 Node htmlNode = document.getNode("/HTML");
58 | 0 |
                 if( htmlNode.getAttributes().getNamedItem("xmlns:og") == null) {
59 | 0 |
                     validationReportBuilder.reportIssue(
60 |  |
                             ValidationReport.IssueLevel.error,
61 |  |
                             "Missing OpenGraph namespace declaration.",
62 |  |
                             htmlNode
63 |  |
                     );
64 | 0 |
                     return true;
65 |  |
                 }
66 |  |
             }
67 | 0 |
             return false;
68 |  |
         }
69 |  |
     }