Class ArrayNode

java.lang.Object
software.amazon.smithy.model.node.Node
software.amazon.smithy.model.node.ArrayNode
All Implemented Interfaces:
Iterable<Node>, FromSourceLocation, ToNode, ToSmithyBuilder<ArrayNode>

public final class ArrayNode extends Node implements Iterable<Node>, ToSmithyBuilder<ArrayNode>
Represents an array of nodes.
  • Constructor Details

  • Method Details

    • builder

      public static ArrayNode.Builder builder()
    • toBuilder

      public SmithyBuilder<ArrayNode> toBuilder()
      Description copied from interface: ToSmithyBuilder
      Take this object and create a builder that contains all of the current property values of this object.
      Specified by:
      toBuilder in interface ToSmithyBuilder<ArrayNode>
      Returns:
      a builder for type T
    • iterator

      public Iterator<Node> iterator()
      Specified by:
      iterator in interface Iterable<Node>
    • getType

      public NodeType getType()
      Description copied from class: Node
      Gets the type of the node.
      Specified by:
      getType in class Node
      Returns:
      Returns the node type.
    • accept

      public <R> R accept(NodeVisitor<R> visitor)
      Description copied from class: Node
      Accepts a visitor with the node.
      Specified by:
      accept in class Node
      Type Parameters:
      R - visitor return type.
      Parameters:
      visitor - Visitor to dispatch to.
      Returns:
      Returns the accepted result.
    • expectArrayNode

      public ArrayNode expectArrayNode(String errorMessage)
      Description copied from class: Node
      Casts the current node to an ArrayNode, throwing ExpectationNotMetException when the node is the wrong type.
      Overrides:
      expectArrayNode in class Node
      Parameters:
      errorMessage - Error message to use if the node is of the wrong type.
      Returns:
      Returns an array node.
    • expectArrayNode

      public ArrayNode expectArrayNode(Supplier<String> errorMessage)
      Description copied from class: Node
      Casts the current node to an ArrayNode, throwing ExpectationNotMetException when the node is the wrong type.
      Overrides:
      expectArrayNode in class Node
      Parameters:
      errorMessage - Error message supplier.
      Returns:
      Returns an array node.
    • asArrayNode

      public Optional<ArrayNode> asArrayNode()
      Description copied from class: Node
      Gets the node as an ArrayNode if it is an array.
      Overrides:
      asArrayNode in class Node
      Returns:
      Returns the optional array node.
    • getElements

      public List<Node> getElements()
      Gets the list of nodes.
      Returns:
      Returns a list of nodes.
    • get

      public Optional<Node> get(int index)
      Gets a node from the given index.
      Parameters:
      index - Index of the value to get.
      Returns:
      Returns an optional node at the given index.
    • isEmpty

      public boolean isEmpty()
      Returns true if the array node is empty.
      Returns:
      Returns true if the array node is empty.
    • size

      public int size()
      Returns the number of elements in the array node.
      Returns:
      Returns the number of elements in the array node.
    • withValue

      public ArrayNode withValue(Node node)
      Copies the values from the current array node, adding the given node, returning them in a new ArrayNode.
      Parameters:
      node - The node to add.
      Returns:
      Returns a new array node.
    • getElementsAs

      public <T extends Node> List<T> getElementsAs(Class<T> type)
      Gets the elements of the array as a list of a specific type of Node.
      Type Parameters:
      T - Type of Node to expect in each position.
      Parameters:
      type - Type of Node to expect in each position.
      Returns:
      Returns the List of the specified type.
      Throws:
      ExpectationNotMetException - if the list contains elements of a different type.
    • getElementsAs

      public <T, K extends Node> List<T> getElementsAs(Function<K,T> f)
      Gets the elements of the ArrayNode as a specific type by applying a mapping function to each node.

      Each Node is cast to K and then mapped with the provided function to return type T.

      
       ArrayNode array = Node.fromStrings("foo", "baz", "bar");
       List<String> strings = array.getElementsAs(StringNode::getValue);
       
      Type Parameters:
      K - Expected Node type.
      T - Mapping function return value.
      Parameters:
      f - Mapping function that takes K and return T.
      Returns:
      Returns the List of type T.
      Throws:
      ExpectationNotMetException - if the list contains elements of a different type than K.
    • merge

      public ArrayNode merge(ArrayNode other)
      Merges two ArrayNodes into a new ArrayNode.

      If the current node has a source location, it is applied to the result. Otherwise, the source location of other is applied to the result.

      Parameters:
      other - Node to merge with.
      Returns:
      Returns a new merged array node.
    • collect

      public static <T extends ToNode> Collector<T,List<Node>,ArrayNode> collect()
      Type Parameters:
      T - Type of value in the collection.
      Returns:
      Creates a collector that create an ArrayNode.
    • collect

      public static <T extends ToNode> Collector<T,List<Node>,ArrayNode> collect(SourceLocation sloc)
      Type Parameters:
      T - Type of value in the collection.
      Parameters:
      sloc - Source location to use on the created node.
      Returns:
      Creates a collector that create an ArrayNode.
    • equals

      public boolean equals(Object other)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object