All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.burt.jmespath.node.CreateArrayNode Maven / Gradle / Ivy

There is a newer version: 0.6.0
Show newest version
package io.burt.jmespath.node;

import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;

import io.burt.jmespath.Adapter;
import io.burt.jmespath.Expression;
import io.burt.jmespath.JmesPathType;

public class CreateArrayNode extends Node {
  private final List> entries;

  public CreateArrayNode(Adapter runtime, List> entries) {
    super(runtime);
    this.entries = new ArrayList<>(entries);
  }

  @Override
  public T search(T input) {
    if (runtime.typeOf(input) == JmesPathType.NULL) {
      return input;
    } else {
      List array = new ArrayList<>();
      for (Expression entry : entries) {
        array.add(entry.search(input));
      }
      return runtime.createArray(array);
    }
  }

  @Override
  protected String internalToString() {
    StringBuilder str = new StringBuilder("[");
    Iterator> entryIterator = entries.iterator();
    while (entryIterator.hasNext()) {
      Expression entry = entryIterator.next();
      str.append(entry);
      if (entryIterator.hasNext()) {
        str.append(", ");
      }
    }
    str.append(']');
    return str.toString();
  }

  @Override
  protected boolean internalEquals(Object o) {
    CreateArrayNode other = (CreateArrayNode) o;
    return entries.equals(other.entries);
  }

  @Override
  protected int internalHashCode() {
    int h = 1;
    for (Expression node : entries) {
      h = h * 31 + node.hashCode();
    }
    return h;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy