![JAR search and dependency download from the Maven repository](/logo.png)
org.codehaus.jackson.node.ContainerNode Maven / Gradle / Ivy
Go to download
Data Mapper package is a high-performance data binding package
built on Jackson JSON processor
package org.codehaus.jackson.node;
import java.math.BigDecimal;
import java.util.Iterator;
import java.util.NoSuchElementException;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonToken;
/**
* This intermediate base class is used for all container nodes,
* specifically, array and object nodes.
*/
public abstract class ContainerNode
extends BaseJsonNode
{
/**
* We will keep a reference to the Object (usually TreeMapper)
* that can construct instances of nodes to add to this container
* node.
*/
JsonNodeFactory _nodeFactory;
protected ContainerNode(JsonNodeFactory nc)
{
_nodeFactory = nc;
}
@Override
public boolean isContainerNode() { return true; }
@Override
public abstract JsonToken asToken();
@Override
public String getValueAsText() { return null; }
/*
////////////////////////////////////////////////////
// Methods reset as abstract to force real implementation
////////////////////////////////////////////////////
*/
public abstract int size();
public abstract JsonNode get(int index);
public abstract JsonNode get(String fieldName);
/*
////////////////////////////////////////////////////
// NodeCreator implementation, just dispatch to
// the real creator
////////////////////////////////////////////////////
*/
public final ArrayNode arrayNode() { return _nodeFactory.arrayNode(); }
public final ObjectNode objectNode() { return _nodeFactory.objectNode(); }
public final NullNode nullNode() { return _nodeFactory.nullNode(); }
public final BooleanNode booleanNode(boolean v) { return _nodeFactory.booleanNode(v); }
public final NumericNode numberNode(byte v) { return _nodeFactory.numberNode(v); }
public final NumericNode numberNode(short v) { return _nodeFactory.numberNode(v); }
public final NumericNode numberNode(int v) { return _nodeFactory.numberNode(v); }
public final NumericNode numberNode(long v) { return _nodeFactory.numberNode(v); }
public final NumericNode numberNode(float v) { return _nodeFactory.numberNode(v); }
public final NumericNode numberNode(double v) { return _nodeFactory.numberNode(v); }
public final NumericNode numberNode(BigDecimal v) { return (_nodeFactory.numberNode(v)); }
public final TextNode textNode(String text) { return _nodeFactory.textNode(text); }
public final BinaryNode binaryNode(byte[] data) { return _nodeFactory.binaryNode(data); }
public final BinaryNode binaryNode(byte[] data, int offset, int length) { return _nodeFactory.binaryNode(data, offset, length); }
public final POJONode POJONode(Object pojo) { return _nodeFactory.POJONode(pojo); }
/*
////////////////////////////////////////////////////
// Common mutators
////////////////////////////////////////////////////
*/
/**
* Method for removing all children container has (if any)
*
* @return Container node itself (to allow method call chaining)
*
* @since 1.3
*/
public abstract ContainerNode removeAll();
/*
////////////////////////////////////////////////////
// Helper classes
////////////////////////////////////////////////////
*/
protected static class NoNodesIterator
implements Iterator
{
final static NoNodesIterator instance = new NoNodesIterator();
private NoNodesIterator() { }
public static NoNodesIterator instance() { return instance; }
public boolean hasNext() { return false; }
public JsonNode next() { throw new NoSuchElementException(); }
public void remove() {
// could as well throw IllegalOperationException?
throw new IllegalStateException();
}
}
protected static class NoStringsIterator
implements Iterator
{
final static NoStringsIterator instance = new NoStringsIterator();
private NoStringsIterator() { }
public static NoStringsIterator instance() { return instance; }
public boolean hasNext() { return false; }
public String next() { throw new NoSuchElementException(); }
public void remove() {
// could as well throw IllegalOperationException?
throw new IllegalStateException();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy