javax.validation

## Interface Path.Node

- All Known Subinterfaces:
    Path.BeanNode, Path.ConstructorNode, Path.CrossParameterNode, Path.MethodNode, Path.ParameterNode, Path.PropertyNode, Path.ReturnValueNode
  Enclosing interface:
    Path

      public static interface Path.Node

  Represents an element of a navigation path.

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `<T extends Path.Node> T` | `as(Class<T> nodeType)` Narrows the type of this node down to the given type.
    `Integer` | `getIndex()`
    `Object` | `getKey()`
    `ElementKind` | `getKind()` The kind of element represented by the node.
    `String` | `getName()` Returns the name of the element which the node represents: `null` if it is a leaf node which represents an entity / bean.
    `boolean` | `isInIterable()`

- - ### Method Detail

    - #### getName

          String getName()

      Returns the name of the element which the node represents:
      - `null` if it is a leaf node which represents an entity / bean. In particular, the node representing the root object.
      - The property name for a property.
      - The method name for a method.
      - The unqualified name of the type declaring the constructor for a constructor.
      - The parameter named as defined by the `ParameterNameProvider` for a method or constructor parameter.
      - The literal `<cross-parameter>` for a method or constructor cross-parameter.
      - The literal `<return value>` for a method or constructor return value.
      Returns:
        name of the element which the node represents

    - #### isInIterable

          boolean isInIterable()

      Returns:
        `true` if the node represents an object contained in an `Iterable` or in a `Map`, `false` otherwise

    - #### getIndex

          Integer getIndex()

      Returns:
        the index the node is placed in if contained in an array or `List`; `null` otherwise

    - #### getKey

          Object getKey()

      Returns:
        the key the node is placed in if contained in a `Map`, `null` otherwise

    - #### getKind

          ElementKind getKind()

      The kind of element represented by the node. The following relationship between an `ElementKind` and its `Node` subtype exists:
      - `ElementKind.BEAN`: `Path.BeanNode`
      - `ElementKind.PROPERTY`: `Path.PropertyNode`
      - `ElementKind.METHOD`: `Path.MethodNode`
      - `ElementKind.CONSTRUCTOR`: `Path.ConstructorNode`
      - `ElementKind.PARAMETER`: `Path.ParameterNode`
      - `ElementKind.CROSS_PARAMETER`: `Path.CrossParameterNode`
      - `ElementKind.RETURN_VALUE`: `Path.ReturnValueNode`

      This is useful to narrow down the `Node` type and access node specific information:

           switch(node.getKind() {
           case METHOD:
               name = node.getName();
               params = node.as(MethodNode.class).getParameterTypes();
           case PARAMETER:
               index = node.as(ParameterNode.class).getParameterIndex();
           [...]
           }

      Returns:
        the `ElementKind`
      Since:
        1.1

    - #### as

          <T extends Path.Node> T as(Class<T> nodeType)

      Narrows the type of this node down to the given type. The appropriate type should be checked before by calling `getKind()`.
      Type Parameters:
        `T` - the type to narrow down to
      Parameters:
        `nodeType` - class object representing the descriptor type to narrow down to to
      Returns:
        this node narrowed down to the given type.
      Throws:
        `ClassCastException` - If this node is not assignable to the type `T`
      Since:
        1.1

Copyright © 1996-2013, Oracle and/or its affiliates. All Rights Reserved. Use is subject to license terms.