io.burt.jmespath.node.CreateArrayNode Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jmespath-core Show documentation
Show all versions of jmespath-core Show documentation
A JMESPath implementation for Java
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;
}
}