| //////////////////////////////////////////////////////////////////////////////// |
| // checkstyle: Checks Java source code for adherence to a set of rules. |
| // Copyright (C) 2001-2017 the original author or authors. |
| // |
| // This library is free software; you can redistribute it and/or |
| // modify it under the terms of the GNU Lesser General Public |
| // License as published by the Free Software Foundation; either |
| // version 2.1 of the License, or (at your option) any later version. |
| // |
| // This library is distributed in the hope that it will be useful, |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| // Lesser General Public License for more details. |
| // |
| // You should have received a copy of the GNU Lesser General Public |
| // License along with this library; if not, write to the Free Software |
| // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| package com.puppycrawl.tools.checkstyle.xpath; |
| |
| import com.puppycrawl.tools.checkstyle.api.DetailAST; |
| import net.sf.saxon.om.NodeInfo; |
| import net.sf.saxon.tree.iter.AxisIterator; |
| import net.sf.saxon.type.Type; |
| |
| /** |
| * Represents attribute of the element. |
| * |
| * @author Timur Tibeyev |
| */ |
| public class AttributeNode extends AbstractNode { |
| /** The name of the attribute. */ |
| private final String name; |
| |
| /** The value of the attribute. */ |
| private final String value; |
| |
| /** |
| * Creates a new {@code AttributeNode} instance. |
| * |
| * @param name name of the attribute |
| * @param value value of the attribute |
| */ |
| public AttributeNode(String name, String value) { |
| this.name = name; |
| this.value = value; |
| } |
| |
| /** |
| * Returns attribute value. Throws {@code UnsupportedOperationException} because attribute node |
| * has no attributes. |
| * @param namespace namespace |
| * @param localPart actual name of the attribute |
| * @return attribute value |
| */ |
| @Override |
| public String getAttributeValue(String namespace, String localPart) { |
| throw throwUnsupportedOperationException(); |
| } |
| |
| /** |
| * Returns local part. |
| * @return local part |
| */ |
| // -@cs[SimpleAccessorNameNotation] Overrides method from the base class. |
| // Issue: https://github.com/sevntu-checkstyle/sevntu.checkstyle/issues/166 |
| @Override |
| public String getLocalPart() { |
| return name; |
| } |
| |
| /** |
| * Returns type of the node. |
| * @return node kind |
| */ |
| @Override |
| public int getNodeKind() { |
| return Type.ATTRIBUTE; |
| } |
| |
| /** |
| * Returns parent. Never called for attribute node, throws |
| * {@code UnsupportedOperationException}. |
| * has no attributes. |
| * @return parent |
| */ |
| @Override |
| public NodeInfo getParent() { |
| throw throwUnsupportedOperationException(); |
| } |
| |
| /** |
| * Returns root. Never called for attribute node, throws |
| * {@code UnsupportedOperationException}. |
| * @return root |
| */ |
| @Override |
| public NodeInfo getRoot() { |
| throw throwUnsupportedOperationException(); |
| } |
| |
| /** |
| * Returns string value. |
| * @return string value |
| */ |
| // -@cs[SimpleAccessorNameNotation] Overrides method from the base class. |
| // Issue: https://github.com/sevntu-checkstyle/sevntu.checkstyle/issues/166 |
| @Override |
| public String getStringValue() { |
| return value; |
| } |
| |
| /** |
| * Determines axis iteration algorithm. Attribute node can not be iterated, throws |
| * {@code UnsupportedOperationException}. |
| * |
| * @param axisNumber element from {@code AxisInfo} |
| * @return {@code AxisIterator} object |
| */ |
| @Override |
| public AxisIterator iterateAxis(byte axisNumber) { |
| throw throwUnsupportedOperationException(); |
| } |
| |
| /** |
| * Returns line number. Attribute node has no line number, throws |
| * {@code UnsupportedOperationException}. |
| * @return line number |
| */ |
| @Override |
| public int getLineNumber() { |
| throw throwUnsupportedOperationException(); |
| } |
| |
| /** |
| * Returns column number. Attribute node has no column number, throws |
| * {@code UnsupportedOperationException}. |
| * @return column number |
| */ |
| @Override |
| public int getColumnNumber() { |
| throw throwUnsupportedOperationException(); |
| } |
| |
| /** |
| * Getter method for token type. Attribute node has no token type, throws |
| * {@code UnsupportedOperationException}. |
| * @return token type |
| */ |
| @Override |
| public int getTokenType() { |
| throw throwUnsupportedOperationException(); |
| } |
| |
| /** |
| * Returns underlying node. Attribute node has no underlying node, throws |
| * {@code UnsupportedOperationException}. |
| * @return underlying node |
| */ |
| @Override |
| public DetailAST getUnderlyingNode() { |
| throw throwUnsupportedOperationException(); |
| } |
| |
| /** |
| * Returns UnsupportedOperationException exception. |
| * @return UnsupportedOperationException exception |
| */ |
| private static UnsupportedOperationException throwUnsupportedOperationException() { |
| return new UnsupportedOperationException("Operation is not supported"); |
| } |
| } |