JsonDomNodeList.java
package de.larssh.json.dom;
import static java.util.Collections.unmodifiableList;
import java.util.List;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import de.larssh.utils.Nullables;
import de.larssh.utils.collection.ProxiedList;
import edu.umd.cs.findbugs.annotations.NonNull;
/**
* {@link List} based {@link NodeList} implementation
*
* @param <E> node element type
*/
public class JsonDomNodeList<E extends Node> extends ProxiedList<E> implements NodeList {
/**
* Constructor to create a {@link JsonDomNodeList} based on {@code list}.
*
* @param list list of nodes
*/
public JsonDomNodeList(final List<E> list) {
super(unmodifiableList(list));
}
/** {@inheritDoc} */
@Override
public int getLength() {
return size();
}
/** {@inheritDoc} */
@NonNull
@Override
public E item(final int index) {
return Nullables.orElseThrow(get(index));
}
/** {@inheritDoc} */
@Override
public boolean isModifiable() {
return false;
}
}