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

    Modifier and Type
    Method
    Description
    <T extends Path.Node>
    T
    as(Class<T> nodeType)
    Narrows the type of this node down to the given type.
     
     
    The kind of element represented by the node.
    Returns the name of the element which the node represents: null if it is a leaf node which represents an entity / bean.
    boolean
     
  • Method Details

    • 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:

      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