View Javadoc

    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.Fix;
    22  import org.apache.any23.validator.Rule;
    23  import org.apache.any23.validator.RuleContext;
    24  import org.w3c.dom.Node;
    25
    26  import java.util.List;
    27
    28  /**
    29   * Fixes the misuse of the meta name attribute.
    30   *
    31   * @see MetaNameMisuseRule
    32   *
    33   * @author Michele Mostarda (mostarda@fbk.eu)
    34   * @author Davide Palmisano (palmisano@fbk.eu)
    35   */
    36  public class MetaNameMisuseFix implements Fix {
    37
    38      @Override
    39      public String getHRName() {
    40          return "meta-name-misuse-fix";
    41      }
    42
    43      @Override
    44      @SuppressWarnings("unchecked")
    45      public void execute(Rule rule, @SuppressWarnings("rawtypes") RuleContext context, DOMDocument document) {
    46          List<Node> nodes = (List<Node>) context.getData(MetaNameMisuseRule.ERRORED_META_NODES);
    47          for (Node node : nodes) {
    48              final String nameValue = node.getAttributes().getNamedItem("name").getTextContent();
    49              node.getAttributes().removeNamedItem("name");
    50              Node propertyNode = document.getOriginalDocument().createAttribute("property");
    51              propertyNode.setNodeValue(nameValue);
    52              node.getAttributes().setNamedItem(propertyNode);
    53          }
    54      }
    55
    56  }